2010-02-25 36 views
1

XML:XML驗證:元素不能有性格,因爲該類型的內容類型元素的唯一

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <ac code="JL" auto="1"> 
     <fee>10e</fee> 
     <comission> 
      <if country="JP">5%</if> 
      <else>7%</else> 
     </comission> 
    </ac> 
    <ac code="B2" auto="1"> 
     <fee> 
      <if country="RU">35e 50e 50e 80e 15e 10e</if> 
      <else>10e</else> 
     </fee> 
     <comission> 
      <if country="RU">3%</if> 
      <else>5%</else> 
     </comission> 
    </ac> 
</data> 

而且XSD架構

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:element name="data" type="data"/> 
<xs:complexType name="data"> 
    <xs:sequence> 
    <xs:element name="ac" minOccurs="0" maxOccurs="unbounded" type="ac"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="ac"> 
    <xs:sequence> 
    <xs:element name="fee" type="feecomiss"/> 
    <xs:element name="comission" type="feecomiss"/> 
    </xs:sequence> 
    <xs:attribute name="code" type="xs:string"/> 
    <xs:attribute name="auto" type="xs:decimal"/> 
</xs:complexType> 

<xs:complexType name="feecomiss"> 
    <xs:sequence> 
    <xs:element name="if" type="if" minOccurs="0" /> 
    <xs:element name="else" type="xs:string" minOccurs="0"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="if"> 
<xs:simpleContent> 
    <xs:extension base="xs:string"> 
    <xs:attribute name="country" type="xs:string" use="optional"/> 
    </xs:extension> 
</xs:simpleContent> 
</xs:complexType>  

</xs:schema> 

這個方案不是因爲「費用」的第一個元素沒有「if」和「else」元素,所以工作

有什麼想法?對不起,我的英文不好=)

+0

是否要更改實例以匹配架構或匹配實例的架構? – p00ya 2010-02-25 07:42:57

+0

您可以使用[] [http://www.utilities-online.info/xsdvalidation/]等在線驗證程序[在類似問題中](http://stackoverflow.com/q/20926860/) 413020)。你會得到非常準確的信息,哪裏出問題了:'無效。 錯誤 - 第4,23行:org.xml.sax.SAXParseException; lineNumber:4; columnNumber:23; cvc-complex-type.2.3:元素'fee'不能包含字符[子],因爲該類型的內容類型僅爲元素。' – Alberto 2014-07-17 05:22:39

回答

1

我覺得你的方案應該是這樣的:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="data"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element maxOccurs="unbounded" name="ac"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="fee"> 
      <xs:complexType mixed="true"> 
       <xs:sequence minOccurs="0"> 
       <xs:element name="if"> 
        <xs:complexType> 
        <xs:simpleContent> 
         <xs:extension base="xs:string"> 
         <xs:attribute name="country" type="xs:string" use="required" /> 
         </xs:extension> 
        </xs:simpleContent> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="else" type="xs:string" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 

      <xs:element name="comission"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="if"> 
        <xs:complexType> 
        <xs:simpleContent> 
         <xs:extension base="xs:string"> 
         <xs:attribute name="country" type="xs:string" use="required" /> 
         </xs:extension> 
        </xs:simpleContent> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="else" type="xs:string" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
     <xs:attribute name="code" type="xs:string" use="required" /> 
     <xs:attribute name="auto" type="xs:unsignedByte" use="required" /> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 

我產生這個模式defitinition高達題所給你的XML文檔。
希望這有助於
邁拉

+0

XML文檔結構必須在同一個實體中開始和結束。 =( – Isis 2010-02-25 09:04:18

相關問題