xinclude all children

M

McSwell

I have an XML file that looks something like this:
------------------------
<?xml ...?>
<!DOCTYPE ...>
<src:fragment id="foo" ...>
<Ph:Item> some stuff </Ph:Item>
<Ph:Item> some more stuff </Ph:Item>
....
<Ph:Item> still more stuff </Ph:Item>
</src:fragment>
----------------------

I want to xinclude all the children of the root element into another
XML file. I've been trying things like
<xi:include href="firstFileName" xpointer="foo/1"/>
However, if(!) I'm understanding correctly, this would only xinclude
the *first* child of the element named 'foo'. Instead, I want to
xinclude *all* the children. I would have thought that this
<xi:include href="firstFileName" xpointer="foo/*"/>
would work, but it generates an error:
XPointer evaluation failed: #foo/*
All the variants of this that I've tried also fail.

How do I xinclude all children of the specified element?

Mike Maxwell
CASL/ U MD
 
P

Philippe Poulard

hi,

McSwell a écrit :
I have an XML file that looks something like this:
------------------------
<?xml ...?>
<!DOCTYPE ...>
<src:fragment id="foo" ...>
<Ph:Item> some stuff </Ph:Item>
<Ph:Item> some more stuff </Ph:Item>
...
<Ph:Item> still more stuff </Ph:Item>
</src:fragment>
----------------------

I want to xinclude all the children of the root element into another
XML file. I've been trying things like
<xi:include href="firstFileName" xpointer="foo/1"/>

Provided that your XInclude engine support them, you can use the
xpointer() scheme from the XPointer framework ; usually, tools that
support them only support XPath, or a subset of XPath

If I don't make mistakes, try this :
<xi:include href="firstFileName" xpointer="xpointer(/foo/node())"/>
....but I don't remember if the spec doesn't impose limitations such as
"there must be a single node" :(

You can try RefleX for performing your XInclusions where XPath is rather
well supported :
http://reflex.gforge.inria.fr/
Here is a basic example with XInclude :
http://reflex.gforge.inria.fr/tutorial-basics.html#dtdValidation

And the result of the test suite, for DOM and SAX (both are supporting
XPath)
http://reflex.gforge.inria.fr/tests-xinclude.html
However, if(!) I'm understanding correctly, this would only xinclude
the *first* child of the element named 'foo'. Instead, I want to
xinclude *all* the children. I would have thought that this
<xi:include href="firstFileName" xpointer="foo/*"/>
would work, but it generates an error:
XPointer evaluation failed: #foo/*
All the variants of this that I've tried also fail.

How do I xinclude all children of the specified element?

Mike Maxwell
CASL/ U MD


--
Cordialement,

///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !
 
M

McSwell

If I don't make mistakes, try this :
<xi:include href="firstFileName" xpointer="xpointer(/foo/node())"/>

Thanks, this appears to be working now!

(I should have mentioned, I was using xmllint to verify the XML doc.)

Mike Maxwell
CASL/ U MD
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,147
Latest member
CarenSchni
Top