XPath测试不同路径相对于彼此的属性

时间:2016-07-12 14:10:21

标签: xslt xpath xslt-1.0

我有这些XML文件:

include_paths.xml

<includes>
    <include name="foo" path="path/to/foo">
    <include name="bar" path="path/to/bar">
</includes>

main.xml中

<model>
    <include file="foo">
    <include file="bar">
</model>

XSLT样式表(sheet.xslt)

<xsl:param name="include_paths"/>
<xsl:template match="/">
    <ul>
        <xsl:apply-templates select="//include"/>
    </ul>
</xsl:template>

<xsl:template match="include">
  <li><a href="#{document($include_paths)/includes/include[@name = @file]/@name}"><xsl:value-of select="@file"/></a></li>
</xsl:template>

我用

运行转换

xsltproc --stringparam include_paths include_paths.xml sheet.xslt main.xml

这段代码应该做的是我首先给脚本一个参数,该参数包含include_paths.xml的文件路径,它定义了一些包含路径。此参数全局声明,并在&#34; include&#34;中使用。模板。在遍历来自main.xml的包含时,我想在<a>标记中添加链接到名称在不同XML文件的include标记中匹配的路径。

因此,例如,我希望<li>项以<include> main.xml@file=foopath/to/fooinclude_paths.xml的{​​{1}}路径<ul> <li><a href="path/to/foo">foo</a></li> <li><a href="path/to/bar">bar</a></li> </ul> 一致来自@name。这将产生以下预期结果:

@file

我认为我的问题是XPath表达式中的命名空间(作用域?),我无法区分document(...)$include_paths标记。我的猜测是include_paths.xml函数的范围是@file变量,因此是SWT.NORMAL SWT.ERROR SWT.PAUSED 文件,但我的问题是我如何引用AntiForgeryToken属性XPath表达式。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

VTK中使用current()