0

次の XML を許可する XSD スキーマを作成したいと考えています。要素の属性以外はすべて揃っていると思います<subsegent>。誰かがサンプル XSD を提供できますか? 私が試したことはすべてエラーになります。

<Segment>
    <Subsegment target="all">This is test 1</Subsegment>
    <Subsegment target="some">This is test 2</Subsegment>
</Segment>

アップデート

これが私が試したXSDの1つです。シーケンス内の要素に属性を持たせたい。「'http://www.w3.org/2001/XMLSchema:attribute' 要素は、このコンテキストではサポートされていません。」というエラーが表示されます。私のツールから。

ありがとう

<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<xsd:complexType name="Segment">
    <xsd:sequence>
        <xsd:element name="Subsegment" minOccurs="1" maxOccurs="unbounded" type="xsd:string">
            <xsd:attribute name="target" type="xsd:string" use="required" />
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>
4

1 に答える 1

3

スキーマ....

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xsd:element name="Segment">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Subsegment" minOccurs="1" maxOccurs="unbounded" type="SubsegmentType"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="SubsegmentType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="target" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

</xsd:schema>

そして、xmllint を使用した結果....

xmllint testfile.xml --schema Subsegment.xsd
<?xml version="1.0" encoding="UTF-8"?>
<Segment>
    <Subsegment target="all">This is test 1</Subsegment>
    <Subsegment target="some">This is test 2</Subsegment>
</Segment>
testfile.xml validates

確認するためにいくつかのエラーを追加しましょう...

指定されていない要素の使用

xmllint badtestfile.xml --schema Subsegment.xsd
<?xml version="1.0" encoding="UTF-8"?>
<Segment>
    <Something-Else/>
    <Subsegment target="all">This is test 1</Subsegment>
    <Subsegment target="some">This is test 2</Subsegment>
</Segment>
badtestfile.xml:3: element Something-Else: Schemas validity error : Element 'Something-Else': This element is not expected. Expected is ( Subsegment ).
badtestfile.xml fails to validate

無効な属性の使用

xmllint badtestfile.xml --schema Subsegment.xsd
<?xml version="1.0" encoding="UTF-8"?>
<Segment>
    <Subsegment mytarget="all">This is test 1</Subsegment>
    <Subsegment target="some">This is test 2</Subsegment>
</Segment>
badtestfile.xml:3: element Subsegment: Schemas validity error : Element 'Subsegment', attribute 'mytarget': The attribute 'mytarget' is not allowed.
badtestfile.xml fails to validate
于 2012-04-26T14:15:08.153 に答える