XSD 用于任何仅包含文本内容的元素?



为此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 中具有值?

最新更新