Einem einfachen Element mit type="xs:int"
Ich möchte sowohl eine Einschränkung als auch eine Reihe von Attributen hinzufügen. Die einzige Möglichkeit, die ich kenne, ist ein zweistufiger Ansatz:
-
Einen benannten (globalen) Typ deklarieren und alle Einschränkungen in den benannten Typ aufnehmen
-
Verweisen Sie auf den genannten Typ in der
base
eines<xs:extension>
und fügen Sie die Attribute zu dem Erweiterungsknoten hinzu.
Es wäre schön, wenn ich die Deklaration eines globalen benannten Typs vermeiden könnte, da das Schema dynamisch generiert wird und es viel sauberer wäre, alle Einschränkungen lokal festzulegen. Z.B. wie folgt:
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:minInclusive>2</xs:minInclusive>
<xs:attribute name="myAttribute" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
oder im Falle eines String-Typs:
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:enumeration Value="FOO" />
<xs:enumeration Value="BAR" />
<xs:enumeration Value="BAZ" />
<xs:attribute name="myAttribute" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Leider scheint eine solche "kombinierte" Erklärung nicht zulässig zu sein.