Re: XPath to retrieve the content of each fake comment in an element?

"Martin Honnen [email protected]" <[email protected]> Fri, 19 Feb 2021 20:19:37 -0000
Newsgroups gmane.text.xml.xsl.general.mulberrytech
Organization Liberty Development
Message-ID <[email protected]>
On 19.02.2021 21:17, Roger L Costello [email protected] wrote:
> Hi Folks,
>
> Consider this element:
>
> <style>
>     blah, blah
>     <![CDATA[
>        <!--
>            a,b,c
>        -->
>    ]]>
>    foo, foo
>     <![CDATA[
>        <!--
>            d,e,f
>        -->
>    ]]>
> </style>
>
> The content of the <style> element is this string:
>
>        blah, blah
>        <!--
>            a,b,c
>        -->
>        foo, foo
>        <!--
>            d,e,f
>        -->
>
> Notice that it appears there are two comments, but they are not, they are "fake comments".
>
> I want to get just the content inside the fake comments:
>
>           a,b,c
>           d,e,f
>
> The following XPath expression seems to give the desired results:
>
> for $i in tokenize(., '<!--') return if (contains($i, '-->')) then substring-before($i, '-->') else ()
>
> Is there a better XPath expression -- simpler, more precise, more complete?

XPath 3.1
   style/parse-xml-fragment(.)/comment()/data()
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/3329386
or by email: [email protected]
--~--