7

埋め込み XML スキーマを作成する必要があります。つまり、スキーマがデータと同じ XML 内で定義されている場合です。

正しく行う方法を理解しようとしていますが、これまでのところ、検証に合格するための簡単な例を取得できていません。以下は、インライン スキーマを使用した簡単な XML の例として使用しようとしていたもの
です。 .)

<?xml version="1.0"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="#mySchema">
  <xs:schema id="mySchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="root">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="item" type="xs:string"
                      maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
   </xs:element>
 </xs:schema>
 <item>String 1</item>
 <item>String 2</item>
 <item>String 3</item>
</root>

しかし、その XML を w3.org XML Schema Validator<xs:schema>で実行すると、XML は検証に失敗し、次のエラー メッセージが表示され、子要素として表示されることを期待していませんでした!

cvc-complex-type.1.2.4 ごとに無効: 要素 { http://www.w3.org/2001/XMLSchema }: ここではスキーマは許可されていません (1) 要素 {None} 内: ルート、期待 [{None}:アイテム、$]:

Q: 検証に合格したインライン スキーマ定義を含む単純な XML ドキュメントの例を教えてください。

4

1 に答える 1

6

root子が子として要素を持っている場合xs:schema、スキーマはそのような子を持つことを許可する必要があります。許可する最も簡単な方法は、ワイルドカードを使用することです。

<xs:sequence>
  <xs:any processContents="skip" namespace="http://www.w3.org/2001/XMLSchema"
          minOccurs="0" maxOccurs="1"/>
  <xs:element name="item" type="xs:string"
          maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
于 2013-03-22T09:26:45.607 に答える