XML スキーマの anyAttribute 要素
XSD <anyAttribute> 要素
<anyAttribute> 要素を使用すると、スキーマで指定されていない属性を使用して XML ドキュメントを拡張できます。
<anyAttribute> 要素を使用すると、スキーマで指定されていない属性を使用して XML ドキュメントを拡張できます。
以下の例は、「family.xsd」という名前の XML スキーマのフラグメントです。これは、「person」要素の宣言を示しています。 <anyAttribute> 要素を使用すると、「person」要素に任意の数の属性を追加できます:
<xs:element name="person">
<xs:complexType>
<xs:シーケンス>
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/>
</xs:シーケンス>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:シーケンス>
<xs:要素名="firstname" type="xs:string"/>
<xs:要素名="姓" タイプ="xs:文字列"/>
</xs:シーケンス>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
ここで、「person」要素を「gender」属性で拡張したいと思います。この場合、スキーマの作成者が「性別」属性を宣言していなくても、これを行うことができます。
「attribute.xsd」という名前のスキーマ ファイルを参照してください:
<?xml version="1.0"coding="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:属性名="性別">
<xs:simpleType>
<xs:restrictionbase="xs:string">
<xs:pattern value="男性|女性"/>
</xs:制限>
</xs:simpleType>
</xs:attribute>
</xs:schema>
<xs:schema xmlns:xs= " http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified"> ;
<xs:属性名="性別">
<xs:simpleType>
<xs:restrictionbase="xs:string">
<xs:pattern value="男性|女性"/>
</xs:制限>
</xs:simpleType>
</xs:attribute>
</xs:schema>
次の XML (「Myfamily.xml」という名前) は、異なるスキーマ「family.xsd」と「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.comattribute.xsd">
<person 性別="女性">
<名>ヘゲ</名>
<lastname>Refsnes</lastname>
</person>
<person 性別="男性">
<firstname>古い</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
<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.comattribute.xsd">
<person 性別="女性">
<名>ヘゲ</名>
<lastname>Refsnes</lastname>
</person>
<person 性別="男性">
<firstname>古い</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
スキーマ「family.xsd」により「person」要素に属性を追加できるため、上記の XML ファイルは有効です。 。
<any> と <anyAttribute> は両方ともスケーラブルなドキュメントを作成するために使用できます。これらにより、メインの XML スキーマで宣言されていない追加要素をドキュメントに含めることができるようになります。