假设我有一个包含以下内容的XML文档:
<keywords>
<keyword>test</keyword>
<keyword>test2</keyword>
<keyword>test3</keyword>
<keyword>test4</keyword>
</keywords>
Run Code Online (Sandbox Code Playgroud)
我想使用XSLT在HTML中打印出来,如下所示:
<ul>
<li>test</li>
<li>test2</li>
<li>test3</li>
<li>test4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我的XSLT会是什么样子?我试过这个:
<ul>
<xsl:for-each select="keywords/keyword">
<li><xsl:value-of select="keyword"/></li>
</xsl:for-each>
</ul>
Run Code Online (Sandbox Code Playgroud)
但是这不会打印出关键字值,只是一个空白项.
<ul>
<xsl:for-each select="keywords">
<li><xsl:value-of select="keyword"/></li>
</xsl:for-each>
</ul>
Run Code Online (Sandbox Code Playgroud)
不起作用(出于显而易见的原因),但至少打印出第一个关键字!
建议?谢谢!
我建议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>
Run Code Online (Sandbox Code Playgroud)
<ul>
<xsl:for-each select="keywords/keyword">
<li><xsl:value-of select="text()"/></li>
</xsl:for-each>
</ul>
Run Code Online (Sandbox Code Playgroud)
使用text()可以获得关键字节点内的文本