2011-08-11 12 views
1

要素AまたはB、またはその両方が必要です。私が選択肢を使用すると、例外がスローされます。要素のコンテンツタイプが要素のみであるため、要素 'A'は文字[children]を持つことができません。 希望の結果を達成する方法。選択肢を使用したXSD検証エラー

 <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="A"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="C"/> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="B"/> 
     </xsd:sequence> 
     </xsd:complexType> 

サンプルXMLは

​​

答えて

3

使用minOccurs="0"、例えば:XMLについては

<xs:element name="A" minOccurs="0"> 
... 
<xs:element name="B" minOccurs="0"/> 

です:

<root> 
    <start> 
     <A> 
      <C>hhg</C> 
     </A> 
    </start> 
    <start> 
     <A> 
      <C>hhg</C> 
     </A> 
     <B>fgeg</B> 
    </start> 
    <start> 
     <B>fergf</B> 
    </start> 
</root> 

適切なXSDは次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element maxOccurs="unbounded" name="start"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element minOccurs="0" name="A"> 
           <xs:complexType> 
            <xs:sequence> 
             <xs:element name="C" type="xs:string" /> 
            </xs:sequence> 
           </xs:complexType> 
          </xs:element> 
          <xs:element minOccurs="0" name="B" type="xs:string" /> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

...酸素でOK検証され、私はminOccurs属性に= "0" を与えた場合でも、私は同じエラーを取得します。要素Aの内部に複雑な型Cがあるので、私はそれを仮定します – freepublicview

+0

@Abhishek、サンプルXMLを提供します。 –

+0

私はサンプルXMLを見やすくするために問題にしました – freepublicview

1
<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:complexType name="test"> 
    <xs:choice> 
     <xs:element name="A"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="C"/> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="B"/> 
    </xs:choice> 
</xs:complexType> 
</xs:schema> 

これは

関連する問題