Мне нужно написать XSL-преобразование, чтобы можно было определить, входит ли один из параметров узла configuration/selectedOptions
в число вариантов из узла availableOptions
, и вернуть это значение.
Для приведенной ниже структуры XML я должен вернуть A
, потому что она в обеих коллекциях.Всегда будет возвращено только одно значение.
Упрощенная структура XML выглядит следующим образом:
<availableOptions>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
</availableOptions>
<configuration>
<selectedOptions>A,M,P,T,S</selectedOptions>
</configuration>
Что касается XSL, то все, что я написал до сих пор, это:
<xsl:variable name="hasSelectedOption">
<xsl:for-each select="tokenize(//configurations/selectedOptions, ',')">
<xsl:if test=".= 'A'">
<xsl:value-of select="." />
</xsl:if>
</xsl:for-each>
</xsl:variable>
Пока все работает нормально, проходит по configuration/selectedOptions
и возвращает A
, если находит его в коллекции, но я не знаю, как заменить этот жестко закодированный A
всеми значениямиот availableOptions/option
.