XSD 对于仅包含文本内容的任何元素?
XSD for any element with text content only?
为此 XML 创建 XSD:
<items name="home">
<chicken>Foo</chicken>
<nuggets>Bar</nuggets>
<moo>Hello World</moo>
....
</item>
我不知道 items
将包含哪些元素,只是该值应该是一个字符串(没有其他节点)。
只有这样才能使用<any processContents="skip" />
吗?
XSD1.0
您可以使用 <xsd:any processContents="skip"/>
允许 items
下的任何元素,但您将无法进一步强制执行有关这些元素的内容模型的任何内容。 (你不能说那些子元素在它们的内容模型中只能有文本。)
您可以使用 <xsd:any processContents="strict"/>
或 <xsd:any processContents="lax"/>
并仅控制您可以预见在 XSD 中定义的那些子元素的内容模型。
另见
- processContents strict vs lax vs skip for xsd:any
XSD1.1
如果您希望控制未明确声明的子元素的内容模型,您可以将 <xsd:any processContents="skip"/>
与 <xsd:assert test="*[not(*)]"/>
结合使用 items
以坚持items
没有自己的子元素。
另见
- How to force child element to have a value in XSD?
为此 XML 创建 XSD:
<items name="home">
<chicken>Foo</chicken>
<nuggets>Bar</nuggets>
<moo>Hello World</moo>
....
</item>
我不知道 items
将包含哪些元素,只是该值应该是一个字符串(没有其他节点)。
只有这样才能使用<any processContents="skip" />
吗?
XSD1.0
您可以使用 <xsd:any processContents="skip"/>
允许 items
下的任何元素,但您将无法进一步强制执行有关这些元素的内容模型的任何内容。 (你不能说那些子元素在它们的内容模型中只能有文本。)
您可以使用 <xsd:any processContents="strict"/>
或 <xsd:any processContents="lax"/>
并仅控制您可以预见在 XSD 中定义的那些子元素的内容模型。
另见
- processContents strict vs lax vs skip for xsd:any
XSD1.1
如果您希望控制未明确声明的子元素的内容模型,您可以将 <xsd:any processContents="skip"/>
与 <xsd:assert test="*[not(*)]"/>
结合使用 items
以坚持items
没有自己的子元素。
另见
- How to force child element to have a value in XSD?