Xslt 应用模板和上下文项中的doc()
我想将模板应用于由Xslt 应用模板和上下文项中的doc(),xslt,Xslt,我想将模板应用于由doc()加载的文档,该文档工作正常: <xsl:apply-templates select="doc('snippets.xml')//snippet" /> 我想使用当前上下文项的属性选择要处理的: <xsl:apply-templates select="doc('snippets.xml')//snippet[@id=@snippet]" /> 这不起作用,因为显然doc()会更改上下文项。 除了设置如下变量外,是否有其他方法可以从
doc()
加载的文档,该文档工作正常:
<xsl:apply-templates select="doc('snippets.xml')//snippet" />
我想使用当前上下文项的属性选择要处理的
:
<xsl:apply-templates select="doc('snippets.xml')//snippet[@id=@snippet]" />
这不起作用,因为显然doc()会更改上下文项。
除了设置如下变量外,是否有其他方法可以从周围的模板访问上下文:
<xsl:variable name="snippet_id" select="@snippet" />
<xsl:apply-templates select="doc('snippets.xml')//snippet[@id=$snippet_id]" />
在哪里可以找到doc()如何影响上下文的规范?这与
doc()
函数无关,与谓词的求值方式有关:XSLT有一个专门的函数来处理这个问题:
在这里,您可以使用:
<xsl:apply-templates select="doc('snippets.xml')//snippet[@id=current()/@snippet]" />
这与
doc()
函数无关,与谓词的求值方式有关:XSLT有一个专门的函数来处理这个问题:
在这里,您可以使用:
<xsl:apply-templates select="doc('snippets.xml')//snippet[@id=current()/@snippet]" />
我已将您的问题退回到我回答时的问题。你的补充是一个完全不同的问题,应该单独问。你是对的,我会这样做的。谢谢你的帮助。我已经把你的问题退回到我回答的时候。你的补充是一个完全不同的问题,应该单独问。你是对的,我会这样做的。谢谢你的帮助