更改root xsl上name属性的值

时间:2018-03-01 14:56:17

标签: xml xslt

我有1989

xml

我想重命名根<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://url..." name="nameOfApp"> <test> asd </test> </application> 属性,所以它是这样的:

name

注意它现在是<application xmlns="http://url..." name="newName">

这是我的newName

xsl

第一部分只是身份转换,但后来我尝试更改<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://url..."> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="application/@name"> <xsl:attribute name="name"> <xsl:value-of select="newName"/> </xsl:attribute> </xsl:template> </xsl:stylesheet> 属性值,但它不起作用。

我在SE上尝试了其他来源,但是他们都将name属性称为标签的名称&#34;我有不同的东西。我究竟做错了什么?之后的结果保持不变

1 个答案:

答案 0 :(得分:1)

你非常接近。您的匹配器中只有两个小问题。

  • 您忘记了元素t:名称空间 application
  • 由于您要将静态文字作为值插入,因此您必须引用作为'newName'

这是一个固定版本

<xsl:template match="t:application/@name">
    <xsl:attribute name="name">
        <xsl:value-of select="'newName'"/>
    </xsl:attribute>
</xsl:template>