我正在尝试将具有my xll的转换应用于我的xml文件。
这是我的xml。
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>
<from>Pepe (Tim@example.com)</from>
<to>Juan (John@example.com)</to>
<datetime>28/02/2011 17:48:23,61</datetime>
<text>¿Hello, Johnn, what's up?</text>
</message>
<message>
<from>Juan (Tim@example.com)</from>
<to>Pepe (john@example.com)</to>
<datetime>28/02/2011 17:54:20,87</datetime>
<text>Here, learning <strong>XML</strong></text>
</message>
</messages>
这是我的xsl代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="messages/message">
<from>
<xsl:value-of select="from"/>
</from>
<to>
<xsl:value-of select="to"/>
</to>
<text>
<xsl:value-of select="text"/>
<strong>
<xsl:value-of select="text/strong"/>
</strong>
</text>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
除非<text><strong></strong></text>
,否则一切都很完美。
当我进行XML转换得到这个错误的结果时,问题出现了:
<text>Here, learning XML<strong>XML</strong></texto>
出于任何原因,我从<strong>
标签中复制了XML,我不知道错误在哪里。
感谢您的建议。
答案 0 :(得分:1)
而且,更好的是:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="messages/message">
<xsl:copy-of select="from"/>
<xsl:copy-of select="to"/>
<xsl:copy-of select="text"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
答案 1 :(得分:0)
xsl:value-of为您提供给定节点的字符串值,即给定节点下的所有文本节点。这就是为什么你看到“XML”文本重复的原因 - 它是<text>
和<strong>
的字符串值的一部分。