内容模型不允许任何字符数据 - XSD

问题描述:

尝试验证小的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

最后我找到了解决方案,您的评论让我更好地理解它。 –

问题解决:

<?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>