単純なXSLT変換を作成するのに問題があります。XMLデータは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<lst name="params">
</lst>
</lst>
<result name="response" numFound="2" start="0">
<doc>
<str name="Race">Elf</str>
<int name="TraderKey">128</int>
<str name="TraderName">TraderLato</str>
<int name="CharacterName">Maleysh</int>
</doc>
<doc>
<str name="Race">Human</str>
<int name="TraderKey">62</int>
<str name="TraderName">TraderSam</str>
<int name="Comments">Farl</int>
</doc>
</result>
</response>
入ってくるXMLのフォーマットを変更することはできず、たくさんのノードがあります。元のXMLをすべてコピーするが、特定のTraderKey値のTraderNameを置き換えるXSLT1.0変換を記述できる必要があります。TraderKeyが128のノードでは、TraderNameを「TraderLatoCarum」に変更します。TraderKeyが62の場合は、TraderNameを「TraderSamsonVero」に変更します。私はこれまでXSLTを作成したことがなく、XMLの経験も限られているため、これがXSLT変換を作成するための私の試みです。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="response/result/doc/int[@name='TraderKey'][. = '128']>
<xsl:value-of select="../TraderName"/>
<xsl:text>Trader Lato Carum</xsl:text>
</xsl:template>
<xsl:template match="response/result/doc/int[@name='TraderKey'][. = '62']>
<xsl:value-of select="../TraderName"/>
<xsl:text>Trader Samson Vero</xsl:text>
</xsl:template>
</xsl:stylesheet>
それはまったく機能せず、私は過去1時間壁に頭をぶつけてきました。これは難しい問題ではないと思いますが、何が間違っているのでしょうか。
ありがとうzoombini