【发布时间】:2012-04-01 22:34:00
【问题描述】:
我正在开发一个应用程序,如果我需要转换如下所示的 XML 文档:
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE words SYSTEM "words.dtd">
<words>
<word id="word_1">Alfa</word>
<word id="word_2">Beta</word>
<word id="word_3">Gamma</word>
<word id="word_4">Pi</word>
</words>
使用 XSLT 样式表。我希望转换的结果是(在这种情况下)Alfa Beta Gamma Pi,这是我正在使用的 XSL:
<?xml version='1.0' encoding='ISO-8859-1'?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="words/word">
<tr>
<td><xsl:value-of select="@id"/></td>
<td>
<xsl:attribute name="word">
<xsl:value-of select="@id" />
</xsl:attribute>
</td>
</tr>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
结果不是我要找的那个。我必须在 XSLT 中进行哪些更改?
【问题讨论】:
-
您在两个 value-of 参数中都将 id 属性拉了两次。如果要输出文本,则要将值之一更改为 select=word 或 select=。如下所示。
-
如果你正在生成 HTML,那么你不想生成一个名为“word”的属性,因为 HTML 中没有这样的属性,它会被忽略。