Я хочу создать функцию, которая будет найти слово в строке какКак добавить функцию строки в XPath в саксоне?
word(@class, 'items')
, который будет равен
fn:matches(@class, "(^|\s)items(\s|$)")
Я хочу создать функцию, которая будет найти слово в строке какКак добавить функцию строки в XPath в саксоне?
word(@class, 'items')
, который будет равен
fn:matches(@class, "(^|\s)items(\s|$)")
Вот что я нашел для XSLT 2.0
<x:transform version="2.0"
xmlns:x="http://www.w3.org/1999/XSL/Transform"
xmlns:find="http://user.com/namespace">
<x:output method="html"/>
<x:function name="find:word">
<x:param name="src"/>
<x:param name="word"/>
<x:sequence select="matches($src, concat('(^|\s)', $word, '(\s|$)'))"/>
</x:function>
<x:template match="//*[find:word(@class, 'items')]">
<x:copy>
<x:copy-of select="@*"/>
</x:copy>
</x:template>
</x:transform>
Существуют различные способы, вы можете сделать это, но самое простое решение для использовать XQuery, который позволяет определять функции в языке:
declare function local:word($a as xs:string, $b as xs:string) as xs:boolean {
matches($a, concat("(^|\s)", $b, "(\s|$)"))
};