假设我有一个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>
不起作用(出于显而易见的原因),但至少打印出第一个关键字!
建议?谢谢!
答案 0 :(得分:9)
我建议在这里避免使用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>
答案 1 :(得分:5)
<ul>
<xsl:for-each select="keywords/keyword">
<li><xsl:value-of select="text()"/></li>
</xsl:for-each>
</ul>
使用text()可以获得关键字节点
中的文本