On Fri, Jan 29, 2010 at 12:48:06PM +0100, Piotr Bański wrote: > Hi Daniel, > > A minor xptr/element()-spec-related point: > > On 2010-01-29 11:45, Daniel Veillard wrote: > > On Fri, Jan 29, 2010 at 12:26:41AM +0100, [email protected] wrote: > >> Hi, > >> > >> I'm using xinclude with xpointer element()-scheme to include an existing > >> element of the same resource at a different location. The following > >> bar.xml gives an example. In cruft-element with ID "c4" I'm including > >> <fnac>a</fnac>. In cruft-element with ID "c5" I'm trying to include > >> <fnac>b</fnac>. In cruft-element "c6" I'm trying to include <fnac>c</fnac> > >> and added therefore a href="bar.xml" to avoid any "Resource Error". I'm > >> doing all this with IDs defined in bar.xsd. Here comes the complete > >> example: > >> > >> <bar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >> xmlns:xi="http://www.w3.org/2001/XInclude" > >> xsi:noNamespaceSchemaLocation="bar.xsd"> > >> <fnorb id="snip"> > >> <cruft id="c1"><fnac>a</fnac></cruft> > >> <cruft id="c2"><fnac>b</fnac></cruft> > >> <cruft id="c3"><fnac>c</fnac></cruft> > >> <cruft id="c4"><xi:include xpointer="element(/1/1/1/1)"/></cruft> > >> <cruft id="c5"><xi:include xpointer="element(c2/1)"/></cruft> > >> <cruft id="c6"><xi:include href="bar.xml" > >> xpointer="element(c3/1)"/></cruft> > >> </fnorb> > >> </bar> > > > > xmllint doesn't do ID ness for XSD based validation as far as I know, > > at least not by default whe XIncluding it so your ID won't be found that > > way ! Use xml:id it was designed exactly for that. > > > > Also your second and 3rd espressions are wrong, element(c2/1) will > > look for an element named c2 not for an element with an ID of c2. > > use id() or @id constructs. > > The element() scheme allows for a shorthand pointer as the first step, > so 'element(c2)' is equivalent to 'xpointer(id(c2))' (and '#element(c2)' > is equivalent to '#c2'). I'm talking about the W3C spec, maybe it's > "wrong" for xmllint, but I seem to recall it working, though I can't > verify that right now.
Ah, right it's element() not xpath() ... yes it does it, but as stated you won't get any IDE from a linked XSD. Use xml:id attribute or the xpath() based xpointer. Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ [email protected] | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
