Question

D'après ceci:

http://www.xmlplease.com/xquery-xhtml

"XQuery ne dispose pas d'un moyen standard de réglage des paramètres de sérialisation le cas échéant. En XQuery, nous devons rechercher la documentation appropriée pour le processeur XQuery pour savoir quels sont les paramètres de sérialisation sont mis en oeuvre le cas échéant, et comment exactement les utiliser. le cas échéant, ils peuvent normalement être fixés à la ligne de commande. Souvent, ils peuvent également être utilisés à l'intérieur du document XQuery. "

Dans Saxon vous pouvez écrire quelque chose comme

declare option saxon:output "omit-xml-declaration=yes";

Mais il n'y a aucune mention sur la façon de le faire dans Zorba XQuery. Pouvez-vous aider? Merci.

Était-ce utile?

La solution

Zorba ne met pas en œuvre les options de Prolog XQuery 3.0 pour la sérialisation, encore.

La seule façon de configurer le sérialiseur utilise l'interface de ligne de commande (par exemple --omit-xml-declaration) ou un langage hôte (par exemple l'API C ++).

XQuery_t lQuery = aZorba->compileQuery("for $i in (1 to 3) return <a> { $i } </a>");

Zorba_SerializerOptions lSerOptions;
lSerOptions.omit_xml_declaration = ZORBA_OMIT_XML_DECLARATION_YES;

lQuery->execute(std::cout, &lSerOptions);

Sinon, vous pouvez sérialiser explicitement le résultat d'une chaîne

fn:serialize($result,
  <output:serialization-parameters>
    <output:indent value="yes"/>
    <output:method value="xml"/>
    <output:omit-xml-declaration value="yes"/>
  </output:serialization-parameters>
)

et ensuite utiliser la méthode de sérialisation de texte (--serialize-texte) dans l'interface de ligne de commande pour délivrer en sortie de cette chaîne.

Autres conseils

Ceci est la nouvelle XQuery 3.0 officielle syntaxe, qui est déjà pris en charge par certaines implémentations de XQuery (donc je suppose qu'il sera mis en œuvre Zorba bientôt?):

declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:omit-xml-declaration "yes";
"your query"

Selon les docs ( http: // www .zorba-xquery.com / html / documentation / 2.1.0 / Zorba / # w3cspecs ce Website) Zorba devrait soutenir la spécification sérialisation ( http://www.w3.org/TR/xslt-xquery-serialization/#serparam ). Dans ce cas, il devrait, si je ne me trompe pas, être:

declare option omit-xml-declaration "yes";

HTH!

Je pense que Zorba n'utilise pas options pour définir les paramètres de sérialisation. Au lieu de cela, vous devrez définir ces paramètres en tant que paramètres de la fonction de sérialisation que vous utilisez.

Par exemple, pour la sérialisation du XML à un fichier en utilisant 2.x Zorba, vous utilisez le culd file:write() fonction. Cette fonction prend trois paramètres:

  • le fichier à écrire,
  • le contenu à écrire,
  • et les paramètres de sérialisation:

EDIT: Je pense qu'il ressemblerait à ceci:

file:write (
    '/tmp/test.xml', 
    $content, 
    <serialization-parameters>
        <omit-xml-declaration>yes</omit-xml-declaration>
    </serialization-parameters> 
)

Ceci est similaire à la version de Zorba 1.4.0 qui offre une fonction générique ser:serialize() dans le module de sérialisation. En général, cela est non seulement spécifique à l'application, mais aussi spécifique à la version donc il peut être utile de connaître la version Zorba que vous utilisez.

EDIT: Si vous utilisez l'utilitaire de ligne de commande, vous pouvez utiliser l'option --serialization-parameter, -z pour définir les paramètres de sérialisation:

zorba -z omit-xml-declaration=yes -f -q my_xquery.xq
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top