元のXMLに追加のノードを挿入するxsl:templateがあります。
次に、次のテンプレートを使用して、その新しいノードを参照し、ソースファイルの解析の継続を支援したいと思います。
私の現在のメソッド(2番目のテンプレート)は、最初のテンプレートから新しく挿入されたノードを「認識」しません。これにどのようにアプローチしますか?
どうもありがとう。
以下の例は、私が達成しようとしていることを表現するために非常に単純化されています。
XMLの開始:
<master>
<node>
<node1>hi</node1>
<node2>bye</node2>
</node>
</master>
最初のテンプレート:
<xsl:template match="master/node">
<node>
<xsl:apply-templates/>
<node3>greetings</node3>
</node>
</xsl:template>
結果XML1:
<master>
<node>
<node1>hi</node1>
<node2>bye</node2>
<node3>greetings<node3>
</node>
</master>
2番目のテンプレート:
<xsl:template match="master/node[node3='greetings']">
<node>
<newnode><xsl:value-of select="./node3"/>
</node>
</xsl:template>
期待される結果:
<master>
<node>
<newnode>greetings</newnode>
</node>
</master>
XSL:
<?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" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- first template -->
<xsl:template match="master/node">
<node>
<xsl:apply-templates/>
<node3>greetings</node3>
</node>
</xsl:template>
<!-- second template -->
<xsl:template match="master/node[node3='greetings']">
<node>
<newnode><xsl:value-of select="./node3"/></newnode>
</node>
</xsl:template>