我正在尝试编写一些 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 元素的子元素。
最佳答案
您的 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 的命名空间属性包含一个命名空间,并为该信息引入另一个架构。
祝你好运,希望对你有所帮助!
关于c# - 如何在 XML 模式中指定名称但内容不限的子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667546/