【问题标题】:Change Element name to that of one of its Attribute - XSLT/ XML将元素名称更改为其属性之一的名称 - XSLT/XML
【发布时间】:2014-10-07 09:58:45
【问题描述】:

使用 XSLT 我想将 XML 元素名称 更改为 其属性之一(该元素将仅包含一个属性)以及 删除属性

我有一个如下所示的 XML 文档:

<EVENTS>
  <EVENT TYPE="XXXXXX">
    <ID>1</ID>
    <STATUS>COM</STATUS>
  </EVENT>
  <EVENT TYPE="XXXXXX">
    <ID>2</ID>
    <STATUS>ACC</STATUS>
  </EVENT>
  <EVENT TYPE="YYYYYY">
    <ID>3</ID>
    <STATUS>COM</STATUS>
  </EVENT>
  <EVENT TYPE="ZZZZZZ">
    <ID>4</ID>
    <STATUS>COM</STATUS>
  </EVENT>
  <EVENT TYPE="XXXXXX">
    <ID>5</ID>
    <STATUS>DEL</STATUS>
  </EVENT>
</EVENTS>

我想将文档转换为如下所示:

<EVENTS>
  <XXXXXX>
    <ID>1</ID>
    <STATUS>COM</STATUS>
  </XXXXXX>
  <XXXXXX>
    <ID>2</ID>
    <STATUS>ACC</STATUS>
  </XXXXXX>
  <YYYYYY>
    <ID>3</ID>
    <STATUS>COM</STATUS>
  </YYYYYY>
  <ZZZZZZ>
    <ID>4</ID>
    <STATUS>COM</STATUS>
  <ZZZZZZ>
  <XXXXXX>
    <ID>5</ID>
    <STATUS>DEL</STATUS>
  </XXXXXX>
</EVENTS>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    您正在寻找&lt;xsl:element&gt; 命令,在本例中您将使用该命令

    <xsl:element name="{@TYPE}">
    

    这使用了一个属性值模板,它允许大括号内的字符串表达式。

    然后通过TYPE属性安排不复制。

    【讨论】:

      【解决方案2】:

      太好了,感谢您的帮助!为了完整起见,我使用了以下内容并且它有效....

      <?xml version="1.0" encoding="ISO-8859-1"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="EVENT">
            <xsl:element name="{@TYPE}">
                <xsl:copy-of select="*"/>
           </xsl:element>
        </xsl:template>
      </xsl:stylesheet>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多