我有一条XML消息,如下所示:
<message>
<line number="1"><li>1</li><li>2</li><li>3</li></line>
<line number="2"><li>x</li><li>y</li><li>z</li>
</line>
<line number="3"><li>a</li><li>b</li><li>c</li>
</line>
</message>
我想知道为什么以下XSLT不返回<li>
元素,而只返回<li></li>
内的内容:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="/message/line">
line <xsl:value-of select="position()"/>: <xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
例如:line 1: 123
而不是line 1: <li>1</li><li>2</li><li>3</li>
答案 0 :(得分:2)
这就是xsl:value-of
的作用:它返回节点的字符串值。如果您希望将其保存为树,请使用xsl:copy-of
。
顺便说一下,XSLT-land中没有任何标签。它只看到节点。在XSLT开始行动之前,XML解析器将标签转换为节点。