Page 1 of 1

string-length excluding child element content

Posted: Mon Jan 23, 2017 3:56 am
by shudson310
I'm trying to get the string length of an element, but need to exclude the children elements from the count.

Here is the test source:

Code: Select all

<indexterm>12345678901234567890123456789012
<index-see>bar
<indexterm>baz</indexterm>
</index-see>
</indexterm>
I'm trying the following test:

Code: Select all

<sch:assert test="string-length(text()[1]) <= 33" role="warning">
the problem is that the descendant element content seems to be included in the count! The above should be valid, but it is getting flagged. How do I exclude the children from the string-length calculation?

Re: string-length excluding child element content

Posted: Mon Jan 23, 2017 10:03 am
by tavy
Hello,

The XPath expression that you used in the assertion excludes the children elements, but you need to exclude the whitespaces when you count the string length of the text node. For this you can use the "normalize-space()" function, something like:

Code: Select all

<sch:assert test="string-length(normalize-space(text()[1])) <= 33" role="warning">
Best Regards,
Octavian