1

我有以下形式的 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. 将 name="providerID" 替换为 name="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. 用颜色替换“Star TV”,使 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>
    

请帮忙。

4

1 回答 1

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 应该足够清楚。

于 2012-04-11T11:40:07.003 回答