[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Using Saxon 9 as a Schematron 1.5 back end
- From: Philippe Poulard <philippe.poulard@sophia.inria.fr>
- To: Dave Pawson <davep@dpawson.co.uk>
- Date: Mon, 21 Jan 2008 16:00:49 +0100
Dave Pawson a écrit :
> Michael Kay wrote:
>
>> Having said that, there's a reason Saxon doesn't give you column numbers,
>> which is that the column number reported by the SAX parser is usually not
>> very meaningful.
>
> This problem is repeated sufficiently often I'm surprised other
> alternatives aren't available.
>
> The best offering I've seen was from a Schematron process that generated
> an html version of the source 'highlighting' (as appropriate) the source
> of the problem, given an xpath location. I think it was from David
> Carlisle on the html accessibility guidelines. Rick? Anyone?
>
> Agreed it's likely that the eventual target is likely to be an editor
> on the source file, but a better way of finding it is surely more
> effective than a misleading column number (even worse for non
> pretty-printed XML all on one line).
A useful output is what I called a canonical path, a structure composed
of 2 parts :
-an XPath expression that starts from the root and descend from node to
node by naming them and index them
-a mapping of the prefixes involved in the XPath expressions
example :
/foo:bar/FOO:BAR[3]/@foobar
foo -> http://foo.com
FOO -> urn:FOO:FOO
Other people already suggest to express the same things with another
notation :
/{http://foo.com}:bar/{urn:FOO:FOO}:BAR[3]/@foobar
unfortunately it isn't a correct XPath expression although it is
certainly not so hard to make a specific parser
You can use this canonical path for highlighting the pointed node in the
source document ; just use your favorite XPath parser (most of them can
compile an XPath expression from a string representation and a mapping
of the prefixes)
I've got a class that does the job in RefleX :
http://reflex.gforge.inria.fr/javadoc/org/inria/ns/reflex/xml/CanonicalPath.html
it takes care of the prefixes used if some are remapped in the tree, and
have convenience methods for displaying it or for adding it for example
as an attribute hosted in an element (in this case it will use the ns
URI declared in the element or its ancestor if any)
I use this class for example in XUnit test suites when I have to build
an XML report that localize errors in source files ; I don't use it yet
for highlighting the node in fault, but just for displaying it, as shown
in this example :
http://reflex.gforge.inria.fr/xunit.html#checkingTheErrorReport
(scroll down until the table an click on [Display errors])
--
Cordialement,
///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]