首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动化exslt:node-set?

自动化exslt:node-set?
EN

Stack Overflow用户
提问于 2011-07-27 07:09:57
回答 1查看 422关注 0票数 2

我不确定这是否可能,但尝试设置一些东西,使我在从动态创建的节点块中提取值时不必键入exslt: node -set。我将整个节点集存储在一个变量中,并将其包装在exslt:node-set中,但是当我尝试从中提取时,它为什么不起作用呢?这个是可能的吗?

代码语言:javascript
复制
<xsl:variable name="LANG">
    <xsl:variable name="tmp">
        <xsl:element name="foo">
            <xsl:element name="bar">Hello</xsl:element>
        </xsl:element>
    </xsl:variable>
    <xsl:value-of select="exslt:node-set($tmp)"/>
</xsl:variable>


<!-- Love to be able to do this --> 
<xsl:value-of select="$LANG/foo/bar"/>

<!-- This does work --> 
<xsl:value-of select="exslt:node-set($LANG)/foo/bar"/>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-27 15:04:54

在XSLT1.0中,示例中定义的变量称为结果树片段(RTF),只能使用xsl:copy-of整个片段复制到结果树,或者使用xsl:value-of整个内容复制到结果树。示例

代码语言:javascript
复制
 <xsl:copy-of select="$LANG"/>

如果您希望将该变量视为临时树,则需要node-set()扩展。

在XSLT 1.0中处理静态树片段(如查找表)的常见方法是将它们定义为样式表根元素的子元素(使用自定义名称空间)。然后,您可以使用document()函数来检索所需的值。

注意:如果您使用的是Saxon (v>6.5),您只需将样式表版本设置为RTF1.1RTF,就可以在没有任何节点集扩展的情况下管理

XSLT 1.0

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:empo="http://stackoverflow.com/users/253811/empo">

    <empo:LANG>
        <empo:foo>
            <empo:bar>Hello</empo:bar>
        </empo:foo>
    </empo:LANG>

    <xsl:template match="/">
        <xsl:variable name="LANG" select="document('')/*/empo:LANG"/>
        <xsl:value-of select="$LANG/empo:foo/empo:bar"/>
    </xsl:template>

</xsl:stylesheet>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6837697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档