Does XdmNode.NodeName expose whether a CDATA section is wrapped?
Added by Martin Honnen about 3 years ago
While using SaxonCS on an input wrapped around an XmlDocument I find that the XdmNode
representing a text node in the XDM tree has NodeName
property indicating with a QName
of Q{}#cdata-section
that as CDATA section node in the DOM has been wrapped.
Is that something to rely on to identify a CDATA section using an extension function?
I first tried to look at xdmNode.getUnderlyingXmlNode().NodeType
to see whether a CDATA section is wrapped.
Replies (6)
Please register to reply
RE: Does XdmNode.NodeName expose whether a CDATA section is wrapped? - Added by Michael Kay about 3 years ago
This is certainly a bug, since Q{}#cdata-section is not even a valid QName.
Also (and I would need to check if this is actually implemented), XDM does not allow adjacent text nodes, so adjacent text/cdata nodes in the DOM should be wrapped by a single text node in XDM.
RE: Does XdmNode.NodeName expose whether a CDATA section is wrapped? - Added by Martin Honnen about 3 years ago
That (e.g. Q{}#cdata-section
) is the EQName property value in the debugger of the Saxon.Api.QName value is see. For a plain text node it is "Q{}#text"
.
RE: Does XdmNode.NodeName expose whether a CDATA section is wrapped? - Added by Martin Honnen about 3 years ago
Full property list in debugger looks like
- NodeName {#cdata-section} Saxon.Api.QName
ClarkName "#cdata-section" string
EQName "Q{}#cdata-section" string
LocalName "#cdata-section" string
Prefix "" string
Uri "" string
RE: Does XdmNode.NodeName expose whether a CDATA section is wrapped? - Added by Martin Honnen about 3 years ago
I get the same output with Saxon HE 10.6 .NET:
- NodeName {#cdata-section} Saxon.Api.QName
ClarkName "#cdata-section" string
EQName "Q{}#cdata-section" string
LocalName "#cdata-section" string
Prefix "" string
Uri "" string
RE: Does XdmNode.NodeName expose whether a CDATA section is wrapped? - Added by Michael Kay about 3 years ago
Not surprising, the SaxonCS code for wrapping the XmlDocument DOM has hardly changed from the code in Saxon/.NET, except for conversion from Java to C#.
RE: Does XdmNode.NodeName expose whether a CDATA section is wrapped? - Added by Martin Honnen about 3 years ago
This naming convention might have some origin in the W3C DOM: https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095 says
The values of nodeName, nodeValue, and attributes vary according to the node type as follows:
Interface nodeName nodeValue attributes
CDATASection "#cdata-section" same as CharacterData.data, the content of the CDATA Section null
Comment "#comment" same as CharacterData.data, the content of the comment null
Document "#document" null null
DocumentFragment "#document-fragment" null null
DocumentType same as DocumentType.name null null
Element same as Element.tagName null NamedNodeMap
Entity entity name null null
EntityReference name of entity referenced null null
Notation notation name null null
ProcessingInstruction same as ProcessingInstruction.target same as ProcessingInstruction.data null
Text "#text" same as CharacterData.data, the content of the text node null
Please register to reply