Теперь, когда я for-each
через каждый CD и использую value-of
, чтобы вывести
Имя художника, я получаю только первый элемент (несколько понятно).
Но как мне получить ВСЕ элементы с одинаковым именем в for-each
цикл? Я попытался сделать внутренний цикл for-each
, но не сработал.
Мой совет любому новичку в XSLT: , а не до , используйте <xsl:for-each>
- как можно больше . Мне известен только один вариант использования, где необходим <xsl:for-each>
, и это очень редко встречающийся случай (когда необходимо явно изменить текущий документ, чтобы функция key()
использовала индекс, созданный для этого конкретного документ).
Это, вероятно, одно из самых простых возможных решений (без <xsl:for-each>
и без вложенности):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="artist">
<xsl:value-of select="concat(., '
')"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
когда это преобразование применяется к предоставленному документу XML :
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<artist>Bob Dylan2</artist>
<artist>Bob Dylan3</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
</catalog>
желаемый, правильный результат выдается :
Bob Dylan
Bob Dylan2
Bob Dylan3