0

我在 xsl 中有一种情况,我有一个参数值,该值将在 xslt 转换中的某个位置分配。但是我将该参数作为 String ,该参数可能包含一个节点 a unbounded[0 or more repeats] 。如何将每个参数中的参数用作任何 xpath 表达式使用的任何其他 xml 内容。

这是我的示例 xmls:RetreiveData.xml

<soap-content>
------
<return>
<!--0 or more repetitions>-->
<data>
<startdate>12-12-12</startdate>
<enddate>12-12-13</enddate>
<nooftrans>5</nooftrans>
</data>
<data>
----
</data>

</soap=content>

这是我的示例文件,它将作为参数发送到 xsl

xsl 文件:

<xsl style>
<param name ="retrieve"></param>
---
<xsl:for-each ="$retreive/return/data">
----do strufff
</xsl:for-each>


This was throwing an error . How can i travese to a node if it is param ?

我知道这可以使用分配给 xml 文件中的路径的变量来完成。但是在我的场景中建议使用该方法。

谁能帮我解决这个问题

提前致谢, 埃雷什

4

1 回答 1

0

如果您发布的代码是格式正确的 XSLT 但猜测您的意思,那么如果 $retrieve 是单个元素名称,您可以这样做

<param name ="retrieve"></param>
---
<xsl:for-each select="*[name()=$retrieve]/return/data">
----do stuff
</xsl:for-each>

请注意,XPath 变量保存值而不是表达式片段。如果$retrieve持有该字符串"root",那么它$retrieve/return/data不是大多数语言中的语法/类型错误。如果您在 c 或 fortran 中有字符串“x”,则表达式“x”+1 不会将变量x 加一。为此,您需要一个在运行时可用的 XPath 解析器。一些产品对此进行了扩展(并且为 XPath 3 提出了一个评估函数)但是对于简单的情况,上述避免了将字符串评估为 XPath 的需要。root/return/data/"root"/return/data

于 2013-01-16T19:50:05.210 回答