Re: parse-xml-fragment() Fails in Saxon 9.5 but not in 9.8
Eliot Kimber <ekimber-xb9TSTQ6enFWk0Htik3J/[email protected]> Fri, 15 Jan 2021 17:53:00 -0600
| Newsgroups | gmane.text.xml.saxon.help |
|---|---|
| Message-ID | <[email protected]> |
So no obvious workaround in Saxon 9.5. If the issue is the underlying XMLReader then it's quite possible that the issue is actually how the server I'm using configures Saxon (it definitely provides a server-specific URI resolver for handling server-specific internal URI resolution). That's not something I can easily change. Believe me, if it was in my power I would not be using Saxon 9.5--it causes me no end of pain (than goodness for use-when)--although in a way it's kind of my fault because I was the one who convinced this vendor to integrate a licensed version of Saxon in the first place, it just never occurred to me they would refuse to take the trouble to update the version shipped.... Cheers, E. -- Eliot Kimber http://contrext.com On 1/15/21, 5:36 PM, "Michael Kay" <[email protected]> wrote: There have been a few issues over the years in supporting parse-xml-fragment() because XML parsers don't generally support this functionality "out of the box". The approach we use is to parse a dummy document that refers to the supplied string as an external entity; to achieve that we need to set an entity resolver on the parser, and that's where the problems start coming in. Some implementations of XMLReader, for example one supplied by a CatalogResolver, ignore requests to setEntityResolver(), so we need a parser that we know will respect a call on setEntityResolver(). We can do that in JDK 9 using SAXParserFactory.newDefaultInstance(), but on JDK 8 it's more complex. And of course Saxon 9.5 came out long before any of these things. In some ways it would be easier to wrap the supplied document in a wrapper element, but the edge cases get difficult: the declaration that can appear in an external parsed entity is not the same as the declaration on a document entity. There's a price for not moving forward... Michael Kay Saxonica > On 15 Jan 2021, at 17:03, Eliot Kimber <[email protected]> wrote: > > I realize this is another "help me with a version you never want to think about again question" but I have to ask it. > > Per my recent post on the XSLT list, I'm using saxon:parse-pseudo-attribute() function to get the value of an Oxygen delete PI @content attribute, which contains escaped XML markup. > > Using this code: > > <xsl:variable name="rawMarkup" as="xs:string" select="saxon:parse-pseudo-attribute('content')"/> > <xsl:variable name="deletedMarkup" as="element"> > <deletedMarkup xmlns=""> > <xsl:sequence select="parse-xml-fragment($rawMarkup)"/> > </deletedMarkup> > </xsl:variable> > > <xsl:apply-templates select="$deletedMarkup" mode="handle-deleted-markup"/> > > it works perfectly with Saxon 9.8. > > However, with Saxon 9.5 I get these errors: > > Error reported by XML parser processing > file:/home/kimberw/workspace/nbs/src/xslt/gaonb-pe/preProcessPhase.xsl: Scanner State 24 > not Recognized > Error on line 109 of preProcessPhase.xsl: > FODC0006: First argument to parse-xml-fragment() is not a well-formed and > namespace-well-formed XML fragment. XML parser reported: Error reported by XML parser > > With Saxon 9.5 I can write the value of $rawMarkup to a file and see that it is in fact well-formed XML, but of course there's no way that Oxygen would not put well-formed XML here. > > Given that Saxon 9.5 is required for this application, any idea if there's any workaround for this particular error? > > The requirement is to take the value of the @content attribute and process it as XML in the context of the current transform. Because this transform is run inside a larger system, doing some kind of file-level preprocessing is not really an option, at least not one that could be easily applied. > > Thanks, > > Eliot > -- > Eliot Kimber > http://contrext.com > > > > > > _______________________________________________ > saxon-help mailing list archived at http://saxon.markmail.org/ > [email protected] > https://lists.sourceforge.net/lists/listinfo/saxon-help _______________________________________________ saxon-help mailing list archived at http://saxon.markmail.org/ [email protected] https://lists.sourceforge.net/lists/listinfo/saxon-help _______________________________________________ saxon-help mailing list archived at http://saxon.markmail.org/ [email protected] https://lists.sourceforge.net/lists/listinfo/saxon-help