У меня есть набор узлов, хранящийся в переменной, как показано ниже
<xsl:variable name="myXML">
<list>
<input name="First" elementName="FirstName" option="one" />
<input name="Second" elementName="SecondName" option="Two" />
<input name="Third" elementName="ThirdName" option="Three" />
<input name="Fourth" elementName="FourthName" option="Four" />
</list>
</xsl:variable>
Мой код ниже возвращает узел и его атрибуты правильно.
Но for-each в приведенном ниже коде повторяется даже после нахождения соответствия, пока не достигнет последнего узла <input>
.
Так что, если у меня большой список со множеством <input>
узлов в моем наборе узлов, это может вызвать проблемы с производительностью.
Мне нужно пересмотреть приведенный ниже код гораздо проще, может быть без для каждого.
<xsl:template match="/">
<xsl:variable name="checkName" select="'Third'" />
<xsl:variable name="getNode">
<xsl:for-each select="$myXML/list/input">
<xsl:if test="./@name=$checkName">
<xsl:copy-of select="." />
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="element" select="$getNode/input/@elementName" />
<xsl:variable name="option" select="$getNode/input/@option" />
<element><xsl:value-of select="$element" /></element>
<option><xsl:value-of select="$option" /></option>
</xsl:template>
Все, что я хотел, - у меня есть входная переменная checkName = "Third", и мне нужно значение атрибутов 'elementName' и 'option' в двух разных переменных, которое соответствует значению в атрибуте name <input>
узел. Пожалуйста, помогите мне с решением, а также я не хочу использовать exslt или любые другие расширения.