我有一个 xsl:template 将一个附加节点插入到我的原始 XML 中。
然后,我想使用以下模板来引用该新节点,以帮助继续解析源文件。
我当前的方法(第二个模板)没有“看到”第一个模板中新插入的节点。我将如何处理这个?
非常感谢。
下面的示例非常简化,以表达我想要实现的目标。
启动 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>
结果 XML 1:
<master>
<node>
<node1>hi</node1>
<node2>bye</node2>
<node3>greetings<node3>
</node>
</master>
第二个模板:
<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>