2012-04-11 96 views
1

一個值I在以下形式的XML:XSLT取代成其他的XML屬性,並與一些其他

<?xml version="1.0" encoding="UTF-8"?> 
<query> 
    <queryParams name="accountID">Star TV</queryParams> 
    <queryParams name="assetID">Friends</queryParams> 
    <queryParams name="accountExtRef">Tata</queryParams> 
</query> 

我需要單獨的XSLT到:

  1. 替換名稱=「providerID 「與名字=」 ContentProvider的」,使得 生成的XML變爲:

    <?xml version="1.0" encoding="UTF-8"?> 
    <query> 
        <queryParams name="companyID">Star TV</queryParams> 
        <queryParams name="assetID">Friends</queryParams> 
        <queryParams name="accountExtRef">Tata</queryParams> 
    </query> 
    
  2. 替換 「星空衛視」 使用顏色使得XML成爲

    <?xml version="1.0" encoding="UTF-8"?> 
        <query> 
         <queryParams name="accountID">Colors</queryParams> 
         <queryParams name="assetID">Friends</queryParams> 
         <queryParams name="accountExtRef">Tata</queryParams> 
        </query> 
    

請幫助。

回答

1

您可以通過簡單地向標識轉換添加額外的模板來匹配所需的更改。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="queryParams/@name[. = 'accountID']"> 
     <xsl:attribute name="name">companyID</xsl:attribute> 
    </xsl:template> 

    <xsl:template match="queryParams/text()[. = 'Star TV']"> 
     <xsl:text>Colors</xsl:text> 
    </xsl:template> 
</xsl:stylesheet> 

當適用於您的示例XML,下面是輸出

<query> 
    <queryParams name="companyID">Colors</queryParams> 
    <queryParams name="assetID">Friends</queryParams> 
    <queryParams name="accountExtRef">Tata</queryParams> 
</query> 

在這種情況下,它在一氣呵成方面的變化,但應足夠清楚如何將此分成兩個獨立XSLT如果需要。

+0

就像一個魅力....感謝噸... – user1326379 2012-04-11 11:56:24