>But it may definitely cause undesirable output if a document contains no
superfluous whitespaces,

One situation where the default serialization indentation can be
problematic is WebDAV.
Can the WebDAV serialization be set independently of the default, in
web.xml?

/Andy

On 7 August 2017 at 09:57, Christian Grün <christian.gr...@gmail.com> wrote:

> Dear Ottid,
>
> Thanks for providing us with the helpful example, which helped me to
> understand the problem.
>
> >> replace /a <root xml:space="preserve"><a><b>foo</b></a> bar</root>
> > "a.xml" (Line 1): Open quote is expected for attribute "xml:space"
> > associated with an  element type  "root".
>
> Just a side note: Command-line parsing is restrictive when it comes to
> replacing XML. The reason is that is possible to send multiple
> commands in a single line, as shown in the following example:
>
>   create db db; replace /a <a/>; xquery .
>
>
> >> xquery /root
> > <root><a><b>foo</b></a> bar</root>
>
> You may be surprised to hear that whitespaces in your document were
> actually chopped, and that the whitespaces are  added by the
> serializer, because the "indent" serialization parameter is by default
> set to "yes".
>
> It was surprised to see that no one else pointed at this so far, and
> that was not mentioned in our documentation, so I have just added some
> explanatory lines [1,2].
>
> Some more technical background:
>
> If you call BaseX the "info storage" command, you will see which XML
> nodes are stored in the document:
>
> > set chop on;create db db <a> </a>; info storage
> CHOP: true
> Database 'db' created in 11.0 ms.
> PRE  DIS  SIZ  ATS  ID  NS  KIND  CONTENT
> -----------------------------------------
>   0    1    2    1   0   0  DOC   db.xml
>   1    1    1    1   1   0  ELEM  aIf
>
> > set chop off;create db db <a> </a>; info storage
> CHOP: false
> Database 'db' created in 20.12 ms.
> PRE  DIS  SIZ  ATS  ID  NS  KIND  CONTENT
> -----------------------------------------
>   0    1    3    1   0   0  DOC   db.xml
>   1    1    2    1   1   0  ELEM  a
>   2    1    1    1   2   0  TEXT
>
> Serialization indentation was a chosen as default because it goes hand
> in hand with the CHOP option. It even works fine if CHOP is disabled
> if a document has whitespaces included (in which case no whitespaces
> will be added by the serialized). But it may definitely cause
> undesirable output if a document contains no superfluous whitespaces,
> such as in your case.
>
> Hope this helps,
> Christian
>
> [1] http://docs.basex.org/wiki/Options#CHOP
> [2] http://docs.basex.org/wiki/Full-Text#Mixed_Content
>

Reply via email to