Hi Christian,

After a few interruptions, I resume working on my database. And I discover that XInclude continues in fact to generate errors: if I manage now very well to import a file which contains an XInclude, I cannot manage in the database these files by preserving these tags.

If I take the example of the two files that I presented before:

music.xml:

<music xmlns:xi="http://www.w3.org/2001/XInclude";>
    <title>Smoke on the water</title>
    <artist>Deep Purple</artist>
    <xi:include href="label.xml"/>
</music>

label.xml

<list><label xml:id="purple">Purple Records</label></list>

Resolving the include during import gives me the following file:

<music xmlns:xi="http://www.w3.org/2001/XInclude";>
    <title>Smoke on the water</title>
    <artist>Deep Purple</artist>
<list xml:base="label.xml"><label xml:id="purple">Purple Records</label></list>
</music>

But for my part, I will need the inclusion to be kept in the files in order to be able to modify the label.xml file, include it in several other files and be able to call in real time the entities of this file. So I tried to modify the file in the database to make it return to its initial form, and I again get the binarization error that I initially got: the files are indicated as being in "binary" format and cannot be manipulated like XML files.

I also tried to transfer everything from my database to eXist, and as I had begun to see it worked quite well: I can import, export and above all manipulate in real time files that contain XIncludes linking to other files. But I'm also facing a new bug that I can't understand when editing these files via WebDAV: some files containing an XInclude do not open completely and stop after a certain number of lines.

Unless there is a miraculous solution, I think the easiest thing for me is to simply do without XInclude. What ultimately interests me in this technique is to make the link between entities identified in texts and entities gathered in an index. Even though XInclude has some serious advantages for making this link, I can still verify the integrity of the link using schematron rules built into a TEI-ODD.

Thank you in any case for your help and I look forward to discussing with you if it can be useful for you to understand the bug I am facing.

Best regards,

Virgile Reignier

Virgile Reignier <virgile.reign...@u-picardie.fr> a écrit :

Hi Christian,

Thank you for your answer!

I took a look at the mail archives and read the suggestions to write the content of the xpointer attribute as xpointer="element(/1/nx1/nx2/.../nxn)". All this proposal manages to do for me is to generate an error in the validation of my file by Oxygen, without any effect on its import by BaseX.

I could also, as @Gerrit suggests, perform the inclusion from an xQuery formula. But it seems to me that this would be less convenient than learning to do without XPointer. Thanks anyway for your suggestion, I'll gladly take others if some of you still have ideas.

About the presence of non-ASCII characters, my two files music.xml and label.xml are currently in a "test_baseX" folder. If I change the folder name to " test_basèX", my import crashes. But this is something that is again related to XInclude, even if the folder name is not explicitly specified in the @href attribute: if I try to import label.xml, it works fine.

Thank you for your valuable help in any case,

Bests,

Virgile

Translated with www.DeepL.com/Translator (free version)


Christian Grün <christian.gr...@gmail.com> a écrit :

Hi Virgile,

Thanks for giving us an update.

2 - the use of the xpointer attribute in the xi:included tag, which
systematically generates an error.

I see. Sorry for that. BaseX relies on the standard JDK library for
parsing XML documents. Unfortunately, XPointer is only partially
supported. It’s interesting to hear, though, that XPointer seems to be
fully supported by eXist-db. I remember that other users reported
problems with xpointer back to us in the past. You could check out the
replies in the past threads [1].

Maybe someone else who’s reading this knows a solution to correctly
resolve XPointer id references? Maybe it helps to embed a more current
version of Apache Xerces in the classpath?

1 - The presence of special characters such as the French "è" in the
file path. For some reason this does not bother Oxygen or eXist, only
BaseX.

Using non-ASCII characters shouldn’t cause any problems (or at least
we are not aware of any); we regularly such use file paths by our own.
Could you possibly provide us with a reproducible example?

Cordialement,
Christian

[1] https://www.mail-archive.com/search?l=basex-talk%40mailman.uni-konstanz.de&q=xpointer



Thank you very much for helping me to reach these conclusions, which
has allowed me to make a lot of progress:

1 - The problem is easy to solve: I just need to remove all traces of
unconventionality from my file names (simple but it was necessary to
think about it)
2 - I can put the items I want to include in the root of my file and
avoid using the xpointer attribute. The only disadvantage of this is
that my file is no longer valid with respect to the TEI and I can no
longer take advantage of this scheme to organise their metadata. This
won't stop me from working, but I'd like to take this opportunity to
ask you if you also have an error when you use xpointer in your files?
Is it simply a feature that BaseX does not support?

If necessary, here are the two files I use as a test for this purpose:

music.xml :

<music xmlns:xi="http://www.w3.org/2001/XInclude";>
    <title>Smoke on the water</title>
    <artist>Deep Purple</artist>
    <xi:include href="label.xml" xpointer="purple"/>
</music>

label.xml:

<list><label xml:id="purple">Purple Records</label></list>

Again, Oxygen tells me for its part that everything is valid, and the
tests with eXist included the xpointer feature. And if I remove the
xpointer attribute, I have no errors in sight.

If needed, I work with Java version 11, Windows 10 and BaseX 10.4

Thanks again for everything,

Regards,

Virgile Reignier



Reply via email to