Xml 在XSD设置中';任何';未显式命名元素的树的一部分

Xml 在XSD设置中';任何';未显式命名元素的树的一部分,xml,xsd,Xml,Xsd,我认为允许任何元素名作为子元素有效是一个好主意 我的想法是这样的 <attributes> <foo> <screenName>Foo thing</screenName> <value>1234</value> </foo> <bar> <screenName>Bar thing</screenName> <value

我认为允许任何元素名作为子元素有效是一个好主意

我的想法是这样的

<attributes> 
  <foo> 
    <screenName>Foo thing</screenName>
    <value>1234</value>
  </foo> 
  <bar> 
    <screenName>Bar thing</screenName>
    <value>abcd</value>
  </bar>
</attributes>
)XSD中的“任意”事物本质上是一个“黑洞”,在这里您可以不受任何限制地抛出任何东西

在我的示例中,如果要为“foo”和“bar”定义XSD模式,那么这是设置限制的唯一方法。由于可能属性的数量(数千个),我不想明确定义所有属性,但我仍然希望有限制

这可以在XSD中定义吗?

XSD 1.0 不能直接表达
xsd:any
表示任何标记,不能进一步约束。必须使用XSD之外的代码进行检查

XSD 1.1 可以通过
xsd:assert
直接表达:

<xs:assert test="every $e in * 
                 satisfies (exists($e/screenName) and exists($e/value))"/>

谢谢。我觉得奇怪的是,您显然不能为这个用例指定“正常”模式。