[英]Change Element name to that of one of its Attribute - XSLT/ XML
使用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>
您正在寻找<xsl:element>
命令,在这种情况下,您将使用
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.