首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为模板规则指定临时文档,而不是初始源文档

为模板规则指定临时文档,而不是初始源文档
EN

Stack Overflow用户
提问于 2018-12-17 17:57:55
回答 1查看 20关注 0票数 0

<xsl:template>的match属性定义此模板规则应用于哪些节点。我认为,匹配的节点是隐式地来自初始源文档。

例如,下面是我的XSLT模板的一部分:

代码语言:javascript
复制
<xsl:mode name="unroll" on-no-match="shallow-copy"/>
<xsl:template match="StructFormat[@repeat]" mode="unroll">
   ...
</xsl:template>
<xsl:variable name="complete-struct">
    <xsl:apply-templates mode="unroll"/>
</xsl:variable>

这个模板处理初始源文件,结果保存在一个变量中。如何将此模板规则应用于document()函数加载的临时文档?我试着这样做,但不起作用:

代码语言:javascript
复制
<xsl:template match="/" mode="unroll">
    <xsl:apply-templates select="document('a.xml')/*"/>
</xsl:template>
<xsl:template match="@*|node()" mode="unroll">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-17 18:20:39

带有全局变量的部分

代码语言:javascript
复制
<xsl:variable name="complete-struct">
    <xsl:apply-templates mode="unroll"/>
</xsl:variable>

构建一个处理全局上下文项(https://www.w3.org/TR/xslt-30/#dt-global-context-item)的子节点的变量

您可以将其更改为

代码语言:javascript
复制
<xsl:variable name="complete-struct">
    <xsl:apply-templates select="doc('a.xml')/node()" mode="unroll"/>
</xsl:variable>

要处理来自另一个文档的节点,或者如果您使用XSLT处理器的API运行它,请检查在哪里/如何根据需要/需要将全局上下文项设置为特定文档(请参见http://saxonica.com/html/documentation/javadoc/net/sf/saxon/s9api/Xslt30Transformer.html#setGlobalContextItem-net.sf.saxon.s9api.XdmItem- for Saxon9.9)。

我认为你试图添加

代码语言:javascript
复制
<xsl:template match="@*|node()" mode="unroll">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

是错误的,您的初始代码有一个声明<xsl:mode name="unroll" on-no-match="shallow-copy"/>,它应该做得很好,如果您想清楚地说明它,您将需要

代码语言:javascript
复制
<xsl:template match="@*|node()" mode="unroll">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" mode="#current"/>
    </xsl:copy>
</xsl:template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53812772

复制
相关文章

相似问题

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