XSD:仅在该元素首次出现后才允许该元素内有不同的元素
XSD: Allowing different elements inside an element only after the first appearance of that element
我有一个关于 XSD 的问题。如果元素已经出现,是否可以在一个元素中允许不同的元素?
假设我有这个结构:
<entry>
<col>
<b></b>
</col>
<col>
<a></a>
<b></b>
</col>
</entry>
<xs:element name="col">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="a" />
<xs:element ref="b" />
</xs:choice>
</xs:complexType>
</xs:element>
目前每次都可以设置<a>
元素。但是我只想允许设置一个 <a>
元素,前提是 <col>
元素之前至少出现过一次。
这可能有帮助:
创建一个变量来计算 <col>
的数量
<xsl:variable name="colCount" select="count(/entry/col)" />
或
<xsl:variable name="colCount" select="count(//col)" />
然后检查<col>
的个数是否至少为1,如果是,则添加<a>
。
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xsl:if test="$colCount > 0">
<xs:element ref="a" />
</xsl:if>
...
我有一个关于 XSD 的问题。如果元素已经出现,是否可以在一个元素中允许不同的元素?
假设我有这个结构:
<entry>
<col>
<b></b>
</col>
<col>
<a></a>
<b></b>
</col>
</entry>
<xs:element name="col">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="a" />
<xs:element ref="b" />
</xs:choice>
</xs:complexType>
</xs:element>
目前每次都可以设置<a>
元素。但是我只想允许设置一个 <a>
元素,前提是 <col>
元素之前至少出现过一次。
这可能有帮助:
创建一个变量来计算 <col>
<xsl:variable name="colCount" select="count(/entry/col)" />
或
<xsl:variable name="colCount" select="count(//col)" />
然后检查<col>
的个数是否至少为1,如果是,则添加<a>
。
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xsl:if test="$colCount > 0">
<xs:element ref="a" />
</xsl:if>
...