我有以下形式的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:
将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>
用“颜色”替换“星空电视”,使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>
请帮忙。
答案 0 :(得分: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。