如果我有这个,我该怎么办:
<e1>t1<e2>t2</e2></e1>
我希望在XSLT中翻译:
<c1>t1<c2>t2</c2></c1>
我试过了:
<xsl:template match="e1">
<c1>
<xsl:value-of select=".">
<xsl:apply-templates/>
</xsl:value-of>
</c1>
</xsl:template>
<xsl:template match="e2">
<c2>
<xsl:value-of select="."/>
</c2>
</xsl:template>
但我收到一个错误,因为价值应该是空的。
答案 0 :(得分:2)
xsl:value-of
必须是空的。但你内心不需要任何东西。下面的样式表是一个标识转换,有两个例外,即替换e1
和e2
的元素名称。
它在某种意义上是非常通用的,它取代了任何XML文档中的e1
和e2
,并且保持其余部分不受影响。
<强>样式表强>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="e1">
<c1>
<xsl:apply-templates select="@*|node()"/>
</c1>
</xsl:template>
<xsl:template match="e2">
<c2>
<xsl:apply-templates select="@*|node()"/>
</c2>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<?xml version="1.0" encoding="UTF-8"?>
<c1>t1<c2>t2</c2></c1>