我不太熟悉 XML 模式,但我希望有一个模式允许元素具有任何类型的子元素的名称属性。 例如,元素 myType:
<myType name="type1">
<value>my value</value>
<country>US</country>
</myType>
我尝试过(这显然不起作用):
<xsd:element name="myType" minOccurs="1" maxOccurs="unbounded" type="xsd:anyType">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
最佳答案
此 XML:
<?xml version="1.0" encoding="UTF-8"?>
<myType name="type1">
<value>my value</value>
<country>US</country>
</myType>
根据此 XSD 有效:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="myType">
<xsd:complexType>
<xsd:sequence>
<xsd:any processContents="lax" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
说明:
xsd:any
item 允许任何元素成为myType
的子元素。xsd:any/@processContents="lax"
设置“指示 XML 处理器在可行的基础上验证元素内容:它 将验证可以为其获取架构的元素和属性 信息,但对于无法获取的信息,它不会发出错误信号 任何架构信息。”
关于具有属性和 anyType 子元素的 XML 模式元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464948/