Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将元素名称更改为其属性之一的名称-XSLT/XML_Xml_Xslt - Fatal编程技术网

将元素名称更改为其属性之一的名称-XSLT/XML

将元素名称更改为其属性之一的名称-XSLT/XML,xml,xslt,Xml,Xslt,使用XSLT,我希望将XML元素名更改为其一个属性的(该元素将只包含一个属性),并删除该属性 我有一个XML文档,如下所示: <EVENTS> <EVENT TYPE="XXXXXX"> <ID>1</ID> <STATUS>COM</STATUS> </EVENT> <EVENT TYPE="XXXXXX"> <ID>2</ID>

使用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>

1.
组件对象模型
2.
行政协调会
3.
组件对象模型
4.
组件对象模型
5.
德尔
我想将文档转换为如下所示:

<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>

1.
组件对象模型
2.
行政协调会
3.
组件对象模型
4.
组件对象模型
5.
德尔

您正在查找
命令,在本例中,您将使用该命令,如中所示

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

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


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

太好了,谢谢你的帮助!为了完整性,我使用了下面的方法,它很有效

<?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>