XSLT文本替换

时间:2012-12-06 14:18:50

标签: xml xslt

我是XSL的新手,我正在寻找一种替换XML格式的方法。 我的源XML是:

<A>
 <key>One</key>
 <string>value1</string>
 <key>Two</key>
 <string>value2</string>
 <key>Three</key>
 <string>value3</string>
</A>

我想要的是只替换其中一个元素。 结果应该是:

<A>
 <key>One</key>
 <string>value1</string>  
 <key>Two</key>
 <string>xxx</string>  <---- change this (for key Two)
 <key>Three</key>
 <string>value3</string>
</A>

如何创建xsl样式表来管理它?

提前致谢!

1 个答案:

答案 0 :(得分:1)

这似乎可以解决问题:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="string">
    <xsl:choose>
      <xsl:when test="preceding-sibling::key[position() = 1 and text() = 'Two']">
        <string>replacement</string>
      </xsl:when>
      <xsl:otherwise>
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>  
      </xsl:otherwise>
    </xsl:choose>
    </xsl:template>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>  
    </xsl:template>
</xsl:stylesheet>

关键片段是使用preceding-sibling轴。 All available axes are documented here in the xpath specification