problem getting xpath function ends-with() to work while contains() works fine

后端 未结 3 1722
隐瞒了意图╮
隐瞒了意图╮ 2020-12-03 17:17

i am trying to get the tags that have an attribute that end with a certain id.
like
i want to get

3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-03 17:42

    The function ends-with() is not defined for XPath 1.0 but only for XPath 2.0 and XQuery.

    You are using .NET. .NET at this date does not implement XPath 2.0, XSLT 2.0 or XQuery.

    One can easily construct an XPath 1.0 expression, the evaluation of which produces the same result as the function ends-with():

    $str2 = substring($str1, string-length($str1)- string-length($str2) +1)

    produces the same boolean result (true() or false()) as:

    ends-with($str1, $str2)

    In your concrete case you just need to substitute the right expressions for $str1 and $str2. They are, accordingly, /myXml/data and 'World'.

    So, the XPath 1.0 expression to use, that is equivalent to the XPath 2.0 expression ends-with(/myXml/data, 'World') is:

    'World' = 
       substring(/myXml/data,
                 string-length(/myXml/data) - string-length('World') +1
                 )
    

提交回复
热议问题