XMLスキーマで特定のXML属性が必要であると定義することは可能ですか?同時に、将来このリストを拡張できるようにしたいですか?
ここで、XML宣言の次の架空の部分がある場合:
<xs:element name="MyTypeInstance" type="MyType" />
<xs:complexType name="MyType">
<xs:attribute name="FirstAttr" type="xs:int" use="required"/>
<xs:attribute name="SecondAttr" type="xs:string" use="required"/>
</xs:complexType>
次に、次のXMLドキュメントフラグメントがこのスキーマに従って有効です。
<MyType firstAttr="123" secondAttr="abc" />
私が欲しいのは、次のXMLフラグメントを正常に検証できるようにすることです。
<MyType firstAttr="123" secondAttr="abc" ThirdAttr="some new value" />
2つの主な問題は次のとおりです。
- すべてのクライアントにソフトウェアの最新バージョンへの更新を強制したくないため、新しい属性を導入する必要があるたびにXMLスキーマを変更したくありません。また、一部のクライアントはアプリを更新しません。長い間;
anyAttribute
XMLドキュメントを操作する前に検証したいので、XMLスキーマで使用することはできません。要素だけを指定するとanyAttribute
、必要な属性がいくつか欠落していることがわかりません。そして、私が理解している限り、XMLではスキーマ内attribute
のanyAttribute
要素を使用できません(少なくとも、.netXmlDocument
クラスを使用してそのようなスキーマを機能させることはできませんでした)。
elementを使用して明示的にいくつかの属性を指定できると理想的attribute
であるため、これらの属性がXMLドキュメントに存在することは正確にわかりますが、同時に、anyAttribute
elementを使用してXMLドキュメントを拡張することもできます。
どのようにそれを行うことができますか?