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)