XSD <anyAttribute>Element


Das <anyAttribute>-Element ermöglicht es uns, XML-Dokumente um Attribute zu erweitern, die nicht im Schema spezifiziert sind!


Das <anyAttribute>-Element ermöglicht es uns, XML-Dokumente um Attribute zu erweitern, die nicht im Schema spezifiziert sind!

Das folgende Beispiel ist ein Fragment aus einem XML-Schema namens "family.xsd". Es zeigt uns eine Deklaration für das Element "person". Durch die Verwendung des <anyAttribute>-Elements können wir dem Element "person" beliebig viele Attribute hinzufügen:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
    <xs:anyAttribute/>
  </xs:complexType>
</xs:element>

Nun möchten wir das Element "person" um ein Attribut "gender" erweitern. In diesem Fall können wir das tun, obwohl der Autor dieses Schemas niemals ein Attribut "gender" deklariert hat.

Betrachten Sie diese Schemadatei namens "attribute.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">

<xs:attribute name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

</xs:schema>

Das folgende XML (namens "Myfamily.xml") verwendet Komponenten aus verschiedenen Schemata, "family.xsd" und "attribute.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>

<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.w3schools.com attribute.xsd">

<person gender="female">
  <firstname>Hege</firstname>
  <lastname>Refsnes</lastname>
</person>

<person gender="male">
  <firstname>Stale</firstname>
  <lastname>Refsnes</lastname>
</person>

</persons>

Die obige XML-Datei ist gültig, weil das Schema "family.xsd" es uns erlaubt, dem Element "person" Attribute hinzuzufügen.

Sowohl <any> als auch <anyAttribute> können verwendet werden, um erweiterbare Dokumente zu erstellen! Sie ermöglichen es Dokumenten, zusätzliche Elemente zu enthalten, die nicht im Haupt-XML-Schema deklariert sind.

Andere Erweiterungen