我正在尝试编写一些XML模式代码,以指定特定元素“abc”可能具有名为“xyz”的子元素,并且该元素可以具有任何属性和任何子元素。
目前我有这个:
<xs:element name="abc">
<xs:complexType>
<xs:sequence>
<xs:element name="xyz">
<xs:complexType>
<xs:sequence>
<xs:any/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
但是当我针对模式验证我的XML时,我得到了关于xyz元素的子元素的验证失败。
答案 0 :(得分:1)
您的xs:any没有附加任何信息,因此它正在寻找架构定义的元素。如果你想对子元素的解释松懈,试试这个:
<xs:element name="abc">
<xs:complexType>
<xs:sequence>
<xs:element name="xyz">
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax" />
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
这应该让你过去验证。如果您对xyz内容的格式良好有任何期望,则可以使用xs:any的namespace属性包含命名空间,并为该信息引入另一个模式。
祝你好运,我希望这会有所帮助!