|
[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: document nodes.
Hi Andr\xE9,
This is due to a change in how Saxon implements xsl:message. The change has been introduced in Saxon 10.
Before, xsl:message has output (I believe) the string value or some other serialization of attributes.
Now the items that xsl:message outputs are wrapped in a document node. It works fine for all kinds of nodes but not for attributes.
So you need to use the string value of the attribute explicitly, as you already discovered.
We needed to change a lot of our debugging messages when we upgraded to Saxon 10.
Gerrit
On 13.12.2024 01:44, Andre Cusson akhu01@xxxxxxxxx wrote:
Hi,
There is some Saxon/Oxygen behavior that I do not seem to grasp.
I made a simplified use case to present it.
I have\xA0an xml document (thingtest.xml) that looks somewhat like this:
<?xml version="1.0" encoding="UTF-8"?>
<thing id="main" title="something">
\xA0 \xA0 <thing id="group1">...</thing>
\xA0 \xA0 <thing id="group2">...</thing>
\xA0 \xA0 <thing id="group3">...</thing>
</thing>
and I have a stylesheet\xA0(thingtest.xslt) that reads this file and tries to "message" the value of the title attribute on the main (root) element, like:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform <http://www.w3.org/1999/XSL/Transform>"
\xA0 \xA0 xmlns:xs="http://www.w3.org/2001/XMLSchema <http://www.w3.org/2001/XMLSchema>"
\xA0 \xA0 xmlns:math="http://www.w3.org/2005/xpath-functions/math <http://www.w3.org/2005/xpath-functions/math>"
\xA0 \xA0 exclude-result-prefixes="xs math"
\xA0 \xA0 version="3.0">
\xA0 \xA0 <xsl:template match="/">
\xA0 \xA0 \xA0 \xA0 <xsl:variable name="struct" select="doc('thingtest.xml')/*"/>
\xA0 \xA0 \xA0 \xA0 <xsl:message select="$struct/@title"/>
\xA0 \xA0 </xsl:template>
</xsl:stylesheet>
Now running this produces this error
[Saxon-PE] Error XTDE0420 while evaluating xsl:message at line 10 of file:servercfg/thingtest.xslt: Cannot create an attribute node (title) whose parent is a document node.
Mind you, $struct should not be a document mode as it is the child of a document node.
Where it gets a little exotic for me is when I replace the message instruction by either :
\xA0<xsl:message select="'' || $struct/@title"/>
or
\xA0<xsl:message select="string-join(($struct/@title))"/>
Then, it works fine.
I do not mind adding a null string if I have to, but better understanding\xA0why may better contribute to my happiness.
What am I doing wrong this time ... ;)
Thank you,
Regards.

|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
| RSS 2.0 |
|
| Atom 0.3 |
|
|