xml - 如何使用 XSLT 重命名属性?

标签 xml xslt

我有这样一个 xml:

<person name="foo" gender = "male" />

我想把它改造成

<person id="foo" gender="male" />

有没有办法使用 XSLT 来做到这一点?

  • 我会亲自出很多子节点

  • 我会在这个人身上有更多的属性。

最佳答案

这非常简单:使用身份转换并创建一个转换 name 属性的模板:

<xsl:template match="node()|@*">
  <xsl:copy>
    <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="@name">
   <xsl:attribute name="id">
      <xsl:value-of select="."/>
   </xsl:attribute>
</xsl:template>

这将保留文档中除 name 属性之外的所有内容。如果您只想更改 person 元素的 name 属性,请在模板的 match 属性中放置一个限制性更强的 XPath,例如人/@name

关于xml - 如何使用 XSLT 重命名属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2679443/

相关文章:

Android 应用程序无法在三星设备上运行

html - XML 中的换行符?

python - 从 Odoo 图形 View 中隐藏字段

javascript - Angular 6 中的 xml2js : Can't resolve 'stream' and 'timers'

java - 如何解析命名空间文件位置

C 程序使用 XSLT 从字符串 XML 中过滤类型为 anyURI 的元素

asp.net - 根据参数应用不同的 XSLT 模板

c# - XSD、限制和代码生成

objective-c - 使用 iOS SDK 4.2 的 UIWebView 中的 XSLT

xml - 使用 XSLT 添加/插入子元素