XSD: Разрешить разные элементы внутри элемента только после первого появления этого элемента - PullRequest
0 голосов
/ 09 октября 2019

У меня есть вопрос по поводу 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> появился как минимум один раз раньше.

1 Ответ

0 голосов
/ 09 октября 2019

Это может помочь:

Создать переменную для подсчета числа <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 &gt; 0">
        <xs:element ref="a" />
    </xsl:if>
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...