在调用XSLT模板时将上下文中的节点作为参数传递


<Data>
<Entry>
<ID>1</ID>
<First_Name>A</First_Name>
<Last_Name>B</Last_Name>
</Entry>
<Entry>
<ID>2</ID>
<First_Name>C</First_Name>
<Last_Name>D</Last_Name>
</Entry>
<Entry>
<ID>3</ID>
<First_Name>E</First_Name>
<Last_Name>F</Last_Name>
</Entry>
</Data>

我有一个示例XML,它松散地描述了我的真实输入XML。我正在尝试将节点<Entry>传递给<xsl:for-each>循环中的模板。

XSLT的以下部分描述了我当前(错误的(XSL代码:

<xsl:template match="Data">
<xsl:for-each select="Entry">
<!-- Some processing goes here which requires this loop -->
<xsl:call-template name="makeRecord">     
<xsl:with-param name="node" select="."/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="makeRecord">
<xsl:param name="node"/>
<xsl:value-of select="$node/First_Name"/>
</xsl:template>

我面临的问题是,所有数据都被输出,但我只希望我指定的子节点的值,即<First_Name>,在每个<Entry>的输出中。我怀疑我将模板参数用作$node/First_Name是错误的。不过,我的XSLT中必须有for循环。有人能建议如何正确引用作为参数传递给模板的节点的子节点值吗?我也尝试了应用模板方法,但同样的问题仍然存在。

提前感谢!

-回答我自己的问题---

我实际代码中的bug似乎与这里提到的不一样。如果有人需要知道如何将节点作为参数传递给模板,请保持这个问题的活力。一定要查看问题的评论,以获得更好的解决方案!

最新更新