2017-02-27 76 views
4

嘗試驗證小的xml我收到以下錯誤:內容模型不允許任何字符數據。內容模型不允許任何字符數據 - XSD

這是我的示例XML:

<?xml version="1.0" encoding="UTF-8"?> 
<plats xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="1_e.xsd"> 
    <primer codi='3'>Caldo de verdures</primer> 
    <segon codi='4'>Pollastre al forn</segon> 
    <primer codi='7'>Spaguettis</primer> 
    <segon codi='12'>Llus a la planxa</segon> 
</plats> 

,這是我的xsd:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 

<xs:complexType name="t_primer"> 
    <xs:choice> 
    <xs:element name="primer" type="xs:string" /> 
    </xs:choice> 
    <xs:attribute name="codi" type="xs:string" /> 
</xs:complexType> 

<xs:complexType name="t_segon"> 
    <xs:choice> 
    <xs:element name="segon" type="xs:string" /> 
    </xs:choice> 
    <xs:attribute name="codi" type="xs:string" /> 
</xs:complexType> 

    <xs:element name="plats"> 
    <xs:complexType> 
    <xs:choice> 
     <xs:sequence> 
     <xs:element name="primer" type="t_primer" /> 
     </xs:sequence> 
     <xs:sequence> 
     <xs:element name="segon" type="t_segon" /> 
     </xs:sequence> 
    </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

我無法找到我在哪裏錯了,代碼看起來不錯...

+1

您是n同樣的類型兩次:根據你的模式't_primer'必須包含一個'primer'元素而不是字符串內容。 – Filburt

+1

最後我找到了解決方案,您的評論讓我更好地理解它。 –

回答

4

問題解決:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 

<xs:complexType name="t_primer"> 
    <xs:simpleContent> 
    <xs:extension base="xs:string"> 
     <xs:attribute name="codi" type="xs:string"/> 
    </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

<xs:complexType name="t_segon"> 
    <xs:simpleContent> 
    <xs:extension base="xs:string"> 
     <xs:attribute name="codi" type="xs:string"/> 
    </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

    <xs:element name="plats"> 
    <xs:complexType> 
    <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="primer" type="t_primer" /> 
     <xs:element name="segon" type="t_segon" /> 
    </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema>