← Prev in month ← Prev in thread

Re: [xml-dev] How can the content of a leaf element be multiple text nodes?

From
G. Ken Holman <>
To
Roger L Costello <>, "" <>
Date
2022-02-11T15:31:28Z
ID
<>
Thread
Re: [xml-dev] How can the content of a leaf element be multiple text nodes?
Well, there is no need to confuse everyone else.

The specification is quite clear. When you ask for the value of a 
sequence of text nodes, they are concatenated without marking any 
original boundaries. When you ask for the value of a sequence of 
strings, they are joined separated by a single space, and there are 
no marks of any original boundaries. The spec is clear that text 
nodes are treated differently than strings.

What is confusing about that?

As for how many text nodes there are, a "leaf element" is not 
equivalent to a "leaf node". The element can be made up of text, 
comments, and processing instructions as children, depending on the 
syntax you use to mark up that element.

What is confusing about that?

In all of your exclamations, you haven't stated how what you see is 
in any way contrary to what the specifications or training material 
tell you to expect.

Why muddy the waters?

. . . . . Ken

At 2022-02-11 15:12 +0000, Roger L Costello wrote:
>Hi Folks,
>
>Okay, I'm confused.
>
>I thought that a leaf element can have either zero or one text node.
>
>Apparently a leaf element can have 0, 1, 2, 3, 4, 5, 6, ... text nodes!
>
>For example, how many text nodes does this leaf element have?
>
><Test>abc<!-- blah -->def</Test>
>
>Answer: It has two text nodes:
>
>         text()[1] and text()[2]
>
>How do I know this? Well, I executed this XPath:
>
>         Test/text()[1]
>
>which resulted in this output:
>
>         abc
>
>and this XPath:
>
>         Test/text()[2]
>
>resulted in this output:
>
>         def
>
>To confirm that there are indeed two text nodes within the <Test> 
>element, I used XPath to count the number of text nodes:
>
>         count(Test/text())
>
>That produced this output:
>
>         2
>
>In fact, the text node containing "def" *follows* the text node 
>containing "abc", as this XPath shows:
>
>         Test/text()[1]/following::text()
>
>That gave this output:
>
>         def
>
>Interesting!
>
>But the really interesting thing is that if I create an XPath to 
>answer this question: What is the text in the <Test> element?
>
>         Test/text()
>
>Shockingly, I get this output:
>
>         abcdef
>
>Huh???
>
>The previous tests determined that there are two separate text 
>nodes, so how can there now be only one text node?
>
>I am confused.
>
>/Roger
>
>
>
>
>_______________________________________________________________________
>
>XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>to support XML implementation and development. To minimize
>spam in the archives, you must subscribe before posting.
>
>[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>Or unsubscribe: 
>subscribe: 
>List archive: http://lists.xml.org/archives/xml-dev/
>List Guidelines: http://www.oasis-open.org/maillists/guidelines.php


--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/x/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |
Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |
← Prev in month ← Prev in thread