XSLT和for-each

时间:2017-10-18 22:39:57

标签: xml xslt

我有一条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>

1 个答案:

答案 0 :(得分:2)

这就是xsl:value-of的作用:它返回节点的字符串值。如果您希望将其保存为树,请使用xsl:copy-of

顺便说一下,XSLT-land中没有任何标签。它只看到节点。在XSLT开始行动之前,XML解析器将标签转换为节点。