13

XSDで以下を使用しようとしています

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" >
<xs:element name="dimension">
  <xs:complexType>
    <xs:attribute name="height" type="xs:int"/>
    <xs:attribute name="width" type="xs:int"/>
    <xs:assert test="@height = @width"/>
  </xs:complexType>
</xs:element>

アサーション/アサーションはXMLスキーマ1.1の一部ですが、1.0ではありません。しかし、私が読んだすべてのことは、名前空間が両方で同じであることを示しています:http ://www.w3.org/2001/XMLSchema

マイナーな問題は、スキーマの作成に使用しているプログラム(Microsoft Visual Studio)が'assert'要素を認識せず、'名前空間(...)の要素complexTypeに無効な子要素'assert'があることです。

主な問題は、xmllintを使用してこのスキーマに対してXMLを実際に検証しようとすると、次のようなエラーがスローされることです。

" element assert: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}complexType': The content is not valid. Expected is (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))

1.1は、1.1の名前空間を指しているにもかかわらず、xmllint / visual studioによって認識されないだけですか?

4

1 に答える 1

21

XSD 1.1スキーマを処理するには、XSD1.1スキーマプロセッサが必要です。Microsoftはこれを提供していません(彼らは新しいW3C XML仕様の実装をあきらめたようです)。私の知る限り、.NETプラットフォームで使用できるXSD1.1プロセッサはSaxonicaのものだけです。

于 2013-03-22T19:47:34.950 に答える