我无法显示第一个匹配值,如找到第一个匹配时,打破每个循环的XSLT
<test>
<p>30</p>
<p>30{1{{23{45<p>
<p>23{34</p>
<p>30{1{98</p>
</test>
<test2>
<p1>text</p1>
</test2>
所以我想循环遍历<test></test>
并找到字符串长度大于2且包含30的<p>
节点的值。我只想要第一个值。 所以我累了下面的代码
<xsl:variable name="var_test">
<xsl:for-each select="*/*/test()>
<xsl:if string-length(p/text())>2 and contains(p/text(),'30'))
<xsl:value-of select="xpath">
</xsl:variable>
问题是var_test始终为null。
如果我直接尝试任何变量
<xsl:for-each select="*/*/test()>
<xsl:if string-length(p/text())>2 and contains(p/text(),'30'))
<xsl:value-of select="xpath">
我得到以下输出
<p>30{1{23{4530{1{98</p>
但是所需的输出是
<p>0{1{23{45</p>
所以我怎么能实现这个?
您的问题中仍然存在相当多的拼写错误,您可能需要解决此问题。 – LarsH 2011-06-07 21:25:40
'xpath'有一些我没有听说过的特殊价值吗?似乎有很多“坏xslt mojo”在这里进行。谨慎处理.... – 2011-06-07 21:28:47
@Abe:很好的问题。不,它不是一个特殊的关键字或任何东西。在这里它将被解释为一个子元素的名称 - 其中没有。我想知道OP的含义。 – LarsH 2011-06-07 21:32:28