将元素名称更改为其属性之一的名称-XSLT/XML
使用XSLT,我希望将XML元素名更改为其一个属性的(该元素将只包含一个属性),并删除该属性 我有一个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>
<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>