1

要素が特定の子を持つ必要があることがわかっている XML スキーマがありますが、その子が存在する深さはわかりません。次の XML の例を見てください。

<node id="top">
   <node id="inner">
     <event/>
   </node>
</node>

<node id="top">
   <event/>
</node>

私が持っている唯一の要件は、要素が<event>その要素の子孫でなければならないということ<node id="top">ですが、それがどの深さで発生するかはわかりません。言い換えれば、<node id="inner">トップ<node id="top">と要素の間に任意の数の要素が存在する可能性があり<event>ます。上記の例では、それぞれがスキーマ内で有効です。私の試みた解決策は次のとおりです。

<xs:element name="node">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="node" minOccurs="0">
                <xs:complexType>
                     <xs:sequence>
                        <xs:element name="event"/>
                     </xs:sequence>
                   <xs:attribute name="id" fixed="inner"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:attribute name="id" fixed="top"/>
</xs:element>

<node>しかし、予想通り、これは要素の後に発生する可能性のある要素の多くの「深さ」を考慮していません<node id="top">

4

1 に答える 1

0

これは答えられています!以下のようなものを試してください

<?xml version="1.0"?> 
<xs:schema targetNamespace="http://test"
  elementFormDefault="qualified" attributeFormDefault="unqualified"
  xmlns:test="http://test"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="nodes">   
      <xs:complexType> 
           <xs:sequence minOccurs="0" maxOccurs="unbounded">
                   <xs:element name="node"  type="test:nodeType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
 </xs:complexType> 
  </xs:element>

<xs:complexType name="nodeType">  
                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                           <xs:element name="event" minOccurs="0"/>
                           <xs:element name="node" type="test:nodeType" minOccurs="0">

</xs:schema>
于 2013-03-07T02:27:18.560 に答える