several xsd in one document

Help
2010-04-06
2013-05-01
  • Hi,

    I'm new on Jaxe and it seems to be promising, especially for menu configuration.

    I was wondering if it is possible to have a document (and associated config file) that uses several schemes.
    For instance, my document is mainly a docbook one but with some extra markups, so I cannot only use docbook scheme.

    If it's possible, how can I do that?

    PS: I'm French, I wrote in English for foreign people. It is up to you to answer in French or English…

     
  • Il faut que le schéma l'autorise. Le mieux pour faire ça est d'avoir un schéma qui référence explicitement un autre schéma (avec un import) et les éléments autorisés. Au pire, on peut utiliser un schéma qui autorise n'importe quel élément d'un autre espace de noms (comme XSLT avec

    <any namespace="##other" processContents="skip"/>
    

    ), et indiquer un autre fichier de configuration dans le fichier de configuration (comme dans XSLT_config.xml). Mais je crois que Docbook n'autorise rien d'autre comme élément: si vous voulez ajouter d'autres éléments dans un document Docbook, cela nécessiterait de modifier son schéma, ce qui n'est pas simple… Il serait peut-être plus facile de faire un autre langage permettant l'inclusion de parties en Docbook (en faisant un import du schéma Docbook et en référençant certains éléments), mais je ne sais pas si c'est ce que vous voulez faire.

     
  • Le but est de faire du DocBook en utilisant le framework DobuDish ( http://www.agynamix.de/products/dobudish/ ).

    Il permet de plus de faire un document unique à partir de plusieurs fichiers XML. Genre un fichier principal et un fichier par chapitre de notre book.

    Pour cela il utilise dans le document principal :

    <book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
        …
        <!- Via XInclude we can include document parts
             You can use Xalan's xpointer features to select parts of your included document
             or include all of it.
        ->
        <xi:include href="book-chapter.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
    </book>

    Et dans le document inclus :

    <ximy:includelist xmlns:ximy="http://www.agynamix.de/XincludeExtension">
        <chapter xmlns="http://docbook.org/ns/docbook">
            …
        </chapter>
    </ximy:includelist>

    Je vais jeter un coup d'oeil à XSLT_config.xml.

     
  • Et du coup je me retrouve avec des erreurs du type :

    0     ERROR jaxe.Config getElementConf(Element) - attention: pas de config trouvÚe pour xi:include
    31    ERROR jaxe.Config getElementConf(Element) - espace ÚlÚment: http://www.w3.org/2001/XInclude
    31    ERROR jaxe.Config getElementConf(Element) - attention: pas de config trouvÚe pour xi:include
    31    ERROR jaxe.Config getElementConf(Element) - espace ÚlÚment: http://www.w3.org/2001/XInclude

     
  • Ces erreurs sont corrigées à l'ajout de

    <?xml version="1.0" encoding="ISO-8859-1"?><CONFIG_JAXE>
    <LANGAGE>
    <FICHIER_SCHEMA nom="XInclude.xsd"/>
    <RACINE element="stylesheet"/>
    </LANGAGE>

    <ENREGISTREMENT>
    <PREFIXE_ESPACE prefixe="xsl" uri="http://www.w3.org/1999/XSL/Transform"/>
    </ENREGISTREMENT>

    <AFFICHAGE_NOEUDS>
    <AFFICHAGE_ELEMENT element="include" type="string">
    <PARAMETRE nom="attributsVisibles" valeur="true"/>
    </AFFICHAGE_ELEMENT>
    </AFFICHAGE_NOEUDS>

    </CONFIG_JAXE>

    Par contre ça me créé des erreurs telles que :

    0     ERROR jaxe.SchemaW3C expressionReguliere(Element, int, boolean, boolean, boolean, int, boolean) - rÚfÚrence non trouvÚe: include
    136047  ERROR jaxe.SchemaW3C expressionReguliere(Element, int, boolean, boolean, boolean, int, boolean) - rÚfÚrence non trouvÚe: include
    136188  ERROR jaxe.SchemaW3C expressionReguliere(Element, int, boolean, boolean, boolean, int, boolean) - rÚfÚrence non trouvÚe: include
    149344  ERROR jaxe.SchemaW3C expressionReguliere(Element, int, boolean, boolean, boolean, int, boolean) - rÚfÚrence non trouvÚe: include

     
  • C'était juste une erreur dans mon schéma XSD. Ce que je voulais faire initialement fonctionne. Je passe à l'étape suivante…
    Merci pour la piste.

     
  • Ne connaissant pas bien Docbook, je pensais naïvement qu'il existait des éléments pour inclure d'autres fichiers dans le langage. En fait, comme Docbook hérite de la syntaxe SGML, des entités XML étaient autrefois utilisées pour inclure des fichiers, et la méthode plus moderne est effectivement avec XInclude. Mais cela ne résoud pas le problème du schéma. Jaxe ne permet d'éditer que des fichiers valides, et il faut donc que le schéma permette l'inclusion d'éléments XInclude. Ce n'est pas le cas du schéma Docbook 4.5 inclu avec Jaxe, mais il pourrait être modifié (il faudrait faire un import du schéma XInclude au bon endroit, et permettre l'ajout de xi:include sous divers éléments). Un autre problème avec Docbook 4.5 est qu'il n'a pas d'espace de noms (contrairement à la version 5), donc le mélange de langages XML dans d'autres espaces de noms n'est pas vraiment prévu…

     
  • Oui, en fait quand je parlais d'erreur dans le schéma XSD, c'est que je modifiais le schéma Docbook 5.0 pour y ajouter les espaces de noms qui m'intéressaient.

    Bien que maintenant j'ai bien le comportement en édition que je souhaite, j'ai toujours les erreurs sur les expressions régulières… Quels sont les impacts derrière ?

     
  • Le premier problème serait un blocage lors de l'insertion d'éléments. Ensuite il faudra vérifier que tout se passe bien quand on lit et on enregistre un fichier (il paraît que Xerces interprète XInclude, mais je ne sais pas de quelle façon). Et il faut voir aussi si les transformations XSLT vers HTML ou PDF fonctionnent… sachant que ce n'est programmé que pour gérer du Docbook. Mais on pourrait ajouter une transformation XSLT pour inclure les documents XInclude automatiquement. Jaxe peut enchaîner plusieurs feuilles de style quand il fait un export, donc on pourrait lui mettre en premier celle qui rassemble les documents en un, puis lui faire mouliner la feuille de style standard de Docbook à partir du résultat (je fais quelque chose d'équivalent avec XPAGES).

     
  • Je n'utilise pas les possibilités de jaxe et xslt. Je passe par dobudish pour la génération documentaire. A priori, pour mon utilisation, ça a l'air de fonctionner normalement. Je ferais des tests mardi prochain.