如何使用XSLT将XML元素名称转换为属性值?
给定XML片段:如何使用XSLT将XML元素名称转换为属性值?,xml,xslt,xpath,Xml,Xslt,Xpath,给定XML片段: <transactions> <tran id="1"> <E8> <datestamp>2012-05-17T15:16:57Z</datestamp> </E8> </tran> </transactions> 2012-05-17T15:16:57Z 如何使用XSLT将元素转换为 编辑:预期输出: <transactions>
<transactions>
<tran id="1">
<E8>
<datestamp>2012-05-17T15:16:57Z</datestamp>
</E8>
</tran>
</transactions>
2012-05-17T15:16:57Z
如何使用XSLT将元素
转换为
编辑:预期输出:
<transactions>
<tran id="1">
<event type="E8">
<datestamp>2012-05-17T15:16:57Z</datestamp>
</event>
</tran>
</transactions>
2012-05-17T15:16:57Z
使用:
输出:
<transactions>
<tran id="1">
<event type="E8">2012-05-17T15:16:57Z</event>
</tran>
</transactions>
2012-05-17T15:16:57Z
此转换:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tran/E8">
<event type="E8">
<xsl:apply-templates/>
</event>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<transactions>
<tran id="1">
<E8>
<datestamp>2012-05-17T15:16:57Z</datestamp>
</E8>
</tran>
</transactions>
<transactions>
<tran id="1">
<event type="E8">
<datestamp>2012-05-17T15:16:57Z</datestamp>
</event>
</tran>
</transactions>
2012-05-17T15:16:57Z
生成所需的正确结果:
<transactions>
<tran id="1">
<E8>
<datestamp>2012-05-17T15:16:57Z</datestamp>
</E8>
</tran>
</transactions>
<transactions>
<tran id="1">
<event type="E8">
<datestamp>2012-05-17T15:16:57Z</datestamp>
</event>
</tran>
</transactions>
2012-05-17T15:16:57Z
谢谢,这回答了我的问题,但这并不是我所期望的结果(请参见编辑)。我仍然需要保留E8元素的所有子元素(可以有多个)。对不起,我没说清楚,我知道了。使用
而不是
@JordanDedels,实际上,使用xsl:copy of
并不是最好的解决方案——如果将来需要转换这些子级,则必须删除此指令。@DimitreNovatchev,这是一个很好的观点。我是XLST的新手,所以谢谢你的提醒。我将使用您的答案中所示的
。