Co-Constraints

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)