给出XML片段:
<transactions>
<tran id="1">
<E8>
<datestamp>2012-05-17T15:16:57Z</datestamp>
</E8>
</tran>
</transactions>
如何使用XSLT将元素<E8>
转换为<event type="E8">
?
编辑:预期输出:
<transactions>
<tran id="1">
<event type="E8">
<datestamp>2012-05-17T15:16:57Z</datestamp>
</event>
</tran>
</transactions>
答案 0 :(得分:3)
此转化:
<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>
答案 1 :(得分:2)
使用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output 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/*">
<event type="{name()}">
<xsl:value-of select="."/>
</event>
</xsl:template>
</xsl:stylesheet>
输出:
<transactions>
<tran id="1">
<event type="E8">2012-05-17T15:16:57Z</event>
</tran>
</transactions>