首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSLT包含和文档(‘’)冲突

XSLT包含和文档(‘’)冲突
EN

Stack Overflow用户
提问于 2010-10-20 11:25:07
回答 2查看 1.2K关注 0票数 1

我有两个XSLT文件A.xslt和B.xslt,其中A.xslt包含B.xslt。

A.xslt

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:my="my_namespace">

    <my:data>This is A.xslt</my:data> 

    <xsl:include href="B.xslt"/>

    <xsl:template name="my_template">
        <xsl:value-of select="$remote-data"/>
    </xsl:template>

</xsl:stylesheet>

B.xslt

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:my="my_namespace">

    <xsl:variable name="remote-data"
                   select="document('')/*/my:data" />

</xsl:stylesheet>

当然,在计算my_template时,将输出空行。这是因为B.xslt不包含my:data容器和document('')调用。

我的问题是:如何访问 My :data from B.xslt (使document('')在包含后进行处理)?

任何想法都是值得赞赏的!

更新:现实生活中的我有多个文件,比如A.xslt:A1.xslt,A2.xslt,因此,需要对节点集进行完全相同的计算(如$remote-data定义中的计算),但需要使用不同的参数(存储在my:data中)。

可以说,我可以使用命名模板。但据我所见,这是不可能的,因为模板将返回RTF,我必须返回node-set(),这在XSLT1.0解析器中通常是不可用的。

希望这能澄清我的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-20 12:23:27

使用空路径调用的document()函数将引用代码块“居住”的XSLT的源XML文档。在这种情况下,它是B.xslt

如果要从A.xslt加载/引用XML,请将行更改为:

代码语言:javascript
运行
复制
<xsl:variable name="remote-data"
                   select="document('A.xslt')/*/my:data" />
票数 0
EN

Stack Overflow用户

发布于 2010-10-20 13:08:28

有两种可能性

.1。正如@Mads所建议的,请使用:

代码语言:javascript
运行
复制
<xsl:variable name="remote-data" 
                   select="document('A.xslt')/*/my:data" /> 

.2。在remote-data中移动$A.xslt变量的定义:

代码语言:javascript
运行
复制
<xsl:variable name="remote-data"    
               select="document('')/*/my:data" />

然后可以通过B.xslt的代码访问它,因为全局定义的<xsl:variable>在所有包括的或导入的样式表模块中都是可访问的。

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

https://stackoverflow.com/questions/3977234

复制
相关文章

相似问题

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