XMLスキーマがあり、いくつかのノードでいくつかの拡張をサポートしたいとします。拡張子は、これらのノード内の有効なXMLである必要があります。未知の要素でXMLを拡張する
これは<の>要素で実装されている可能性があります。しかし私のスキーマを使用する私のXMLでは、この拡張機能は他のXSDのノードだけを使用したいと思っています。したがって、実行時に拡張機能のスキーマを指定し、拡張機能スキーマに対してこの拡張機能を検証できるようにします。
<xs:element name="notes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any namespace="http://www.w3.org/1999/xhtml"
minOccurs="0" maxOccurs="unbounded"
processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
は、今私は(初心者I'am)例えば、私のXMLでこのスキーマを、指定したい、このように:
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="myschema.xsd">
<bar>
<extension>
<html namespace="http://www.w3.org/1999/xhtml">
<body>Hello, World!</body>
</html>
</extension>
</bar>
</foo>
次の例では、静的な拡張スキーマを使用しています
これにはどのような方法が最適ですか?理想的には、XMLの拡張ノードで使用するスキーマを自分のXMLにリストしたいと考えています。
ありがとうございます!
==編集、より詳細な説明:==
私は特定のノード内のユーザ定義されたXMLデータをサポートします。私は私の "マスター"スキーマの作成中にこれらの拡張のスキーマを知らない。
私は私のXSDに次のフラグメント指定されている:
<xs:element name="extension">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##other" processContents="strict"/>
</xs:sequence>
</xs:complexType>
</xs:element>
をそして、次のXMLを使用したい:
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd" >
<bar>
<extension>
<html xmlns="http://www.w3.org/1999/xhtml">
<body2>Hello, world!</body2>
</html>
</extension>
</bar>
</foo>
< body2が有効でないため今私は、パーサー・エラーをしたいですかXHTML要素。しかし、XMLSpyパーサはすでに有効でない< html>要素について不平を言っています。
私は間違いを見ることができません! XMLSpyは愚かで、名前空間を切り替えることはできません。しかし... body2はその時点で無効な要素です!あなたが体を取ったらどうしますか? –
私の編集を参照してください。 XMLSpyはhtml要素を拒否する権利があります。スキーマを取得する場所は指定していません。 –