我正在使用以下XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="value" minOccurs="1" maxOccurs="5" type="new_type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="new_type" mixed="true">
<xs:choice>
<xs:element name="function"/>
<xs:element name="something_else"/>
</xs:choice>
</xs:complexType>
</xs:schema>
以下XML文件在线失败:abc
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<value><function/></value>
<value><function/></value>
<value>abc</value>
abc
</root>
尽管XML第11行的complexType new_type为mixed =“true”,但此XML文件的验证失败,因为它需要在xs:choice中指定一个元素。
除了元素之外,我还需要能够指定一个值。
我应该如何更改我的XSD文件?
谢谢,
鲍里斯
答案 0 :(得分:1)
如果您向minOccurs="0"
添加<xsd:choice>
,则会验证:
<xs:complexType name="new_type" mixed="true">
<xs:choice minOccurs="0">
<xs:element name="function"/>
<xs:element name="something_else"/>
</xs:choice>
</xs:complexType>
否则,您需要在中添加一个元素到您可能拥有的任何字符数据。