gpt4 book ai didi

xslt - XSLT在调用模板中传递当前上下文

转载 作者:行者123 更新时间:2023-12-03 11:53:06 25 4
gpt4 key购买 nike

在XSLT 1.0中,将当前上下文节点传递到被调用模板并使该节点成为被调用模板内的上下文节点的最短/最干净/推荐的方法是什么?

如果没有xsl:param并由空的call-template调用的模板可以简单地拾取调用者的上下文节点,那将是很好的选择(但我能想到的最好的是):

    <xsl:call-template name="sub">
<xsl:with-param name="context" select="." />
</xsl:call-template>


<xsl:template name="sub">
<xsl:param name="context" />
<xsl:for-each select="$context">

</xsl:for-each>
</xsl:template>

最佳答案

It would be nice (it would, right?) if a template with no xsl:param and called by an empty call-template would simply pick up the caller's context node.



这正是W3C XSLT 1.0(和2.0)规范中定义xsl:call-template的方式,并由任何兼容的XSLT处理器实现。

这是一个小例子:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="a">
<xsl:call-template name="currentName"/>
</xsl:template>

<xsl:template name="currentName">
Name: <xsl:value-of select="name(.)"/>
</xsl:template>
</xsl:stylesheet>

在以下XML文档上应用此转换时:
<t>
<a/>
</t>

所需的正确结果产生:
  Name: a

关于xslt - XSLT在调用模板中传递当前上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com