为此XML创建一个XSD:
<items name="home">
<chicken>Foo</chicken>
<nuggets>Bar</nuggets>
<moo>Hello World</moo>
....
</item>
我不知道items
将包含哪些元素,除了值应该是一个字符串(没有其他节点(。
使用<any processContents="skip" />
的唯一方法吗?
XSD 1.0
您可以使用<xsd:any processContents="skip"/>
来允许items
下的任何元素,但您将无法进一步强制要求有关这些元素的内容模型的任何内容。 (您不能说这些子元素的内容模型中只能包含文本。
您可以使用<xsd:any processContents="strict"/>
或<xsd:any processContents="lax"/>
,并且只能控制那些能够预见在 XSD 中定义的子元素的内容模型。
参见
- 进程内容严格 vs 宽松 vs 跳过 xsd:any
XSD 1.1
如果您希望控制尚未显式声明的子元素的内容模型,则可以将<xsd:any processContents="skip"/>
与<xsd:assert test="*[not(*)]"/>
onitems
结合使用,以坚持items
的子元素没有自己的元素子元素。
参见
XML- 架构中 XML 元素的依赖命名
- 如何强制子元素在 XSD 中具有值?