Dirk,

Thanks for your reply. Here's a simple example. When I run this query with
Saxon HE 9.6, the output contains a CDATA section, but when I run it in the
BaseX GUI, there is no CDATA and the angle brackets are escaped. Has this
serialization parameter been implemented in BaseX?

xquery version "3.0";

declare copy-namespaces no-preserve, no-inherit;
declare default element namespace "http://www.w3.org/1999/xhtml";;
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization
";
declare option output:method "xhtml";
declare option output:indent "yes";
declare option output:encoding "utf-8";
declare option output:cdata-section-elements "script";

let $turtle :=
<turtle>
    <![CDATA[
    @prefix ex: <http://example.org/> .
    @prefix test: <http://test.org/> .

    ex:test1 a test:Test .
    ]]>
</turtle>

let $html :=
<html>
    <head>
        <meta
            content="text/html; charset=UTF-8"
            http-equiv="Content-Type"/>
        <title>Turtle Test</title>
    </head>
    <body>
        <h1>Turtle Test</h1>
        <script
            type="text/turtle">{
            $turtle/text()
        }</script>
    </body>
</html>

return
    $html


Saxon output:

<?xml version="1.0" encoding="utf-8"?>
<html
    xmlns="http://www.w3.org/1999/xhtml";>
    <head>
        <meta
            content="text/html; charset=utf-8"
            http-equiv="Content-Type" />
        <title>Turtle Test</title>
    </head>
    <body>
        <h1>Turtle Test</h1>
        <script type="text/turtle"><![CDATA[

    @prefix ex: <http://example.org/> .
    @prefix test: <http://test.org/> .

    ex:test1 a test:Test .

]]></script>
    </body>
</html>


BaseX output:

<html
  xmlns="http://www.w3.org/1999/xhtml";>
  <head>
    <meta
      content="text/html; charset=UTF-8"
      http-equiv="Content-Type" />
    <title>Turtle Test</title>
  </head>
  <body>
    <h1>Turtle Test</h1>
    <script type="text/turtle">

    @prefix ex: &lt;http://example.org/&gt; .
    @prefix test: &lt;http://test.org/&gt; .

    ex:test1 a test:Test .

</script>
  </body>
</html>



--
Tim A. Thompson
Metadata Librarian (Spanish/Portuguese Specialty)
Princeton University Library


On Fri, Jul 10, 2015 at 4:39 AM, Dirk Kirsten <[email protected]> wrote:

> Hello Tim,
>
> CDATA is just ordinary (encoded) text to XQuery, i.e. there is no
> special CDATA data type. Therefore, instead of saving the document in
> this way you should adapt the output accordingly. So when you serialize
> your output you can use the map {"cdata-section-elements": "script"} to
> output the result as CDATA section. You can read a bit more about this
> in our documentation at http://docs.basex.org/wiki/Serialization
>
> Cheers
> Dirk
>
> On 07/09/2015 08:31 PM, Tim Thompson wrote:
> > Hello,
> >
> > I am trying to retrieve some non-XML RDF data (as "text/turtle") from
> > a SPARQL endpoint. I need to output the Turtle as a CDATA section
> > inside a <script> tag in an XForms (X)HTML file, then add that file to
> > a database.
> >
> > The file gets added correctly, but I'm not able to generate the CDATA
> > section. Here is the function:
> >
> > db:add("xforms", document {
> >         $xslt-pi,
> >         $css,
> >         $form
> > }, "turtle-test.xml", map {"cdata-section-elements": "script"})
> >
> > When I run this, I get an error: [bxerr:BASX0002] Unknown database
> > option 'cdata-section-elements'.
> >
> > I get the same error no matter which option I use (not just
> > "cdata-section-elements"), so I guess I may be using the wrong syntax.
> >
> > Hope someone can point me in the right direction!
> >
> > Thanks in advance,
> > Tim
> >
> > --
> > Tim A. Thompson
> > Metadata Librarian (Spanish/Portuguese Specialty)
> > Princeton University Library
> >
>
> --
> Dirk Kirsten, BaseX GmbH, http://basexgmbh.de
> |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz
> |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer:
> |   Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle
> `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22
>
>

Reply via email to