|
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 |