Xsd xml模式:将出现限制为同级元素序列基数

Xsd xml模式:将出现限制为同级元素序列基数,xsd,Xsd,鉴于: 我相信这定义了一个符号列表和这些符号的组合列表。 符号列表中的每个条目必须具有唯一的名称,组合列表中的每个条目必须具有唯一的组合名称。 我想知道的是,是否有办法将combosList序列中允许出现的次数限制为至少在符号列表中定义的符号数 我想我是在问基数限制是否可以是可变的,如果可以,如何关联它的限制 我还希望使comboList元素(单个组合)只能使用symbolList元素中定义的符号名称 我想我能把最后一部分拉出来。我在任何地方都找不到任何关于将不同元素序列的caridinal

鉴于:


我相信这定义了一个符号列表和这些符号的组合列表。 符号列表中的每个条目必须具有唯一的名称,组合列表中的每个条目必须具有唯一的组合名称。 我想知道的是,是否有办法将combosList序列中允许出现的次数限制为至少在符号列表中定义的符号数

我想我是在问基数限制是否可以是可变的,如果可以,如何关联它的限制

我还希望使comboList元素(单个组合)只能使用symbolList元素中定义的符号名称

我想我能把最后一部分拉出来。我在任何地方都找不到任何关于将不同元素序列的caridinal大小限制为大于或等于一个或另一个的内容


也许这是不可能的。

XSD要求在声明中字面上指定约束的基数;您心目中的动态计算类型不在XSD的设计空间中

在XSD1.1中,您可以向SymbolList和CombosList的一些公共祖先添加一个断言,该断言需要

<xs:complexType name="SymbolsList" final="">
    <xs:sequence>
        <xs:element name="symbol" maxOccurs="unbounded">
            <xs:complexType>
                <xs:attribute name="name" type="xs:string" />
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="ComboList">
    <xs:sequence>
        <xs:element name="combo" maxOccurs="unbounded">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="symbol" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:attribute name="name" type="xs:string" />
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="comboName" type="xs:string" />
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>
<xs:element name="symbolsList" type="SymbolsList">
  <xs:unique name="uniqueSymbol">
    <xs:selector xpath="./symbol" />
    <xs:field xpath="@name" />
  </xs:unique>
</xs:element>
<xs:element name="combosList" type="ComboList">
  <xs:unique name="uniqueCombo">
    <xs:selector xpath="./combo" />
    <xs:field xpath="@comboName" />
  </xs:unique>
</xs:element>

XSD1.1由Saxon EE和Xerces J支持(在后一种情况下,您必须查找1.1发行版,或者是我上次查看的版本)。(一个警告:注意Xerces J不支持断言中的所有XPath 2.0,我还没有实际检查XPath XSD要求的符合1.1实现的最小子集是否包含该断言。在这里花费大量时间之前,请进一步调查。)

现在我正在windows中使用LiquidXML工具,以及在linux中编译这些工具的输出。liquidXML允许XSD1.1吗?
count(CombosList/combo) ge count(SymbolsList/symbol)