这是我需要从中生成xslt的xml数据。
<root>
<entry id="1">
<headword>go</headword>
<example>I <hw>go</hw> to school.</example>
</entry>
<entry id="2">
<headword>come</headword>
<example>I <verb>came</verb> back home.</example>
</entry>
我想创建一个像这样的HTML:
<html>
<body>
<div class="entry" id="1">
<span class="headword">go</span>
<span class="example">I <span class="hw">go</span> to school.</span>
</div>
<div class="entry" id="2">
<span class="headword">comeo</span>
<span class="example">I <span class="hw">came</span> back home.</span>
</div>
</body>
</html>
这是我的xslt:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="root/entry">
<div class="entry">
<span class="headword">
<xsl:value-of select="headword"/>
</span>
<span class="example">
<xsl:value-of select="example"/>
</span>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我不知道如何转换属性“id”的值和元素“hw”。
答案 0 :(得分:1)
请试一试。我假设您的示例输出中的第二个class="hw"
是一个拼写错误,应该是class="verb"
,因为这是唯一有意义的可能性:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="root/entry" />
</body>
</html>
</xsl:template>
<xsl:template match="entry">
<div class="entry" id="{@id}">
<xsl:apply-templates select="*" mode="entryContents" />
</div>
</xsl:template>
<xsl:template match="*" mode="entryContents">
<span class="{local-name()}">
<xsl:apply-templates select="node()" mode="entryContents" />
</span>
</xsl:template>
</xsl:stylesheet>