有人能告诉我如何在XSD中指定一个元素可以包含任意数量的任意元素吗?例如,如果我有
<person>
<name>Foo</name>
</person>
我想在“<name>
”元素之后允许任何元素。
<person>
<name>Foo</name>
<gender>male</gender>
</person>
<person>
<name>Foo</name>
<address>west of here</address>
</person>
<person>
<name>Foo</name>
<address>west of here</address>
<spooge>something else</spooge>
</person>
也就是说,name元素是必需的,但之后,您可以添加任何类型的任意元素。因此,如果这是描述<person>
元素的XSD元素,那么“<xs:element name='name' .../>
”后面会有什么
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
答案 0 :(得分:4)
您可以使用xsd:any
:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:any processContents="skip" namespace="##any"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
要特别注意processContent
的可能值:
答案 1 :(得分:0)
我的解决方案是:
<xs:complexType name="dataType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:anyAttribute processContents="skip"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
我的IDE(PHPStorm)运行错误
xs:any
但支持xs:anyAttribute