быстрый xslt для каждого вопроса - PullRequest
0 голосов
/ 13 ноября 2009

Допустим, у меня есть документ XML, который имеет это:

<keywords>
<keyword>test</keyword>
<keyword>test2</keyword>
<keyword>test3</keyword>
<keyword>test4</keyword>
</keywords>

И я хочу использовать XSLT, чтобы распечатать его в HTML следующим образом:

<ul>
<li>test</li>
<li>test2</li>
<li>test3</li>
<li>test4</li>
</ul>

Как бы выглядел мой XSLT? Я попробовал это:

<ul>
<xsl:for-each select="keywords/keyword">
    <li><xsl:value-of select="keyword"/></li>
</xsl:for-each>
</ul>

но это не выводит значение ключевого слова, просто пустой элемент.

<ul>
<xsl:for-each select="keywords">
    <li><xsl:value-of select="keyword"/></li>
</xsl:for-each>
</ul>

не работает (по понятным причинам), но, по крайней мере, печатает первое ключевое слово!

предложения? спасибо!

Ответы [ 2 ]

9 голосов
/ 13 ноября 2009

Я бы посоветовал избегать for-each здесь и делать это с помощью шаблона - это более идиоматично в XSLT, особенно если у вас есть четкое сопоставление один к одному:

<xsl:template match="keyword">
    <li><xsl:value-of select="."/></li>
</xsl:template>

<xsl:template match="keywords">
    <ul><xsl:apply-templates/></ul>
</xsl:template>
5 голосов
/ 13 ноября 2009
<ul>
<xsl:for-each select="keywords/keyword">    
  <li><xsl:value-of select="text()"/></li>
</xsl:for-each>
</ul>

использование text () должно получить текст внутри узла ключевого слова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...