私の意見では、現在の1.0仕様(Michael'sはXSLT 2.0以降が必要です)を使用する最良の方法は、xs:anyワイルドカードの代わりに置換グループの先頭を使用することです。バージョン1.0では、ソフトウェアスタックの可用性に対する幅広い相互運用性が実現します。
代替グループを持つxs:anyとは異なり、ベースタイプでアンカーする必要があります。私はそれを複雑なタイプにすることをお勧めします。これは空のcomplexType定義であるため、余分な手荷物を持ちません。
妥当性検査では、パーサーを、ベースグループではなく置換グループのメンバーを含むスキーマにポイントするだけです。
更新:説明するサンプルXSDを追加します。 SubstitutionGroupExample.xsdのように更新君:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="AType">
<xs:sequence>
<xs:element name="B"/>
<xs:element ref="any" />
</xs:sequence>
</xs:complexType>
<xs:element name="A" type="AType"/>
<xs:complexType name="TAny" abstract="true"/>
<xs:element name="any" type="TAny" abstract="true"/>
</xs:schema>
Extended.xsd:拡張に基づいて
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd/1" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd/1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:base="http://tempuri.org/XMLSchema.xsd">
<xs:import namespace="http://tempuri.org/XMLSchema.xsd" schemaLocation="SubstitutionGroupExample.xsd"/>
<xs:element name="someAny" substitutionGroup="base:any">
<xs:complexType>
<xs:complexContent>
<xs:extension base="base:TAny">
<xs:sequence>
<xs:element name="new"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>
有効なXML(。XSD):私はペトルはを示唆していると思う何
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:ext="http://tempuri.org/XMLSchema.xsd/1">
<B>anyType</B>
<ext:someAny>
<ext:new/>
</ext:someAny>
</A>
ありがとうございました!それを掘り下げるだけで、「任意の」構成物についてより多くのものを取り除くことができます。私が理解していることから、検証されるのは別のスキーマの '新しい'追加要素/コンテンツです。別のスキーマで '大きな'構造全体を検証することは可能でしょうか? – user1330885
私はその質問を理解しているかどうかはわかりません。要素を検証すると、その要素をルートとするサブツリーの妥当性を検証することを意味します。 –