我需要一些帮助。 我有这样的XML:
<params>
<param>
<name>Q1</name>
<value>A1</value>
</param>
<param>
<name>Q99</name>
<value>A99</value>
</param>
<param>
<name>Q55</name>
<value>A55</value>
</param>
</params>
我需要XSLT才能找到 param ,名称等于'Q33'。如果存在,则值应更新为“A33_new”,如果不存在,则应添加下一个:
<param>
<name>Q33</name>
<value>A33_new</value>
</param>
答案 0 :(得分:0)
使用身份识别转换复制所有内容
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
除了静态Q33
参数
<xsl:template match="param[name='Q33']"/>
并添加新的Q33
参数(根据您的要求,确实是否存在于输入中):
<xsl:template match="params">
<xsl:copy>
<xsl:apply-templates/>
<param>
<name>Q33</name>
<value>A33_new</value>
</param>
</xsl:copy>
</xsl:template>
<强>共强>
<?xml version="1.0" encoding="UTF-8"?>
<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="param[name='Q33']"/>
<xsl:template match="params">
<xsl:copy>
<xsl:apply-templates/>
<param>
<name>Q33</name>
<value>A33_new</value>
</param>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>