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