使用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>
答案 0 :(得分:1)
您正在寻找<xsl:element>
命令,在这种情况下,您可以像
<xsl:element name="{@TYPE}">
这使用属性值模板,该模板允许在大括号内使用字符串表达式。
然后安排不复制TYPE属性。
答案 1 :(得分:0)
非常好,谢谢你的帮助!为了完整性,我使用了以下内容并且它有效....
<?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>