У меня проблемы с отображением первого подходящего значения, например
<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>
и найти значение узла <p>
, длина строки которого больше 2и это содержит 30. Я хочу только первое значение.поэтому мне надоел следующий код
<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 всегда нулевой.
если я пытаюсь напрямую без какой-либо переменной
<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>
, так как я могу добиться этого?