Subject: Re: [xsl] test on string-length of text() for element with node From: Andrew Welch <andrew.j.welch@xxxxxxxxx> Date: Fri, 5 Aug 2011 15:43:51 +0100 |
Ah sorry it's because in XSLT 1.0 'first item semantics' kick in when you supply a sequence of more than 1 item to a function that expects only one... so doing /text() returns multiple nodes and then all but the first are silently dropped. I haven't written any xslt 1.0 for a long time, but I think you would need to store all the text node in a variable, then get the string length of that: <xsl:variable name="text"> <xsl:for-each select="/path/to/maritalstatus/text()"> <xsl:value-of select="."/> </xsl:for-each> </xsl:variable> <xsl:value-of select="string-length($text)"/> If you want to ignore whitespace only nodes, then use xsl:strip-space on the <maritalstatus> element or do text()[normalize-space(.)] cheers andrew On 5 August 2011 15:27, Bram Reader <bram.listmail@xxxxxxxxx> wrote: > I also thought so, but I don't know why its not working. > > If 'textstring' is placed direct after the starttag <maritalstatus>, > followed by the child elements it works. > > But in this case it doesn't work > > Regards, > Boudewijn > > 2011/8/5 Andrew Welch <andrew.j.welch@xxxxxxxxx>: >> On 5 August 2011 15:06, Bram Reader <bram.listmail@xxxxxxxxx> wrote: >>> Hello, >>> >>> Probably it's not difficult, but I'm struggling with the following >>> issue (maybe it's because it's Friday afternoon) >>> >>> From an xml node set, I need to select the string-length of an >>> elements content without its child elements. >>> >>> xml node set >>> >>> <maritalstatus> >>> <cs:info xmlns:cs="http://cs.nl/cs" id="6"> >>> <codeList>maritalstatus</codeList> >>> <instruction id="7">no instruction</instruction> >>> <length>1</length> >>> <minOccurs>0</minOccurs> >>> <pattern>\d*</pattern> >>> </cs:info> >>> <cs:update xmlns:cs="http://cs.nl/cs"> >>> <additionalInfo>test</additionalInfo> >>> <oldData>2</oldData> >>> <newData>5</newData> >>> </cs:update>textstring >>> </maritalstatus> >>> >>> From the element <maritalstatus> the string-length of only >>> 'textstring' must be selected. How do I escape the child elements in >>> the xsl:value-of select. >>> I'm using XSLT 1.0 with xsltproc. >> >> Its just: >> >> maritalstatus/text() >> >> >> -- >> Andrew Welch >> http://andrewjwelch.com > > -- Andrew Welch http://andrewjwelch.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] test on string-length of , Bram Reader | Thread | Re: [xsl] test on string-length of , Hermann Stamm-Wilbra |
Re: [xsl] test on string-length of , Bram Reader | Date | Re: [xsl] test on string-length of , Hermann Stamm-Wilbra |
Month |