如何使用param值作为xpath用于xslt的每个
在xsl中,我有一个param值,在xslt转换中,该值将被分配到某个where。但我得到的参数是一个字符串,该参数可能包含一个节点a无界[0或更多重复]。如何将param用作任何xpath表达式所使用的任何其他xml内容 以下是我的示例XML: RetreiveData.xml如何使用param值作为xpath用于xslt的每个,xslt,mule,Xslt,Mule,在xsl中,我有一个param值,在xslt转换中,该值将被分配到某个where。但我得到的参数是一个字符串,该参数可能包含一个节点a无界[0或更多重复]。如何将param用作任何xpath表达式所使用的任何其他xml内容 以下是我的示例XML: RetreiveData.xml <soap-content> ------ <return> <!--0 or more repetitions>--> <data> <startdate&
<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>
------
12-12-12
12-12-13
5.
----
这是我的示例文件,它将作为参数发送到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 ?
---
----杜斯特鲁夫
这是一个错误。如果某个节点是param,我如何才能转移到该节点?
我知道这可以通过使用分配给xml文件中路径的变量来实现。但在我的场景中建议使用这种方法
有人能帮我解决这个问题吗
提前感谢,,
Eresh如果您发布的代码是格式良好的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
不是root/return/data/
,而是“root/return/data
,这在大多数语言中是一个语法/类型错误。如果在c或fortran中有字符串“x”,则表达式“x”+1不会将一个字符串添加到变量x中。为此,您需要在运行时提供一个XPath解析器。一些产品对此进行了扩展(并且为XPath 3提供了一个求值函数),但对于简单的情况,上述方法避免了将字符串作为XPath求值的需要。最有可能的错误是由于每个标记的格式不正确。您需要使用select
属性名称:xsl:for each select=“$retrieve/return/data”>
此标记的格式也不正确:
,并且您的param
元素缺少其名称空间前缀。有人投票否决了我在上述代码中提到的错误(谢谢,您摇滚乐了)但是仍然存在错误:param
被声明为“retrieve”并用作“retrieve”。您使用的是XSLT1.0还是XSLT2.0?