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)