是否可以更改给定的XML结构
<Cars>
<Car>Honda</Car>
<Car>Ferrari</Car>
</Cars>使用XLST到
<Cars>
<Honda></Honda>
<Ferrari></Ferrari>
</Cars>我对XSLT略知一二,但我不确定如何创建可变标记。
谢谢大家。我感谢所有三个答案,并对它们投了赞成票。
发布于 2011-08-30 16:39:25
试试这个:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Cars">
<Cars>
<xsl:for-each select="Car">
<xsl:element name="{.}"/>
</xsl:for-each>
</Cars>
</xsl:template>
</xsl:stylesheet>发布于 2011-08-30 16:29:03
您正在寻找xsl:element,其名称在运行时使用大括号进行计算,如下所示:
<xsl:template match="/">
<xsl:for-each select="Cars/Car">
<xsl:element name="{.}"/>
</xsl:for-each>
</xsl:template>发布于 2011-08-30 16:29:36
您可以使用创建具有给定名称的元素。例如,在您的情况下,它将类似于:
<xsl:template match="Car">
<xsl:element name="{text()}"></xsl:element>
</xsl:template>更新:这是一个片段。通常,这是一种很好的转换方法,它只打算修改树中的几个节点。您可以定义copy-template:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>它只是按原样复制整个xml树,然后为特定的元素、属性等添加一些定制的模板,例如上面的"Car“。
https://stackoverflow.com/questions/7240463
复制相似问题