0

質問にタイトルを付ける方法がわかりません。

次の要素を含むXSDがあります

 <xs:element name="abc">
   <xs:complexType>
     <xs:element maxOccurs="unbounded" ref="ele1"/>
   </xs:complexType>
 </xs:element>

 <xs:element name="xyz">
   <xs:complexType>
     <xs:element maxOccurs="unbounded" ref="ele1"/>
   </xs:complexType>
 </xs:element>

 <xs:element name="ele1">
   <xs:complexType>
     <xs:attribute name="ID" type="xs:integer"/>
   </xs:complexType>
 </xs:element>

問題は、要素xyz IDが必須であるのに対し、abcそうではないということです。XSDでこれを指定するにはどうすればよいですか?

4

1 に答える 1

0

IDが「コンテナ」の下で繰り返されるコンテンツの一意の識別子であるとすると、次のようにxyzにxs:key制約を設定できます。

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="abc">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="ele1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="xyz">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="ele1"/>
            </xs:sequence>
        </xs:complexType>
        <xs:key name="PK_xyz">
            <xs:selector xpath="ele1"/>
            <xs:field xpath="@ID"/>
        </xs:key>
    </xs:element>
    <xs:element name="ele1">
        <xs:complexType>
            <xs:attribute name="ID" type="xs:integer"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

次に、IDが欠落しているため無効なXML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ele1 ID="1"/>
    <ele1 />
</xyz>

エラーメッセージ:

Error occurred while loading [], line 5 position 3
The identity constraint 'PK_xyz' validation has failed. Either a key is missing or the existing key has an empty node.
Document3.xml is invalid.

重複しているため無効です(上記の一意性に関する仮定が当てはまらない場合、これは欠点です):

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ele1 ID="1"/>
    <ele1 ID="1"/>
</xyz>

エラー:

Error occurred while loading [], line 5 position 3
There is a duplicate key sequence '1' for the 'PK_xyz' key or unique identity constraint.
Document3.xml is invalid.

作業サンプル:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ele1 ID="1"/>
    <ele1 ID="2"/>
</xyz>
于 2012-05-09T17:14:41.357 に答える