xsl-list
[Top] [All Lists]

RE: [xsl] XTRE1160: The fragment identifier {62;n} is not a valid NCName

2008-11-19 11:51:10
Saxon isn't 100% conformant in its handling of fragment identifiers, though
it's a pretty fuzzy area and I'm not sure it really affects the outcome in
this case. The reality is that when URIs are processed using the JAXP
URIResolver concept, Saxon has no knowledge of a media type, so it cannot
interpret a fragment identifier in a way that depends on the media type, and
it therefore treats it as an NCName irrespective of the actual media type.

But the root cause of the problem is that the "#" in the URI, if it is to be
interpreted as an ordinary character, should have been escaped as %23.
Except that in this case, the error is deeper, in that ">" should
have been ">".

Michael Kay 
http://www.saxonica.com/

-----Original Message-----
From: Andrew Welch [mailto:andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com] 
Sent: 19 November 2008 11:54
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XTRE1160: The fragment identifier {62;n} is 
not a valid NCName

Possibly Saxon specific issue here, or maybe something related to the
data: scheme:

I'm calling doc() passing in content from an RSS feed which 
attempts to be tidied using tagsoup, but this particular value:

<xsl:value-of select="doc('data:,More Th&amp;#62;n')"/>

causes this exception:

Error at xsl:value-of on line 30 of rss-to-xhtml-text-plus-image.xsl:
  XTRE1160: The fragment identifier {62;n} is not a valid NCName

net.sf.saxon.trans.XPathException: The fragment identifier 
{62;n} is not a valid NCName
        at net.sf.saxon.functions.Document.makeDoc(Document.java:257)
        at net.sf.saxon.functions.Doc.doc(Doc.java:155)
        at net.sf.saxon.functions.Doc.evaluateItem(Doc.java:129)

it doesn't even make it to the URIResolver

The value is "More Th>n" double escaped - are there any 
restrictions on the "data" scheme, or should this be fine?  
Shouldn't it at least make it to the custom URIResolver?

A correct, single-escaped value works fine:

<xsl:value-of select="doc('data:,More Th&#62;n')"/>

Running that my debug output shows what goes in and out of tagsoup:

** in uri resolver: data:,More Th>n
More Th&gt;n



Any ideas?


--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--