0

XSL は初めてで、XML のテキストを置き換える方法を探しています。私のソース XML は次のとおりです。

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

私が欲しいのは、要素の1つだけを置き換えることです。結果は次のようになります。

<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 スタイルシートを作成する方法は?

前もって感謝します!

4

1 に答える 1

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軸の使用です。利用可能なすべての軸は、ここ xpath 仕様 に記載されています

于 2012-12-06T14:34:23.133 に答える