首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何限制xs:包含xs:any的选择?

如何限制xs:包含xs:any的选择?
EN

Stack Overflow用户
提问于 2011-05-16 09:35:41
回答 1查看 743关注 0票数 2

如果我有一个xs:复合类型,该类型包含以下内容:

代码语言:javascript
复制
<xs:choice minOccurs='0' maxOccurs='unbounded'>
   <xs:any/>
</xs:choice>

我理解xs:任何有效的元素,但通常,我不希望我的根元素在任何地方被用作根元素,所以我可以通过说‘除根元素(或任何其他特定的元素)’来阻止吗?

EN

回答 1

Stack Overflow用户

发布于 2011-06-24 13:59:02

我认为一个理想的解决方案是重构模式,以便您有一种类型不包括<xs:any/>,另一种类型带有它的<xs:any/>,也就是说,如果您由于某种原因必须使用if。通常,<xs:any/>是一个非常强大的语句,它将验证抛出窗口,因为它几乎允许任何名称空间中的任何内容,而且您可能需要的是processContents="strict" or processContents="lax"属性,所以:

代码语言:javascript
复制
<xsd:any processContents="strict"/>

这意味着对于任何名称空间,它都必须针对模式进行验证,即使模式不存在,或者(对您的情况可能更好):

只有在架构存在时,才需要验证。

因为您正在为您自己的命名空间定义模式,所以这将起作用--也就是说,如果您试图使用您自己/默认名称空间中的根元素--它将根据该命名空间验证它,并告诉您它是不允许的。

有关更多细节,您可以参考W3C规范

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6015465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档