1
我输入XMLXSLT模板匹配的动态节点
<ns1:TrackingResponse xmlns:ns1="http://sample/response">
<TC10000004SF>
<client_request>
<id>402919</id>
<client_order_id>66967604933444</client_order_id>
<awb_number>TC10000004SF</awb_number>
</client_request>
</TC10000004SF>
<TC10000005SF>
<client_request>
<id>402919</id>
<client_order_id>66967604933444</client_order_id>
<awb_number>TC10000005SF</awb_number>
</client_request>
</TC10000005SF>
我想输出XML成为像
<TrackingResponse>
<AWBNumber>
<client_request>
<id>402919</id>
<client_order_id>66967604933444</client_order_id>
<awb_number>TC10000004SF</awb_number>
</client_request>
</AWBNumber>
<AWBNumber>
<client_request>
<id>402919</id>
<client_order_id>66967604933444</client_order_id>
<awb_number>TC10000005SF</awb_number>
</client_request>
</AWBNumber>
</TrackingResponse>
我们现在已经用下面的XSL
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="*[starts-with(local-name(),'TC')]">
<AWBNumber>
<xsl:apply-templates select="node()"/>
</AWBNumber>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name(.)}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
既然我们是硬编码的SF,我们想用一些ot她从节点取值的方法,然后进行节点的模板匹配和重命名。我猜这个要求需要xslt 2.0或3.0。请帮助我一样。