我需要在从根检索值时根据元素的值重命名元素名称。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dat="http://ws.wso2.org/dataservice" version="1.0">
<xsl:key name="key-by-company_code" match="dat:row" use="dat:company_code" />
<xsl:template match="company_code">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="dat:rows">
<xsl:element name="{local-name()}">
<xsl:for-each select="dat:row[generate-id() = generate-id(key('key-by-company_code', dat:company_code)[1])]">
<xsl:element name="sae">
<xsl:attribute name="filename">
<xsl:value-of select="dat:company_code" />
</xsl:attribute>
<xsl:for-each select="key('key-by-company_code', dat:company_code)">
<xsl:element name="{local-name()}">
<xsl:element name="row">
<xsl:element name="sae_id">
<xsl:value-of select="@sae_id" />
</xsl:element>
<xsl:element name="sae_date">
<xsl:value-of select="@sae_date" />
</xsl:element>
<xsl:if test="'company_code' = local-name()">
<xsl:if test="dat:company_code = '30'">
<xsl:template match="company_code">
<Co30>
<xsl:apply-templates/>
</Co30>
</xsl:template>
</xsl:if>
</xsl:if>
<xsl:element name="payment_type">
<xsl:value-of select="dat:payment_type" />
</xsl:element>
<xsl:element name="concur_pay">
<xsl:variable name="Concur-Pay" select="dat:concur_pay" />
<xsl:choose><xsl:when test="$Concur-Pay = '0'">N</xsl:when><xsl:otherwise>Y</xsl:otherwise></xsl:choose>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
以上是我试图用于要求的 xslt,但它不起作用。我需要根据元素的值重命名元素名称并从不同的元素分配值。例如:- 如果值company_code 是 30 那么输出应该如下
<sae filename="30">
<row>
<sae_id>76</sae_id>
<sae_date>2012-12-07-08:00</sae_date>
<Co30>1286.91</Co30>
<payment_type>CASH</payment_type>
<concur_pay>N</concur_pay>
<total>1286.91</total>
</row>
</sae>
此处元素“total”的值应分配给“Co 30”。类似地,如果 company_code 为 32 或 33 或 36,则应按上述方式发生。
请让我知道如何重命名此元素。