RELAX NG does:
biblio.class-enum.attribute = attribute class { "doi" | "isbn" | "issn" | "libraryofcongress" | "pubnumber" | "uri" }? biblio.class-other.attributes = attribute class { "other" }?, attribute otherclass { xsd:NMTOKEN } biblio.class.attrib = (biblio.class-enum.attribute | biblio.class-other.attributes)