我需要apps
元素或其他一些xsd(我通过<xsd:any>
导入)或两者都定义的其他元素。我使用了choice
,但它抛出了唯一粒子属性异常。
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element name="apps" />
<xsd:any minOccurs="0" namespace="##local" />
</xsd:choice>
</xsd:sequence>
答案 0 :(得分:0)
这不起作用,因为XML处理器不知道您的应用程序属于哪里。 xsd:element或xsd:any。它无法预测。选择另一个名称空间。
答案 1 :(得分:0)
独特粒子归因有助于防止歧义 - 在xsd:any旁边定义了apps元素,app元素是否与特定元素声明相关联是不明确的( xsd:element name =“apps”< / strong>)或使用通配符( xsd:任何)。
您的问题没有给出完整答案的足够详细信息 - 其他非“应用”元素是否完全未指定?例如。它是字面上的任何元素,还是“应用程序”和其他明确定义的选择?如果您已经定义了其他元素,那么将它们添加为指定选项,否则您也可以使用 xsd:any 而无需定义“apps”元素。
答案 2 :(得分:0)
您的架构在XSD 1.1中是合法的,它通过声明与显式元素声明的匹配胜过与通配符的匹配来解决歧义。但是,在XSD 1.0中,如果通配符允许的名称空间包含特定元素的名称空间,则无法在特定元素和通配符之间进行选择。