XML :
<?xml version="1.0" encoding="UTF-8"?>
<data>
<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>
模式:
<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" minOccurs="0" maxOccurs="unbounded" type="if"/>
<xs:element name="else" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="if">
<xs:attribute name="country" type="xs:string" />
</xs:complexType>
</xs:schema>
此方案未验证:(
但是如果我在xml
中的“if”中插入一个元素<if country="RU"><lol>35e 50e 50e 80e 15e 10e</lol></if>
并修复架构
<xs:complexType name="if">
<xs:sequence>
<xs:element name="lol" type="xs:string"/>
</xs:sequence>
<xs:attribute name="country" type="xs:string" />
</xs:complexType>
该代码有效
我该如何解决这个问题?谢谢!!!抱歉英文不好
答案 0 :(得分:1)
您需要在此处使用<xsd:simplecontent>
元素。
<xs:complexType name="if">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="country" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
您可以在XSD tutorial page for text-only elements找到更多信息。基本上错误的是if
没有被定义为能够拥有文本内容,因为它是一个复杂的类型。您可以使用simpleContent
来包含文本。