Some good news,
I managed to get the include working when adding the files (either the minimized ones or my own files) using a command line or the basexGUI.
Unfortunately, i still have the error message when using the web interface (which is the only one I was using initially) and cannot figure out why.
Pascal
De : Christian Grün christian.gruen@gmail.com Envoyé : jeudi 18 février 2021 17:01 À : pascaljoubaud@gmail.com Cc : BaseX basex-talk@mailman.uni-konstanz.de Objet : Re: [basex-talk] BaseX, xinclude and xpointer
Nevertheless, I have strange warnings :
Which of our distributions are you using? With the ZIP distribution, all libraries should be correctly added to the classpath.
But I guess that won't solve your xinclude issue. Maybe you can find out more by comparing my minimized example with your setup.
Cheers,
Christian
[warning] /usr/bin/basex: Unable to locate /usr/share/java/tagsoup.jar in /usr/share/java [warning] /usr/bin/basex: Unable to locate /usr/share/java/xml-resolver.jar in /usr/share/java [warning] /usr/bin/basex: Unable to locate /usr/share/java/jing.jar in /usr/share/java
Could that be the cause of my problems when adding files to the database ?
Thanks for the other answers.
Pascal
-----Message d'origine----- De : Christian Grün <christian.gruen@gmail.com mailto:christian.gruen@gmail.com > Envoyé : jeudi 18 février 2021 11:11 À : pascaljoubaud@gmail.com mailto:pascaljoubaud@gmail.com Cc : BaseX <basex-talk@mailman.uni-konstanz.de mailto:basex-talk@mailman.uni-konstanz.de > Objet : Re: [basex-talk] BaseX, xinclude and xpointer
Hi Pascal,
My problem is that the referenced document IS NOT included at all if i remove the xpointer attribute (I have the same error message). As it works on your side, I guess my baseX installation is not good. I think I'll have a look at that.
Here’s a minimized test case on command line. Do you still get the same error for that one?
doc.xml: <main xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="include.xml"/> </main>
include.xml: <include/>
Query:
basex "doc('doc.xml')"
<main xmlns:xi="http://www.w3.org/2001/XInclude"> <included xml:base="include.xml"/> </main>
Ideally, the include should work no matter if fn:doc is called or if a new database is created (at least with OpenJDK).
One more question : I understand that baseX "resolves" the xinclude when adding the file into the database. But later, if I change the source files (the ones I call from the main one), will the main file be changed dynamically ? or do I need to reload this main file to baseX to perform the xinclude operations again ?
You’ll need to reload the file. The references will be fully resolved, and the file will get embedded in the mail file.
If answer 2, I guess I could just resolve the xinclude before loading into baseX (in a dedicated xsl) and load the result in baseX, would it make a difference ?
Absolutely. Or you can do everything in XQuery. Here’s one quick’n’dirty solution to achieve that:
declare namespace xi = 'http://www.w3.org/2001/XInclude'; declare option db:xinclude 'false';
let $doc := doc('EV.xml') update { for $inc in .//xi:include let $id := replace($inc/@xpointer, '.*(|)', '') let $included-doc := doc($inc/@href) return replace node $inc with id($id, $included-doc) } return ( $doc (: write to database... db:create('db', $doc, 'doc.xml') :) (: write back to file... file:write('doc.xml', $doc) :) )
If you want to work with documents in the database, the doc() calls can e.g. be replaced with db:open('db', 'doc.xml') calls.
Hope this helps, Christian
On 2/17/21, pascaljoubaud@gmail.com mailto:pascaljoubaud@gmail.com <pascaljoubaud@gmail.com mailto:pascaljoubaud@gmail.com > wrote:
Hi Christian, Yes ideally I was hoping for the xpointer to work but I read in previous posts that instead of a named element [element(EP15)], i could use descendent path notation [element(1/2/1/1)] and that it should work. That's not ideal but in my case, I think it will work (all the files are structured in a very similar way). https://mailman.uni-konstanz.de/pipermail/basex-talk/2015-April/008607 .html My problem is that the referenced document IS NOT included at all if i remove the xpointer attribute (I have the same error message). As it works on your side, I guess my baseX installation is not good. I think I'll have a look at that.
One more question : I understand that baseX "resolves" the xinclude when adding the file into the database. But later, if I change the source files (the ones I call from the main one), will the main file be changed dynamically ? or do I need to reload this main file to baseX to perform the xinclude operations again ? If answer 2, I guess I could just resolve the xinclude before loading into baseX (in a dedicated xsl) and load the result in baseX, would it make a difference ?
Thanks Pascal
-----Message d'origine----- De : Christian Grün <christian.gruen@gmail.com mailto:christian.gruen@gmail.com > Envoyé : mercredi 17 février 2021 19:18 À : pascaljoubaud@gmail.com mailto:pascaljoubaud@gmail.com Cc : BaseX <basex-talk@mailman.uni-konstanz.de mailto:basex-talk@mailman.uni-konstanz.de > Objet : Re: [basex-talk] BaseX, xinclude and xpointer
Hi Pascal,
Thanks for the sample files. The error you reported is returned by Java’s default XML parser (the one from Xerces), so I guess we can’t resolve that easily unless the XPointer support is improved in a future version of Java. As you may have seen, the referenced document will be fully included if you remove the xpointer attribute, but that’s probably not what you need.
Out of interest, I checked if Saxon can handle XPointer attributes. As it relies on the default parser as well, it returns the same error message as BaseX.
I remember there have been previous posts on that issue; e.g here [1].
Sorry for that! Christian
[1] https://mailman.uni-konstanz.de/pipermail/basex-talk/2015-June/009021. html
On Wed, Feb 17, 2021 at 10:03 AM Christian Grün <christian.gruen@gmail.com mailto:christian.gruen@gmail.com > wrote:
When I add the file into BaseX I now have the following message when adding the main file into BaseX.
An include with href 'EP15.xml'failed, and no fallback element was found.
Feel free to send us/me the files in question, I can have a look at that.