有如下的XML結構:
<response name="test2">
<Status>
<StatusCode>101</StatusCode>
<Message>no</Message>
<test>
<a1>a</a1>
<a2>b</a2>
</test>
<Status>Complete</Status>
</Status>
<UniqueID>testplayer</UniqueID>
<Balance>12.0</Balance>
<Currency>GBP</Currency>
<Country>GB</Country>
<StakeLimit>100</StakeLimit>
<LossLimit>5</LossLimit>
<SessionTimeout>30</SessionTimeout>
</response>
現需要把這個response複製出來,並且把每個element前加一個namespace前綴,如ns, 則有:
<xsl:template name="copyResponse" match="/*">
<xsl:param name="childNodes" select="*"/>
<xsl:for-each select="$childNodes">
<xsl:choose>
<xsl:when test="*">
<xsl:element name="ns:{name()}">
<xsl:call-template name="copyResponse">
<xsl:with-param name="childNodes" select="child::*"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="ns:{name()}"><xsl:value-of select="."/></xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
主要思想:遞歸。