2017-10-18 72 views
2

我有一个像XML消息如下:XSLT和-每个

<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>

回答

2

这就是xsl:value-of所做的:它返回str节点的值。如果你想把它保存为树,使用xsl:copy-of

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

+0

非常感谢 - 这就是我一直在寻找的东西。 – Christian68