| Newsgroups |
gmane.text.xml.xsl.general.mulberrytech |
| Message-ID |
<[email protected]> |
You can construct a sequence of booleans, in which case you should use <xsl:sequence select="true()"/> in place of <xsl:value-of select="1"/>, and then you can use `count($temp_result[.])` and `count($temp_result[not(.)]` to count the number of true and false items respectively.
If you want to construct the variable as a single string, you can use xsl:value-of as I suggested, but then you must declare the variable as="xs:string". But using a sequence of booleans is probably better.
Michael Kay
Saxonica
> On 17 Oct 2020, at 10:04, Mukul Gandhi [email protected] <[email protected]> wrote:
>
> On Sat, Oct 17, 2020 at 1:22 PM Michael Kay [email protected] <mailto:[email protected]> <[email protected] <mailto:[email protected]>> wrote:
> With xsl:analyse-string you would still need a variable, but it could be a simpler variable: for example it might just contain a "1" for a match, and a "0" for a non-match; at the end you then need to count the ones and zeros which you can do with string-length(translate(...)).
>
> With your suggestion, below mentioned is my new XSLT stylesheet,
>
> <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform <http://www.w3.org/1999/XSL/Transform>"
> xmlns:xs="http://www.w3.org/2001/XMLSchema <http://www.w3.org/2001/XMLSchema>"
> exclude-result-prefixes="xs">
>
> <xsl:output method="xml" indent="yes"/>
>
> <xsl:template match="/">
> <xsl:variable name="temp_result" as="xs:boolean*">
> <xsl:analyze-string select="'abhello1cdehello2fghijklhello3hello4mhello5nhello6'"
> regex="hello[1-9]">
> <xsl:matching-substring>
> <xsl:value-of select="1"/>
> </xsl:matching-substring>
> <xsl:non-matching-substring>
> <xsl:value-of select="0"/>
> </xsl:non-matching-substring>
> </xsl:analyze-string>
> </xsl:variable>
> <result>
> <yes count="{count(index-of($temp_result, true()))}"/>
> <no count="{count(index-of($temp_result, false()))}"/>
> </result>
> </xsl:template>
>
> </xsl:stylesheet>
>
> The above stylesheet gives me the desired result.
>
> But the above mentioned XSLT stylesheet, doesn't do exactly what you've suggested.
>
> I would preferably, wish to declare my XSLT variable as follows,
>
> <xsl:variable name="temp_result" as="xs:string">
> <xsl:analyze-string ...
> </xsl:variable>
>
> with an expectation that, content of this new kind of variable would be a string (i.e, an atomic xs:string value) of 1 s & 0 s characters, on which I could do string-length(translate(...)). Is this doable?
>
>
>
> --
> Regards,
> Mukul Gandhi
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by email <>)
--~----------------------------------------------------------------
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]
--~--