我有以下形式的xml(但要大得多......)
<entry>
<lemma>coaster</lemma>
<sense>
<trans>Untersetzer</trans>
</sense>
</entry>
我想通过xsl-transformation获得的是:
<div class="entry">
<div class="lemma>coaster</div>
<div class="sense">
<div class="trans">Untersetzer</div>
</div>
</div>
不那么复杂:使用class attribute =原始元素名称将所有元素转换为div元素。 有人可以给我一个提示,看看合适的XSL应该是什么样的吗?
谢谢!
答案 0 :(得分:3)
你可以这样做(XSLT 1.0):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="*">
<div class="{local-name()}">
<xsl:apply-templates/>
</div>
</xsl:template>
</xsl:stylesheet>
请注意,样式表会跳过遇到的属性。
评论后编辑
如果要保留属性,只需跳过任何class
属性(因为您创建了一个新属性)。例如:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="*">
<div class="{local-name()}">
<xsl:apply-templates select="node()|@*"/>
</div>
</xsl:template>
<xsl:template match="@*">
<xsl:if test="name() != 'class'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>