我需要验证是否存在XML元素的子元素列表,但我还需要允许其中一个子元素成为任何其他元素。
例如,如果XML是这样的:
<fruits>
<item1>banana</item1>
<item2>apple </item2>
<anything>yolo</anything>
</fruits>
使用像这样的XSD:
<xsd:complexType name="fruits">
<xsd:all>
<xsd:element name="item1" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="item2" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:all>
</xsd:complexType>
我希望这个xml文件可以在验证时使用。但是使用我的xsd文件,我收到如下错误:
元素'fruits'具有无效的子元素'nothing'。
你有什么建议吗?
答案 0 :(得分:1)
您可以放弃无序要求并在xs:any
中使用xs:sequence
,或者您可以满足无序要求并在xs:any
元素周围使用固定的包装元素xs:all
1}}。
你无法双管齐下。 XSD与您的期望不一样正确。
答案 1 :(得分:0)
尝试使用any元素。
any元素使作者能够扩展XML文档 模式未指定的元素。
根据文档,您需要使用sequence而不是all,因为any中唯一有效的父元素是choice和sequence。