XSL foreach — получение значения

#xslt #xslt-1.0 #google-search-appliance

#xslt #xslt-1.0 #google-поиск-устройство

Вопрос:

Вот фрагмент XML, который содержится в каждой записи:

 <MT N="usage" V="something"/>
<MT N="usage" V="something else"/>
  

Я пытаюсь отобразить все эти значения V для каждой записи с помощью XSLT, но у меня возникают проблемы с поиском правильного значения.

 <xsl:for-each select="MT[@N = 'usage']/@V">
    <xsl:value-of select="V"/>
    11
</xsl:for-each>
  

Выводится «1111», но значение V не отображается. Как мне это настроить?

Приветствия

Ответ №1:

select=»V», вероятно, не является узлом.

Как насчет

 <xsl:for-each select="MT[@N = 'practice']">
<xsl:value-of select="@V"/>
11
</xsl:for-each>
  

Ответ №2:

 <xsl:for-each select="MT[@N = 'usage']/@V"> 
    <xsl:value-of select="V"/> 
    11 
</xsl:for-each>
  

Приведенное <xsl:value-of> выше пытается отобразить значение элемента V , который является дочерним элементом текущего узла. Однако текущий узел является атрибутом, а атрибуты по определению не имеют дочерних элементов. Это проблема, которая у вас есть.

Решение:

 <xsl:for-each select="MT[@N = 'usage']/@V"> 
    <xsl:value-of select="."/> 
    11 
</xsl:for-each>
  

Теперь <xsl:value-of> выводится строковое значение текущего узла, что, вероятно, и было задумано.