我想在不更改其属性的情况下将 xml 元素“产品”重命名为“项目”,但我不知道该怎么做

Posted

技术标签:

【中文标题】我想在不更改其属性的情况下将 xml 元素“产品”重命名为“项目”,但我不知道该怎么做【英文标题】:I want to rename xml element "product" to "Item" without changing its attributes,but i don't know how to do that 【发布时间】:2021-07-30 21:59:13 【问题描述】:

输入 XML:

<ProductList>
    <Product Action="Manage" ProductID="Item_1">
        <PrimaryInformation Description="Item 1"
            Status="3000" ShortDescription="Item 1" />
    </Product>
    <Product Action="Manage" ProductID="Item_2">
        <PrimaryInformation Description="Item 2"
            Status="3000" ShortDescription="Item 2" />
    </Product>
    <Product Action="Manage" ProductID="Item_3">
        <PrimaryInformation Description="Item 3"
            Status="3000" ShortDescription="Item 3" />
    </Product>
</ProductList>

预期的 XML 输出:

<ProductList >
  <Item Action="Manage" ProductID="Item_1" >
   <PrimaryInformation Description="Item 1" Status="3000" ShortDescription="Item 1" /> 
 </Item> 
 <Item Action="Manage" ProductID="Item_2" >
   <PrimaryInformation Description="Item 2" Status="3000" ShortDescription="Item 2" /> 
 </Item>
  <Item Action="Manage" ProductID="Item_3" > 
  <PrimaryInformation Description="Item 3" Status="3000" ShortDescription="Item 3" />
  </Item>
 </ProductList>

我尝试了这个 XML 模板,它正在工作,但它也删除了该元素中存在的所有属性。

<xsl:template match="Product">
    <xsl:element name="Item">
        <xsl:apply-templates />
    </xsl:element>
</xsl:template>

【问题讨论】:

【参考方案1】:

请尝试以下 XSLT。

它遵循身份转换模式。

XSLT

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/>
   <xsl:strip-space elements="*"/>

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

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

【讨论】:

以上是关于我想在不更改其属性的情况下将 xml 元素“产品”重命名为“项目”,但我不知道该怎么做的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Wordpress 中创建框架以便在不更改 URL 的情况下将文章加载到首页?

如何在不使用界面生成器的情况下将视图与控制器分离

如何在不使用向量的情况下将数组传递给函数?

我想在购物车中添加产品而不用 AJAX 和 Django 刷新页面

如何在不更改 Bundle Identifier 的情况下将 iOS 应用程序提交到 App Store

如何在不采用其中更改的情况下将 git 分支声明为合并?