2011-08-11 116 views
0

我是一个新手,XSL编程。你能帮我解决这个问题吗?

是否有可能结合起来,取出两个XSL的值:变量 例子:

<xsl:variable name="path1" select="//path1"/> 
<xsl:variable name="path2" select="//path2/value"/> 

然后用它们组合起来:

<xsl:value-of select ="$path1/$path2"/> 

我想通过合并来从路径1的值从路径2 结果如果我使用上面的代码,我得到意外的标记$错误

是否有任何其他的选择吗?

+0

显示你的代码。 –

+0

不,这不是正确的方法。更清楚地描述你想要的东西,也许我们可以找到解决方案。 –

+0

@empo:我想很明显他想要的东西。 '// path1'的文本值是一些元素名称(比如'foo'),'// path2/value'的文本值是其他元素名称(比如'bar'),元素下的第二个名称给出的元素的名字应该被发现,即他想要找到'foo/bar'(并获得它的价值)。 –

回答

2

这听起来像你可能希望做

<xsl:value-of select="concat($path1,$path2)" /> 

值得指出的在这里,你实际上并没有存储这些变量的路径,但是这些路径指向的节点。即$path1不含//path1,但无论该节点包含的价值。

如果你其实想文本'//path1//path2/value',那么你就需要与

<xsl:value-of select="path1" select="'//path1'" /> 
<xsl:value-of select="path2" select="'//path2/value'" /> 

定义路径变量(请注意多',表示这是一个文本值,而不是一个XPath)。与上述相同的<xsl:value-of声明将让在这个情况下,你的'//path1//path2/value'输出。

如果您确实需要//path1//path2/value节点的内容,这会变得更加棘手,而且更有可能有更好的方式来做您正在尝试做的任何事情。