いいえ!彼らは同じではありません!
最初のスキーマでは、要素はその下<tuple>
に任意の名前の/の0以上の要素を持つ<any>
ことができます.minOccurs="0"
maxOccurs="Unbounded"
complexType
tuple
processContents="skip"
<any>
例:
<tuple>
<foo>data</foo>
<bar foobarattribute="foobardata">data</bar>
</tuple>
ご覧のとおり、foo
andbar
とその属性foobarattribute
は XSD で定義されていませんが、この XML を有効なものとして許可します。しかし、それは下の属性を許可しません <tuple>
編集:
2 番目のスキーマ:
型を次のように宣言するのと同じです。anyType
<xsd:element name="tuple" type="xs:anyType"/>
つまり、タプルの下に任意の要素と属性を許可します。サンプル XML は次のようになります。
<tuple foo="bar">
<foobar attrb="value">data</foobar>
</tuple>
最初のサンプル XML とは異なり、これにも属性 under があることがわかります<tuple>
。
2 つのサンプル XSD コードのもう 1 つの重要な違いは次のとおりです。最初のコードでは、processContents を「skip」として指定しています。そのため、XML プロセッサは指定された名前空間の要素を検証しようとしません。
2 番目のコードでは、anyType の場合、processContents は「lax」になります。これにより、XML プロセッサは必要な名前空間のスキーマを取得し、要素を検証しようとします。
それが役に立てば幸い..