Merge lp:~nbrinza/zorba/parse-fragment into lp:zorba

Proposed by Nicolae Brinza
Status: Superseded
Proposed branch: lp:~nbrinza/zorba/parse-fragment
Merge into: lp:zorba
Diff against target: 5713 lines (+2962/-639)
158 files modified
CMakeLists.txt (+15/-5)
ChangeLog (+2/-0)
modules/com/zorba-xquery/www/modules/CMakeLists.txt (+2/-0)
modules/com/zorba-xquery/www/modules/xml-options.xsd (+86/-0)
modules/com/zorba-xquery/www/modules/xml.xq (+238/-4)
src/api/xmldatamanagerimpl.cpp (+72/-38)
src/context/static_context.cpp (+74/-69)
src/context/static_context.h (+4/-3)
src/diagnostics/diagnostic_en.xml (+10/-6)
src/diagnostics/pregenerated/dict_en.cpp (+4/-3)
src/functions/pregenerated/func_parse_fragment.cpp (+7/-21)
src/functions/pregenerated/func_parse_fragment.h (+3/-3)
src/functions/pregenerated/function_enum.h (+1/-2)
src/runtime/parsing_and_serializing/fragment_istream.h (+54/-10)
src/runtime/parsing_and_serializing/parse_fragment_impl.cpp (+167/-168)
src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h (+1/-1)
src/runtime/sequences/sequences_impl.cpp (+10/-10)
src/runtime/spec/parsing_and_serializing/parse_fragment.xml (+5/-12)
src/store/api/load_properties.h (+224/-38)
src/store/naive/loader.h (+23/-6)
src/store/naive/loader_dtd.cpp (+307/-165)
src/store/naive/loader_fast.cpp (+9/-1)
src/store/naive/simple_store.cpp (+14/-12)
src/types/typeimpl.cpp (+20/-4)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xml.res (+6/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xml.res (+12/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xml.res (+12/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xml.res (+8/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xml.res (+8/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xml.res (+8/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xml.res (+6/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xml.res (+4/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xml.res (+5/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xml.res (+14/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xml.res (+14/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xml.res (+10/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xml.res (+6/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xml.res (+59/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xml.res (+50/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xml.res (+34/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xml.res (+18/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xml.res (+14/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xml.res (+14/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xml.res (+3/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-44.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-45.xml.res (+2/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-46.xml.res (+31/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-53.xml.res (+8/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-54.xml.res (+7/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-55.xml.res (+8/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-56.xml.res (+7/-0)
test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-12.xml.res (+1/-1)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xq (+8/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xq (+19/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xq (+19/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xq (+19/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xq (+19/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xq (+8/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xq (+8/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xq (+8/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xq (+15/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xq (+15/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xq (+15/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xq (+15/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xq (+15/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xq (+16/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xq (+21/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xq (+21/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xq (+21/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xq (+21/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xq (+21/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xq (+21/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xq (+65/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xq (+65/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xq (+65/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xq (+65/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xq (+65/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xq (+65/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xq (+20/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xq (+20/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xq (+20/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-44.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-45.xq (+9/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-46.xq (+37/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-47.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-47.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-48.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-48.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-49.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-49.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-50.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-50.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-51.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-51.xq (+11/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-52.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-52.xq (+11/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-53.xq (+13/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-54.xq (+14/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-55.xq (+14/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-56.xq (+14/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-01.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-02.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-03.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-04.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-05.xq (+8/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-06.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-07.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-08.xq (+7/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-09.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-10.xq (+2/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-11.xq (+7/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-12.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-13.xq (+7/-1)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-14.xq (+6/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-15.xq (+8/-2)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-16.spec (+0/-1)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-16.xq (+0/-8)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-17.spec (+0/-1)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-17.xq (+0/-8)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-18.spec (+1/-0)
test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-18.xq (+0/-10)
To merge this branch: bzr merge lp:~nbrinza/zorba/parse-fragment
Reviewer Review Type Date Requested Status
David Graf (community) Approve
William Candillon Approve
Matthias Brantner Pending
Review via email: mp+97251@code.launchpad.net

This proposal supersedes a proposal from 2012-03-13.

This proposal has been superseded by a proposal from 2012-03-13.

Description of the change

Fully streaming parse-xml module.

To post a comment you must log in.
Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

The branch doesn't compile on my machine:
[ 0%] Building CXX object src/CMakeFiles/zorba_simplestore.dir/functions/func_nodes.cpp.o
In file included from /Users/wcandillon/tmp/parse-fragment/build/src/functions/func_nodes.cpp:26:
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:211: error: stray '#' in program
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: stray '#' in program
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: stray '#' in program
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:211: error: expected ',' or '...' before numeric constant
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:211: error: expected `)' before ';' token
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:211: error: ISO C++ forbids declaration of 'aAttr' with no type
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:211: error: expected ';' before ')' token
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: expected ',' or '...' before numeric constant
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: expected `)' before ';' token
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: ISO C++ forbids declaration of 'aLangAttr' with no type
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: expected unqualified-id before 'const'
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: ISO C++ forbids declaration of 'aRequestLang' with no type
/Users/wcandillon/tmp/parse-fragment/build/src/runtime/nodes/nodes.h:212: error: expected ';' before ')' token

@Matthias, are you experiencing the same issue on mac?

Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

It seems to be a problem with the diff:
- bool isLangAttr(const store::Item_t& aAttr) const;
- bool matchesReqLang(const store::Item_t& aLangAttr, const zstring& aRequestLang) const;
+ bool isLangAttr(const store::Item_t& aAttr) const;
+ bool matchesReqLang(const store::Item_t& aLangAttr, const zstring& aRequestLang) const;

review: Needs Fixing
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

Yes, indeed, this is a strange corruption that I sometimes get after a merge. I've fixed the issue, resubmitting.

Revision history for this message
Matthias Brantner (matthias-brantner) wrote : Posted in a previous version of this proposal

WOW, that's really cool. I just tried parsing a huge file and memory consumption was constant at a low level. Also, skipping root nodes worked like a charm.

I have some question/remarks:
- In the schema, there is a typo skip-top-Level-text-nodes => skip-top-level-text-nodes
- If validation is enabled, will the validation copy or validate-in-place? I think it should validate-in-place for performance reasons.
- From the documentation, it's not clear on which nodes validation will happen if root nodes are skipped.
- Why does the schema have the following copyright notice "Copyright (c)2010 Elsevier, Inc."?
- The copyright should be 2006-2012
- Parsing the following document with <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/> results in an infinite loop:
<root><a id='0'>
 0
 </b>
</a>
<a id='1'>
 1
</a>
<a id='2'>
 2
</a>
</root>
- The feature is not added to the ChangeLog

review: Needs Fixing
Revision history for this message
Matthias Brantner (matthias-brantner) wrote : Posted in a previous version of this proposal

Also, the branch doesn't build without schema support (i.e. ZORBA_NO_XMLSCHEMA:BOOL=ON)

[ 1%] Building CXX object src/CMakeFiles/zorba_simplestore.dir/runtime/parsing_and_serializing/parse_fragment_impl.cpp.o
/home/mbrantner/zorba/sandbox/src/runtime/parsing_and_serializing/parse_fragment_impl.cpp: In function ‘void zorba::processOptions(zorba::store::Item_t, zorba::store::LoadProperties&, zorba::static_context*, const zorba::QueryLoc&)’:
/home/mbrantner/zorba/sandbox/src/runtime/parsing_and_serializing/parse_fragment_impl.cpp:62:3: error: ‘Validator’ has not been declared
/home/mbrantner/zorba/sandbox/src/runtime/parsing_and_serializing/parse_fragment_impl.cpp:67:7: error: ‘ParseConstants’ has not been declared

review: Needs Information
Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

Why is there an Elsevier copyright for modules/com/zorba-xquery/www/modules/xml-options.xsd ?

review: Needs Information
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

The Elsevier copyright came from the xqdoc.xsd, which I think I used as a base for the options file. I fixed it together with the other issues Matthias has raised. I've also fixed a couple of other cases where malformed XMLs where handled incorrectly. Resubmitting for merging.

Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

I tried the forecast data with the parse function: very impressive!!

For documentation purposes, I would rename the parse-xml prefix to xml, this is more consistent right?

review: Needs Information
Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

Would xmldoc be a good prefix?

Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

It certainly is the closest allowed alternative...

Revision history for this message
Matthias Brantner (matthias-brantner) wrote : Posted in a previous version of this proposal

- The branch doesn't build without schema support (i.e. ZORBA_NO_XMLSCHEMA:BOOL=ON)

[ 1%] Building CXX object src/CMakeFiles/zorba_simplestore.dir/runtime/parsing_and_serializing/parse_fragment_impl.cpp.o
/home/mbrantner/zorba/sandbox/src/runtime/parsing_and_serializing/parse_fragment_impl.cpp: In function ‘void zorba::processOptions(zorba::store::Item_t, zorba::store::LoadProperties&, zorba::static_context*, const zorba::QueryLoc&)’:
/home/mbrantner/zorba/sandbox/src/runtime/parsing_and_serializing/parse_fragment_impl.cpp:62:3: error: ‘Validator’ has not been declared
/home/mbrantner/zorba/sandbox/src/runtime/parsing_and_serializing/parse_fragment_impl.cpp:67:7: error: ‘ParseConstants’ has not been declared
make[2]: *** [src/CMakeFiles/zorba_simplestore.dir/runtime/parsing_and_serializing/parse_fragment_impl.cpp.o] Error 1

- If validation is enabled, will the validation copy or validate-in-place? I think it should validate-in-place for performance reasons.

review: Needs Fixing
Revision history for this message
William Candillon (wcandillon) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

All pending issues have been fixed. Resubmitting the proposal for merging.

Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

I tried it and it looks like just the best.

review: Approve
Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

Adding David to the review, I think he found a bug.

Revision history for this message
David Graf (davidagraf) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

I've fixed the conflict in the Changelog. Resubmitting for merging into the trunk.

Revision history for this message
Matthias Brantner (matthias-brantner) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote : Posted in a previous version of this proposal
Revision history for this message
William Candillon (wcandillon) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote : Posted in a previous version of this proposal

The attempt to merge lp:~nbrinza/zorba/parse-fragment into lp:zorba failed. Below is the output from the failed tests.

CMake Error at /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake:274 (message):
  Validation queue job parse-fragment-2012-02-23T17-50-09.456Z is finished.
  The final status was:

  1136 tests did not succeed - changes not commited.

Error in read script: /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake

Revision history for this message
David Graf (davidagraf) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote : Posted in a previous version of this proposal

Attempt to merge into lp:zorba failed due to conflicts:

text conflict in ChangeLog

Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

I have fixed the regressions and the conflicts. Resubmitting.

Revision history for this message
William Candillon (wcandillon) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
William Candillon (wcandillon) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Matthias Brantner (matthias-brantner) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote : Posted in a previous version of this proposal
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote : Posted in a previous version of this proposal

The attempt to merge lp:~nbrinza/zorba/parse-fragment into lp:zorba failed. Below is the output from the failed tests.

CMake Error at /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake:274 (message):
  Validation queue job parse-fragment-2012-02-29T15-41-14.921Z is finished.
  The final status was:

  1 tests did not succeed - changes not commited.

Error in read script: /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake

Revision history for this message
David Graf (davidagraf) : Posted in a previous version of this proposal
review: Approve
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

I have added the backwards-compatible parse-xml:parse-xml-fragment() function and now the link crawler test passes ok. Resubmitting for mergeing into the trunk.

Revision history for this message
Matthias Brantner (matthias-brantner) wrote : Posted in a previous version of this proposal

I won't pass the remote queue because not all of the parameters of the old functions are documented.

review: Needs Fixing
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

Which parameters of the old functions are not documented?

Revision history for this message
Matthias Brantner (matthias-brantner) wrote : Posted in a previous version of this proposal

> Which parameters of the old functions are not documented?
Sorry, I got confused by the diff. Everything seems to be fine.

review: Approve
Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

The module works nicely but the documentation needs more example:
- In the introduction
- For each function

review: Needs Fixing
Revision history for this message
Nicolae Brinza (nbrinza) wrote : Posted in a previous version of this proposal

I have merged Matthias' example and added another one. Resubmitting.

Revision history for this message
William Candillon (wcandillon) wrote : Posted in a previous version of this proposal

Looks good

review: Approve
Revision history for this message
William Candillon (wcandillon) :
review: Approve
Revision history for this message
David Graf (davidagraf) :
review: Approve
Revision history for this message
Nicolae Brinza (nbrinza) wrote :

I have fixed the formatting of the code examples.

lp:~nbrinza/zorba/parse-fragment updated
10515. By Nicolae Brinza

Fixed the formatting of the code examples in the documenation of the parse-fragment module

10516. By Nicolae Brinza

Merged with Zorba trunk

10517. By Nicolae Brinza

Fixed the failing link crawler test in the release build

10518. By Nicolae Brinza

Merged with Zorba trunk

10519. By Nicolae Brinza

Merged with Zorba trunk

10520. By Nicolae Brinza

Added a test for the backwards-compatible zorba:parse-xml-fragment() function

10521. By Nicolae Brinza

Small optimization in the serializer to avoid a repeated string comparison

10522. By Nicolae Brinza

Merged with Zorba trunk

10523. By Nicolae Brinza

Documentation fixes.

10524. By Nicolae Brinza

Reverted a change in the parse fragment module to fix the regressions

10525. By Nicolae Brinza

Improved documentation of the parse-fragment module

10526. By Nicolae Brinza

Merged with Zorba trunk

10527. By Nicolae Brinza

Fixed the type of options parameter to the parse-fragment() function.

10528. By Nicolae Brinza

Fixed the quantity of the options parameter from ONE to QUESTION.

10529. By Nicolae Brinza

Merged with Zorba trunk

10530. By Nicolae Brinza

The parse-fragment function now allows a DOCTYPE declaration in the input.

10531. By Nicolae Brinza

Merged with Zorba trunk

10532. By Nicolae Brinza

Updated the Changelog with the parse-fragment info

10533. By Nicolae Brinza

Updated Changelog with the resolution of bug #1016606

10534. By Nicolae Brinza

Merged with Zorba trunk

10535. By Nicolae Brinza

Fixed parse-fragment not handling correctly the streammable streams lifetime.

10536. By Nicolae Brinza

The input buffer of parse-fragment can grow if libxml is not able to parse the current chunk. Fixes bug #1027270

10537. By Nicolae Brinza

Merged with Zorba trunk

10538. By Nicolae Brinza

Merged with Zorba trunk

10539. By Nicolae Brinza

Updated the Changelog with fixes for bugs #1016606 and #1024033

10540. By Nicolae Brinza

Updated the Changelog with the fix for the bug #1023170

10541. By Nicolae Brinza

Merged with Zorba trunk

10542. By Nicolae Brinza

Fix for bug #1099535 endless loop in xml:parse()

10543. By Nicolae Brinza

Merged with Zorba trunk

10544. By Nicolae Brinza

Updated Changelog to mention fix for bug #1099535

10545. By Nicolae Brinza

Merged with Zorba trunk

10546. By Nicolae Brinza

Fixed bug #1099648 -- XML parsing failures on Red Hat

10547. By Nicolae Brinza

Updated Changelog to mention the fix for bug #1099648

10548. By Nicolae Brinza

Merged with Zorba trunk

Unmerged revisions

10548. By Nicolae Brinza

Merged with Zorba trunk

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2012-02-15 10:25:02 +0000
3+++ CMakeLists.txt 2012-03-13 16:09:23 +0000
4@@ -237,11 +237,21 @@
5 MESSAGE(STATUS "Looking for LibXml2")
6 FIND_PACKAGE(LibXml2)
7 IF(LIBXML2_FOUND)
8- MESSAGE(STATUS "Found LIBXML2 library -- " ${LIBXML2_LIBRARIES})
9-
10- INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
11- SET(requiredlibs-store ${requiredlibs-store} ${LIBXML2_LIBRARIES})
12- SET(CXXFLAGS ${CXXFLAGS} ${LIBXML2_DEFINITONS})
13+ # Now check LibXml2's version
14+ FILE(STRINGS ${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h LIBXML2_VERSION_TMP REGEX
15+ "^#define[ \t]+LIBXML_DOTTED_VERSION[ \t]+\".*\"")
16+ STRING(REGEX REPLACE "^#define[ \t]+LIBXML_DOTTED_VERSION[ \t]+\"(.*)\"" "\\1"
17+ LIBXML2_VERSION ${LIBXML2_VERSION_TMP})
18+
19+ IF(LIBXML2_VERSION VERSION_EQUAL "2.7.0" OR LIBXML2_VERSION VERSION_GREATER "2.7.0")
20+ MESSAGE(STATUS "Found LIBXML2 library -- " ${LIBXML2_LIBRARIES})
21+ INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
22+ SET(requiredlibs-store ${requiredlibs-store} ${LIBXML2_LIBRARIES})
23+ SET(CXXFLAGS ${CXXFLAGS} ${LIBXML2_DEFINITONS})
24+ ELSE(LIBXML2_VERSION VERSION_EQUAL "2.7.0" OR LIBXML2_VERSION VERSION_GREATER "2.7.0")
25+ MESSAGE(FATAL_ERROR "The libxml2 library version 2.7.0 or higher is required in order to build Zorba.")
26+ ENDIF(LIBXML2_VERSION VERSION_EQUAL "2.7.0" OR LIBXML2_VERSION VERSION_GREATER "2.7.0")
27+
28 ELSE(LIBXML2_FOUND)
29 MESSAGE(FATAL_ERROR "The libxml2 library and headers are required in order to build simple store.")
30 ENDIF(LIBXML2_FOUND)
31
32=== modified file 'ChangeLog'
33--- ChangeLog 2012-03-12 17:11:35 +0000
34+++ ChangeLog 2012-03-13 16:09:23 +0000
35@@ -5,6 +5,8 @@
36 * Add --compile-plan (-c) and --execute-plan (-e) options to zorba command line.
37 * Add XQuery 3.0 concat operator (http://www.w3.org/TR/xquery-30/#id-string-concat-expr)
38 * Fixed bug 923015 (clone() not implemented for full-text expressions)
39+ * The core parse-xml module is now able to parse input files in a streaming mode. A number of new options have also been added.
40+ * LibXml2 version 2.7.0 or higher is now required in order to build Zorba.
41 * No-copy optimization: avoids copying nodes during node-constructor expressions.
42 * Added external function annotations %ann:propagates-input-nodes and
43 %ann:must-copy-input-nodes to be used by the no-copy optimization.
44
45=== modified file 'modules/com/zorba-xquery/www/modules/CMakeLists.txt'
46--- modules/com/zorba-xquery/www/modules/CMakeLists.txt 2012-03-07 15:49:25 +0000
47+++ modules/com/zorba-xquery/www/modules/CMakeLists.txt 2012-03-13 16:09:23 +0000
48@@ -63,6 +63,8 @@
49 URI "http://www.zorba-xquery.com/modules/schema")
50 DECLARE_ZORBA_MODULE(FILE string.xq VERSION 2.1
51 URI "http://www.zorba-xquery.com/modules/string")
52+DECLARE_ZORBA_SCHEMA(FILE xml-options.xsd
53+ URI "http://www.zorba-xquery.com/modules/xml-options")
54 DECLARE_ZORBA_MODULE(FILE uri.xq VERSION 1.0
55 URI "http://www.zorba-xquery.com/modules/uri")
56 DECLARE_ZORBA_MODULE(FILE xml.xq VERSION 2.0
57
58=== added file 'modules/com/zorba-xquery/www/modules/xml-options.xsd'
59--- modules/com/zorba-xquery/www/modules/xml-options.xsd 1970-01-01 00:00:00 +0000
60+++ modules/com/zorba-xquery/www/modules/xml-options.xsd 2012-03-13 16:09:23 +0000
61@@ -0,0 +1,86 @@
62+<?xml version="1.0"?>
63+<!--
64+ - Copyright 2006-2012 The FLWOR Foundation.
65+ -
66+ - Licensed under the Apache License, Version 2.0 (the "License");
67+ - you may not use this file except in compliance with the License.
68+ - You may obtain a copy of the License at
69+ -
70+ - http://www.apache.org/licenses/LICENSE-2.0
71+ -
72+ - Unless required by applicable law or agreed to in writing, software
73+ - distributed under the License is distributed on an "AS IS" BASIS,
74+ - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
75+ - See the License for the specific language governing permissions and
76+ - limitations under the License.
77+-->
78+<schema xmlns="http://www.w3.org/2001/XMLSchema"
79+ targetNamespace="http://www.zorba-xquery.com/modules/xml-options"
80+ elementFormDefault="qualified" attributeFormDefault="qualified">
81+
82+ <element name="options">
83+ <complexType>
84+ <all>
85+
86+ <element name="base-uri" minOccurs="0" maxOccurs="1">
87+ <complexType>
88+ <attribute name="value" type="anyURI" use="required"/>
89+ </complexType>
90+ </element>
91+ <element name="no-error" minOccurs="0" maxOccurs="1">
92+ <complexType/>
93+ </element>
94+ <element name="schema-validate" minOccurs="0" maxOccurs="1">
95+ <complexType>
96+ <attribute name="mode" default="strict">
97+ <simpleType>
98+ <restriction base="string">
99+ <enumeration value="strict"/>
100+ <enumeration value="lax"/>
101+ </restriction>
102+ </simpleType>
103+ </attribute>
104+ </complexType>
105+ </element>
106+ <element name="DTD-validate" minOccurs="0" maxOccurs="1">
107+ <complexType/>
108+ </element>
109+ <element name="DTD-load" minOccurs="0" maxOccurs="1">
110+ <complexType/>
111+ </element>
112+ <element name="default-DTD-attributes" minOccurs="0" maxOccurs="1">
113+ <complexType/>
114+ </element>
115+ <element name="parse-external-parsed-entity" minOccurs="0" maxOccurs="1">
116+ <complexType>
117+ <attribute name="skip-root-nodes" use="optional">
118+ <simpleType>
119+ <restriction base="int">
120+ <minInclusive value="0"/>
121+ </restriction>
122+ </simpleType>
123+ </attribute>
124+ <attribute name="skip-top-level-text-nodes" type="boolean" use="optional"/>
125+ </complexType>
126+ </element>
127+ <element name="substitute-entities" minOccurs="0" maxOccurs="1">
128+ <complexType/>
129+ </element>
130+ <element name="xinclude-substitutions" minOccurs="0" maxOccurs="1">
131+ <complexType/>
132+ </element>
133+ <element name="remove-redundant-ns" minOccurs="0" maxOccurs="1">
134+ <complexType/>
135+ </element>
136+ <element name="no-CDATA" minOccurs="0" maxOccurs="1">
137+ <complexType/>
138+ </element>
139+ <element name="no-xinclude-nodes" minOccurs="0" maxOccurs="1">
140+ <complexType/>
141+ </element>
142+
143+ </all>
144+ </complexType>
145+ </element>
146+
147+</schema>
148
149=== modified file 'modules/com/zorba-xquery/www/modules/xml.xq' (properties changed: +x to -x)
150--- modules/com/zorba-xquery/www/modules/xml.xq 2011-08-10 02:50:23 +0000
151+++ modules/com/zorba-xquery/www/modules/xml.xq 2012-03-13 16:09:23 +0000
152@@ -1,4 +1,4 @@
153-xquery version "1.0";
154+xquery version "3.0";
155
156 (:
157 : Copyright 2006-2010 The FLWOR Foundation.
158@@ -23,13 +23,46 @@
159 : external parsed entities, described by
160 : <a href="http://www.w3.org/TR/xml/#wf-entities">XML 1.0 Well-Formed
161 : Parsed Entities</a>. The functions can also perform Schema and DTD
162- : validation of the input documents.
163+ : validation of the input documents.
164 : </p>
165 :
166+ : <p>The following example parses a sequence of XML elements and returns
167+ : them in a streaming fashion - each at a time:</p>
168+ :
169+ : <code>
170+ : import module namespace parse-xml = "http://www.zorba-xquery.com/modules/xml";
171+ : import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
172+ : parse-xml:parse(
173+ : "&lt;from1>Jani&lt;/from1>&lt;from2>Jani&lt;/from2>&lt;from3>Jani&lt;/from3>",
174+ : &lt;opt:options>
175+ : &lt;opt:parse-external-parsed-entity/>
176+ : &lt;/opt:options>
177+ : )
178+ : </code>
179+ :
180+ : <p>Another useful option allows to skip an arbitrary number of levels
181+ : before returning a sequence of nodes as shown in the following example:</p>
182+ :
183+ : <code>
184+ : import module namespace parse-xml = "http://www.zorba-xquery.com/modules/xml";
185+ : import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
186+ : parse-xml:parse(
187+ : "&lt;root>
188+ : &lt;from1>Jani1&lt;/from1>
189+ : &lt;from2>Jani2&lt;/from2>
190+ : &lt;from3>Jani3&lt;/from3>
191+ : &lt;/root>",
192+ : &lt;opt:options>
193+ : &lt;opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
194+ : &lt;/opt:options>
195+ : )
196+ : </code>
197+ :
198 : @see <a href="http://www.w3.org/TR/xml/#wf-entities">XML 1.0 Well-Formed
199 : Parsed Entities</a>
200 : @see <a href="http://www.w3.org/TR/xpath-functions-30/#func-parse-xml">
201 : fn:parse-xml() function in XPath and XQuery Functions and Operators 3.0</a>
202+ : @see <a href="http://xmlsoft.org/html/libxml-parser.html">LibXml2 parser</a>
203 :
204 : @author Nicolae Brinza
205 : @project data processing/data converters
206@@ -37,6 +70,8 @@
207 :)
208 module namespace parse-xml = "http://www.zorba-xquery.com/modules/xml";
209
210+import schema namespace parse-xml-options = "http://www.zorba-xquery.com/modules/xml-options";
211+
212 declare namespace zerr = "http://www.zorba-xquery.com/errors";
213 declare namespace err = "http://www.w3.org/xqt-errors";
214
215@@ -48,6 +83,157 @@
216 : A function to parse XML files and fragments (i.e.
217 : <a href="http://www.w3.org/TR/xml/#wf-entities">external general parsed
218 : entities</a>). The functions takes two arguments: the first one is the
219+ : string to be parsed and the second argument is an &lt;options/&gt; element that
220+ : passes a list of options to the parsing function. They are described below.
221+ : The options element must conform to the xml-options.xsd schema. Some of these
222+ : will be passed to the underlying library (LibXml2) and further documentation
223+ : for them can be found at <a href="http://xmlsoft.org/html/libxml-parser.html">
224+ : LibXml2 parser</a>.
225+ :
226+ : The list of available options:
227+ :
228+ : <ul>
229+ : <li>
230+ : &lt;base-uri/&gt; - the element must have a "value" attribute, which will provide
231+ : the baseURI that will be used as the baseURI for every node returned by this
232+ : function.
233+ : </li>
234+ :
235+ : <li>
236+ : &lt;no-error/&gt; - if present, the option will disable fatal error processing. Any
237+ : failure to parse or validate the input in the requested manner will result
238+ : in the function returning an empty sequence and no error will raised.
239+ : </li>
240+ :
241+ : <li>
242+ : &lt;schema-validate/&gt; - if present, it will request that the input string be Schema
243+ : validated. The element accepts an attribute named "mode" which can have two
244+ : values: "strict and "lax". Enabling the option will produce a result that is
245+ : equivalent to processing the input with the option disabled, and then copying
246+ : the result using the XQuery "validate strict|lax" expression. This option can not
247+ : be used together with either the &lt;DTD-validate/&gt; or the &lt;parse-external-parsed-entity/&gt;
248+ : option. Doing so will raise a zerr:ZXQD0003 error.
249+ : </li>
250+ :
251+ : <li>
252+ : &lt;DTD-validate/&gt; - the option will enable the DTD-based validation. If this
253+ : option is enabled and the input references a DTD, then the input must be a
254+ : well-formed and DTD-valid XML document. The &lt;DTD-load/&gt; option must be used for
255+ : external DTD files to be loaded. If the option is enabled and the input does
256+ : not reference a DTD then the option is ignored. If the option is disabled, the
257+ : input is not required to reference a DTD and if it does reference a DTD then
258+ : the DTD is ignored for validation purposes. This option can not
259+ : be used together with either the &lt;schema-validate/&gt; or the &lt;parse-external-parsed-entity&gt;
260+ : option. Doing so will raise a zerr:ZXQD0003 error.
261+ : </li>
262+ :
263+ : <li>
264+ : &lt;DTD-load/&gt; - if present, it will enable loading of external DTD files.
265+ : </li>
266+ :
267+ : <li>
268+ : &lt;default-DTD-attributes/&gt; - if present, it will enable the default DTD attributes.
269+ : </li>
270+ :
271+ : <li>
272+ : &lt;parse-external-parsed-entity/&gt; - if present, it will enable the processing of XML
273+ : external entities. If the option
274+ : is enabled, the input must conform to the syntax extParsedEnt (production
275+ : [78] in XML 1.0, see <a href="http://www.w3.org/TR/xml/#wf-entities">
276+ : Well-Formed Parsed Entities</a>). The result of the function call is a list
277+ : of nodes corresponding to the top-level components of the content of the
278+ : external entity: that is, elements, processing instructions, comments, and
279+ : text nodes. CDATA sections and character references are expanded, and
280+ : adjacent characters are merged so the result contains no adjacent text
281+ : nodes. If the option is disabled, the input must be a well-formed XML
282+ : document conforming to the Document production
283+ : (<a href="http://www.w3.org/TR/xml/#sec-well-formed">production [1] in XML 1.0</a>).
284+ : This option can not be used together with either the &lt;schema-validate/&gt; or the &lt;DTD-validate/&gt;
285+ : option. Doing so will raise a zerr:ZXQD0003 error.
286+ : The &lt;parse-external-parsed-entity/&gt; option has two parameters, given by attributes. The first
287+ : attribute is "skip-root-nodes" and it can have a non-negative value. Specifying the paramter
288+ : tells the parser to skip the given number of root nodes and return only their children. E.g.
289+ : skip-root-nodes="1" is equivalent to parse-xml($xml-string)/node()/node() . skip-root-nodes="2" is equivalent
290+ : to parse-xml($xml-string)/node()/node()/node() , etc. The second attribute is "skip-top-level-text-nodes" with a
291+ : boolean value. Specifying "true" will tell the parser to skip top level text nodes, returning
292+ : only the top level elements, comments, PIs, etc. This parameter works in combination with
293+ : the "skip-root-nodes" paramter, thus top level text nodes are skipped after "skip-root-nodes" has
294+ : been applied.
295+ : </li>
296+ :
297+ : <li>
298+ : &lt;substitute-entities/&gt; - if present, it will enable the XML entities substitutions.
299+ : </li>
300+ :
301+ : <li>
302+ : &lt;remove-redundant-ns/&gt; - if present, the parser will remove redundant namespaces declarations.
303+ : </li>
304+ :
305+ : <li>
306+ : &lt;no-CDATA/&gt; - if present, the parser will merge CDATA nodes as text nodes.
307+ : </li>
308+ :
309+ : <li>
310+ : &lt;xinclude-substitutions/&gt; - if present, it will enable the XInclude substitutions.
311+ : </li>
312+ :
313+ : <li>
314+ : &lt;no-xinclude-nodes/&gt; - if present, the parser will not generate XInclude START/END nodes.
315+ : </li>
316+ :
317+ : </ul>
318+ :
319+ :
320+ : @param $xml-string The string that holds the XML to be parsed. If empty,
321+ : the function will return an empty sequence
322+ : @param $options The options for the parsing
323+ : @return The parsed XML as a document node or a list of nodes, or an empty
324+ : sequence.
325+ :
326+ : @error zerr:ZXQD0003 The error will be raised if the options to the function
327+ : are inconsistent.
328+ :
329+ : @error err:FODC0006 The error will be raised if the input string is not a
330+ : valid XML document or fragment (external general parsed
331+ : entity) or if DTD validation was enabled and the
332+ : document has not passed it.
333+ :
334+ : @error err:XQDY0027 The error will be raised if schema validation was enabled
335+ : and the input document has not passed it or if the parsing options are not
336+ : conformant to the xml-options.xsd schema.
337+ :
338+ :
339+ : An example that sets the base-uri of the parsed external entities:
340+ : <code>
341+ : import module namespace parse-xml = "http://www.zorba-xquery.com/modules/xml";
342+ : import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
343+ : parse-xml:parse("&lt;from1>Jani&lt;/from1>&lt;from2>Jani&lt;/from2>&lt;from3>Jani&lt;/from3>",
344+ : &lt;opt:options>
345+ : &lt;opt:base-uri opt:value="urn:test"/>
346+ : &lt;opt:parse-external-parsed-entity/>
347+ : &lt;/opt:options>
348+ : )
349+ : </code>
350+ :
351+ : @example test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-03.xq
352+ : @example test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-01.xq
353+ : @example test/rbkt/Queries/zorba/parsing_and_serializing/parse-xml-fragment-07.xq
354+ :
355+ :)
356+declare function parse-xml:parse(
357+ $xml-string as xs:string?,
358+ $options as element()?) as node()* external;
359+
360+
361+(:~
362+ :
363+ : Note: this function is included for backwards compatibility purposes. It
364+ : is recommended that you use the parse-xml:parse() function instead.
365+ :
366+ :
367+ : A function to parse XML files and fragments (i.e.
368+ : <a href="http://www.w3.org/TR/xml/#wf-entities">external general parsed
369+ : entities</a>). The functions takes two arguments: the first one is the
370 : string to be parsed and the second argument is a flags string
371 : (eEdDsSlLwWfF]*(;[\p{L}]*)?) selecting the options described below.
372 : <br/>
373@@ -136,10 +322,35 @@
374 :)
375 declare function parse-xml:parse-xml-fragment(
376 $xml-string as xs:string?,
377- $options as xs:string) as node()* external;
378+ $options as xs:string) as node()*
379+{
380+ let $new_options := <parse-xml-options:options>{
381+ if (contains($options, "e"))
382+ then <parse-xml-options:parse-external-parsed-entity/> else (),
383+ if (contains($options, "d"))
384+ then <parse-xml-options:DTD-validate/> else (),
385+ if (contains($options, "s"))
386+ then <parse-xml-options:schema-validate parse-xml-options:mode="strict"/>
387+ else (),
388+ if (contains($options, "l"))
389+ then <parse-xml-options:schema-validate parse-xml-options:mode="lax"/>
390+ else (),
391+ if (contains($options, "w"))
392+ then <parse-xml-options:strip-boundary-space/> else (),
393+ if (contains($options, "f"))
394+ then <parse-xml-options:no-error/> else ()
395+ }</parse-xml-options:options>
396+ return
397+ parse-xml:parse($xml-string, $new_options)
398+};
399
400
401 (:~
402+ :
403+ : Note: this function is included for backwards compatibility purposes. It
404+ : is recommended that you use the parse-xml:parse() function instead.
405+ :
406+ :
407 : A function to parse XML files and fragments. The behavior is the
408 : same as the parse-xml-fragment with two arguments.
409 :
410@@ -169,4 +380,27 @@
411 declare function parse-xml:parse-xml-fragment(
412 $xml-string as xs:string?,
413 $base-uri as xs:string,
414- $options as xs:string) as node()* external;
415+ $options as xs:string) as node()*
416+{
417+ let $new_options := <parse-xml-options:options>{
418+ if (contains($options, "e"))
419+ then <parse-xml-options:parse-external-parsed-entity/> else (),
420+ if (contains($options, "d"))
421+ then <parse-xml-options:DTD-validate/> else (),
422+ if (contains($options, "s"))
423+ then <parse-xml-options:schema-validate parse-xml-options:mode="strict"/>
424+ else (),
425+ if (contains($options, "l"))
426+ then <parse-xml-options:schema-validate parse-xml-options:mode="lax"/>
427+ else (),
428+ if (contains($options, "w"))
429+ then <parse-xml-options:strip-boundary-space/> else (),
430+ if (contains($options, "f"))
431+ then <parse-xml-options:no-error/> else (),
432+ <parse-xml-options:base-uri>{
433+ attribute{xs:QName("parse-xml-options:value")}{$base-uri}}
434+ </parse-xml-options:base-uri>
435+ }</parse-xml-options:options>
436+ return
437+ parse-xml:parse($xml-string, $new_options)
438+};
439
440=== modified file 'src/api/annotationimpl.cpp' (properties changed: +x to -x)
441=== modified file 'src/api/xmldatamanagerimpl.cpp'
442--- src/api/xmldatamanagerimpl.cpp 2012-01-23 10:06:24 +0000
443+++ src/api/xmldatamanagerimpl.cpp 2012-03-13 16:09:23 +0000
444@@ -75,7 +75,7 @@
445
446 ********************************************************************************/
447 XmlDataManagerImpl::XmlDataManagerImpl()
448- :
449+ :
450 theDocManager(0),
451 theColManager(0),
452 theW3CColManager(0)
453@@ -126,7 +126,9 @@
454 std::ostringstream lProlog;
455 lProlog
456 << "import module namespace d = '" << static_context::ZORBA_FETCH_FN_NS << "';"
457- << "import module namespace x = '" << static_context::ZORBA_XML_FN_NS << "';";
458+ << "import module namespace x = '" << static_context::ZORBA_XML_FN_NS << "';"
459+ << "import schema namespace opt = '" << static_context::ZORBA_XML_FN_OPTIONS_NS << "';";
460+
461 theContext->loadProlog(lProlog.str(), lHints);
462 }
463
464@@ -151,7 +153,7 @@
465 DocumentManager*
466 XmlDataManagerImpl::getDocumentManager() const
467 {
468- if (!theDocManager)
469+ if (!theDocManager)
470 {
471 theDocManager = new DocumentManagerImpl(theContext, theFactory);
472 theDocManager->registerDiagnosticHandler(theDiagnosticHandler);
473@@ -166,7 +168,7 @@
474 CollectionManager*
475 XmlDataManagerImpl::getCollectionManager() const
476 {
477- if (!theColManager)
478+ if (!theColManager)
479 {
480 theColManager = new CollectionManagerImpl(
481 theContext,
482@@ -185,7 +187,7 @@
483 CollectionManager*
484 XmlDataManagerImpl::getW3CCollectionManager() const
485 {
486- if (!theW3CColManager)
487+ if (!theW3CColManager)
488 {
489 theW3CColManager = new CollectionManagerImpl(
490 theContext,
491@@ -280,21 +282,34 @@
492 ZORBA_DM_TRY
493 {
494 Item lQName = theFactory->createQName(static_context::ZORBA_XML_FN_NS,
495- "parse-xml-fragment");
496+ "parse");
497
498 // create a streamable string item
499 std::vector<ItemSequence_t> lArgs;
500- lArgs.push_back(
501- new SingletonItemSequence(theFactory->createStreamableString(aStream,
502- &streamReleaser)));
503-
504- std::ostringstream lOptions;
505- lOptions << (aOptions.isDtdValidationEnabled()?"d":"D");
506-
507- lOptions << (aOptions.isExternalEntityProcessingEnabled()?"e":"E");
508-
509- lArgs.push_back(
510- new SingletonItemSequence(theFactory->createString(lOptions.str())));
511+ lArgs.push_back(new SingletonItemSequence(
512+ theFactory->createStreamableString(aStream, &streamReleaser)));
513+
514+ Item empty_item;
515+ Item validated_options;
516+ NsBindings nsPairs;
517+ Item untyped_type = theFactory->createQName("http://www.w3.org/2001/XMLSchema", "xs", "untyped");
518+ Item options_node = theFactory->createElementNode(empty_item,
519+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "options"),
520+ untyped_type, false, false, nsPairs);
521+
522+ if (aOptions.isDtdValidationEnabled())
523+ theFactory->createElementNode(options_node,
524+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "DTD-validate"),
525+ untyped_type, false, false, nsPairs);
526+
527+ if (aOptions.isExternalEntityProcessingEnabled())
528+ theFactory->createElementNode(options_node,
529+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "parse-external-parsed-entity"),
530+ untyped_type, false, false, nsPairs);
531+
532+ theContext->validate(options_node, validated_options, validate_strict);
533+
534+ lArgs.push_back(new SingletonItemSequence(validated_options));
535
536 return theContext->invoke(lQName, lArgs);
537 }
538@@ -315,23 +330,42 @@
539 ZORBA_DM_TRY
540 {
541 Item lQName = theFactory->createQName(static_context::ZORBA_XML_FN_NS,
542- "parse-xml-fragment");
543+ "parse");
544
545 // create a streamable string item
546 std::vector<ItemSequence_t> lArgs;
547- lArgs.push_back(
548- new SingletonItemSequence(theFactory->createStreamableString(aStream,
549- &streamReleaser)));
550- lArgs.push_back(
551- new SingletonItemSequence(theFactory->createString(aBaseURI)));
552-
553- std::ostringstream lOptions;
554- lOptions << (aOptions.isDtdValidationEnabled()?"d":"D");
555-
556- lOptions << (aOptions.isExternalEntityProcessingEnabled()?"e":"E");
557-
558- lArgs.push_back(
559- new SingletonItemSequence(theFactory->createString(lOptions.str())));
560+ lArgs.push_back(new SingletonItemSequence(
561+ theFactory->createStreamableString(aStream, &streamReleaser)));
562+
563+ Item empty_item;
564+ Item validated_options;
565+ NsBindings nsPairs;
566+ Item untyped_type = theFactory->createQName("http://www.w3.org/2001/XMLSchema", "xs", "untyped");
567+ Item options_node = theFactory->createElementNode(empty_item,
568+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "options"),
569+ untyped_type, false, false, nsPairs);
570+
571+ if (aOptions.isDtdValidationEnabled())
572+ theFactory->createElementNode(options_node,
573+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "DTD-validate"),
574+ untyped_type, false, false, nsPairs);
575+
576+ if (aOptions.isExternalEntityProcessingEnabled())
577+ theFactory->createElementNode(options_node,
578+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "parse-external-parsed-entity"),
579+ untyped_type, false, false, nsPairs);
580+
581+ Item base_uri_node = theFactory->createElementNode(options_node,
582+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "base-uri"),
583+ untyped_type, false, false, nsPairs);
584+ theFactory->createAttributeNode(base_uri_node,
585+ theFactory->createQName(static_context::ZORBA_XML_FN_OPTIONS_NS, "value"),
586+ Item(),
587+ theFactory->createString(aBaseURI));
588+
589+ theContext->validate(options_node, validated_options, validate_strict);
590+
591+ lArgs.push_back(new SingletonItemSequence(validated_options));
592
593 return theContext->invoke(lQName, lArgs);
594 }
595@@ -382,15 +416,15 @@
596 theDiagnosticHandler = aDiagnosticHandler;
597 theUserDiagnosticHandler = true;
598
599- if (theColManager)
600+ if (theColManager)
601 {
602 theColManager->registerDiagnosticHandler(theDiagnosticHandler);
603 }
604- if (theDocManager)
605+ if (theDocManager)
606 {
607 theDocManager->registerDiagnosticHandler(theDiagnosticHandler);
608 }
609- if (theW3CColManager)
610+ if (theW3CColManager)
611 {
612 theW3CColManager->registerDiagnosticHandler(theDiagnosticHandler);
613 }
614@@ -400,17 +434,17 @@
615 /*******************************************************************************
616
617 ********************************************************************************/
618-void XmlDataManagerImpl::registerStemmerProvider(StemmerProvider const *p)
619+void XmlDataManagerImpl::registerStemmerProvider(StemmerProvider const *p)
620 {
621 SYNC_CODE(AutoLatch lock(theLatch, Latch::WRITE);)
622- if ( theStemmerProviderWrapper )
623+ if ( theStemmerProviderWrapper )
624 {
625 if ( theStemmerProviderWrapper->get_provider() == p )
626 return;
627 delete theStemmerProviderWrapper;
628 theStemmerProviderWrapper = nullptr;
629 }
630- if ( p )
631+ if ( p )
632 {
633 theStemmerProviderWrapper = new internal::StemmerProviderWrapper( p );
634 theStore->setStemmerProvider( theStemmerProviderWrapper );
635@@ -421,7 +455,7 @@
636 /*******************************************************************************
637
638 ********************************************************************************/
639-void XmlDataManagerImpl::registerTokenizerProvider(TokenizerProvider const *p)
640+void XmlDataManagerImpl::registerTokenizerProvider(TokenizerProvider const *p)
641 {
642 SYNC_CODE(AutoLatch lock(theLatch, Latch::WRITE);)
643 theStore->setTokenizerProvider( p );
644
645=== modified file 'src/context/static_context.cpp'
646--- src/context/static_context.cpp 2012-03-07 15:49:25 +0000
647+++ src/context/static_context.cpp 2012-03-13 16:09:23 +0000
648@@ -273,11 +273,11 @@
649 static_context::W3C_XML_NS = "http://www.w3.org/XML/1998/namespace";
650
651 const char*
652-static_context::ZORBA_MATH_FN_NS =
653+static_context::ZORBA_MATH_FN_NS =
654 "http://www.zorba-xquery.com/modules/math";
655
656 const char*
657-static_context::ZORBA_BASE64_FN_NS =
658+static_context::ZORBA_BASE64_FN_NS =
659 "http://www.zorba-xquery.com/modules/converters/base64";
660
661
662@@ -286,11 +286,11 @@
663 "http://www.zorba-xquery.com/modules/converters/json";
664
665 const char*
666-static_context::ZORBA_NODEREF_FN_NS =
667+static_context::ZORBA_NODEREF_FN_NS =
668 "http://www.zorba-xquery.com/modules/node-reference";
669
670 const char*
671-static_context::ZORBA_NODEPOS_FN_NS =
672+static_context::ZORBA_NODEPOS_FN_NS =
673 "http://www.zorba-xquery.com/modules/node-position";
674
675 const char*
676@@ -298,71 +298,71 @@
677 "http://www.zorba-xquery.com/modules/store/dynamic/collections/ddl";
678
679 const char*
680-static_context::ZORBA_STORE_DYNAMIC_COLLECTIONS_DML_FN_NS =
681+static_context::ZORBA_STORE_DYNAMIC_COLLECTIONS_DML_FN_NS =
682 "http://www.zorba-xquery.com/modules/store/dynamic/collections/dml";
683
684 const char*
685-static_context::ZORBA_STORE_STATIC_COLLECTIONS_DDL_FN_NS =
686+static_context::ZORBA_STORE_STATIC_COLLECTIONS_DDL_FN_NS =
687 "http://www.zorba-xquery.com/modules/store/static/collections/ddl";
688
689 const char*
690-static_context::ZORBA_STORE_STATIC_COLLECTIONS_DML_FN_NS =
691+static_context::ZORBA_STORE_STATIC_COLLECTIONS_DML_FN_NS =
692 "http://www.zorba-xquery.com/modules/store/static/collections/dml";
693
694 const char*
695-static_context::ZORBA_STORE_STATIC_INDEXES_DDL_FN_NS =
696+static_context::ZORBA_STORE_STATIC_INDEXES_DDL_FN_NS =
697 "http://www.zorba-xquery.com/modules/store/static/indexes/ddl";
698
699 const char*
700-static_context::ZORBA_STORE_STATIC_INDEXES_DML_FN_NS =
701+static_context::ZORBA_STORE_STATIC_INDEXES_DML_FN_NS =
702 "http://www.zorba-xquery.com/modules/store/static/indexes/dml";
703
704 const char*
705-static_context::ZORBA_STORE_STATIC_INTEGRITY_CONSTRAINTS_DDL_FN_NS =
706+static_context::ZORBA_STORE_STATIC_INTEGRITY_CONSTRAINTS_DDL_FN_NS =
707 "http://www.zorba-xquery.com/modules/store/static/integrity_constraints/ddl";
708
709 const char*
710-static_context::ZORBA_STORE_STATIC_INTEGRITY_CONSTRAINTS_DML_FN_NS =
711+static_context::ZORBA_STORE_STATIC_INTEGRITY_CONSTRAINTS_DML_FN_NS =
712 "http://www.zorba-xquery.com/modules/store/static/integrity_constraints/dml";
713
714 const char*
715-static_context::ZORBA_STORE_DYNAMIC_DOCUMENTS_FN_NS =
716+static_context::ZORBA_STORE_DYNAMIC_DOCUMENTS_FN_NS =
717 "http://www.zorba-xquery.com/modules/store/dynamic/documents";
718
719 const char*
720-static_context::ZORBA_STORE_DYNAMIC_UNORDERED_MAP_FN_NS =
721+static_context::ZORBA_STORE_DYNAMIC_UNORDERED_MAP_FN_NS =
722 "http://www.zorba-xquery.com/modules/store/data-structures/unordered-map";
723
724 const char*
725-static_context::ZORBA_SCHEMA_FN_NS =
726+static_context::ZORBA_SCHEMA_FN_NS =
727 "http://www.zorba-xquery.com/modules/schema";
728
729 const char*
730-static_context::ZORBA_XQDOC_FN_NS =
731+static_context::ZORBA_XQDOC_FN_NS =
732 "http://www.zorba-xquery.com/modules/xqdoc";
733
734 const char*
735-static_context::ZORBA_RANDOM_FN_NS =
736+static_context::ZORBA_RANDOM_FN_NS =
737 "http://www.zorba-xquery.com/modules/random";
738
739 const char*
740-static_context::ZORBA_INTROSP_SCTX_FN_NS =
741+static_context::ZORBA_INTROSP_SCTX_FN_NS =
742 "http://www.zorba-xquery.com/modules/introspection/sctx";
743
744 const char*
745-static_context::ZORBA_REFLECTION_FN_NS =
746+static_context::ZORBA_REFLECTION_FN_NS =
747 "http://www.zorba-xquery.com/modules/reflection";
748
749 const char*
750-static_context::ZORBA_UTIL_FN_NS =
751+static_context::ZORBA_UTIL_FN_NS =
752 "http://www.zorba-xquery.com/zorba/util-functions";
753
754 const char*
755-static_context::ZORBA_SCRIPTING_FN_NS =
756+static_context::ZORBA_SCRIPTING_FN_NS =
757 "http://www.zorba-xquery.com/zorba/scripting";
758
759 const char*
760-static_context::ZORBA_STRING_FN_NS =
761+static_context::ZORBA_STRING_FN_NS =
762 "http://www.zorba-xquery.com/modules/string";
763
764 const char*
765@@ -374,45 +374,50 @@
766 "http://www.zorba-xquery.com/modules/fetch";
767
768 const char*
769-static_context::ZORBA_NODE_FN_NS =
770+static_context::ZORBA_NODE_FN_NS =
771 "http://www.zorba-xquery.com/modules/node";
772
773 const char*
774-static_context::ZORBA_XML_FN_NS =
775+static_context::ZORBA_XML_FN_NS =
776 "http://www.zorba-xquery.com/modules/xml";
777
778+const char*
779+static_context::ZORBA_XML_FN_OPTIONS_NS =
780+"http://www.zorba-xquery.com/modules/xml-options";
781+
782+
783 /***************************************************************************//**
784 Target namespaces of zorba reserved modules
785 ********************************************************************************/
786 const char*
787-static_context::XQUERY_OP_NS =
788+static_context::XQUERY_OP_NS =
789 "http://www.zorba-xquery.com/internal/xquery-ops";
790
791 const char*
792-static_context::ZORBA_OP_NS =
793+static_context::ZORBA_OP_NS =
794 "http://www.zorba-xquery.com/internal/zorba-ops";
795
796 /***************************************************************************//**
797 Options-related namespaces
798 ********************************************************************************/
799-const char*
800-static_context::ZORBA_OPTIONS_NS =
801+const char*
802+static_context::ZORBA_OPTIONS_NS =
803 "http://www.zorba-xquery.com/options";
804
805-const char*
806-static_context::ZORBA_OPTION_WARN_NS =
807+const char*
808+static_context::ZORBA_OPTION_WARN_NS =
809 "http://www.zorba-xquery.com/options/warnings";
810
811-const char*
812-static_context::ZORBA_OPTION_FEATURE_NS =
813+const char*
814+static_context::ZORBA_OPTION_FEATURE_NS =
815 "http://www.zorba-xquery.com/options/features";
816
817-const char*
818-static_context::ZORBA_OPTION_OPTIM_NS =
819+const char*
820+static_context::ZORBA_OPTION_OPTIM_NS =
821 "http://www.zorba-xquery.com/options/optimizer";
822
823-const char*
824-static_context::ZORBA_VERSIONING_NS =
825+const char*
826+static_context::ZORBA_VERSIONING_NS =
827 "http://www.zorba-xquery.com/options/versioning";
828
829
830@@ -450,7 +455,7 @@
831 ns == ZORBA_FETCH_FN_NS ||
832 ns == ZORBA_NODE_FN_NS ||
833 ns == ZORBA_XML_FN_NS);
834- }
835+ }
836 else if (ns == W3C_FN_NS || ns == XQUERY_MATH_FN_NS)
837 {
838 return true;
839@@ -527,7 +532,7 @@
840 if (lVarName == static_context::DOT_POS_VAR_NAME)
841 {
842 lVarName = "context position";
843- }
844+ }
845 else if (lVarName == static_context::DOT_SIZE_VAR_NAME)
846 {
847 lVarName = "context size";
848@@ -715,7 +720,7 @@
849
850 if (theVariablesMap)
851 delete theVariablesMap;
852-
853+
854 if (theImportedPrivateVariablesMap)
855 delete theImportedPrivateVariablesMap;
856
857@@ -963,7 +968,7 @@
858 ar & theContextItemType;
859
860 ar & theVariablesMap;
861- ar & theImportedPrivateVariablesMap;
862+ ar & theImportedPrivateVariablesMap;
863
864 ar.set_serialize_only_for_eval(true);
865 ar & theFunctionMap;
866@@ -1464,7 +1469,7 @@
867
868 ********************************************************************************/
869 std::auto_ptr<internal::Resource> static_context::resolve_uri(
870- zstring const& aUri,
871+ zstring const& aUri,
872 internal::EntityData::Kind aEntityKind,
873 zstring& oErrorMessage) const
874 {
875@@ -1496,7 +1501,7 @@
876 internal::EntityData const lData(aEntityKind);
877
878 apply_uri_mappers(aUri, &lData, internal::URIMapper::COMPONENT, oComponents);
879- if (oComponents.size() == 0)
880+ if (oComponents.size() == 0)
881 {
882 oComponents.push_back(aUri);
883 }
884@@ -1507,9 +1512,9 @@
885
886 ********************************************************************************/
887 void static_context::apply_uri_mappers(
888- zstring const& aUri,
889+ zstring const& aUri,
890 internal::EntityData const* aEntityData,
891- internal::URIMapper::Kind aMapperKind,
892+ internal::URIMapper::Kind aMapperKind,
893 std::vector<zstring>& oUris) const
894 {
895 // Initialize list with the one input URI.
896@@ -1525,7 +1530,7 @@
897 mapper != sctx->theURIMappers.end(); mapper++)
898 {
899 // Only call mappers of the appropriate kind
900- if ((*mapper)->mapperKind() != aMapperKind)
901+ if ((*mapper)->mapperKind() != aMapperKind)
902 {
903 continue;
904 }
905@@ -1541,16 +1546,16 @@
906 size_t const lPreNumResultUris = lResultUris.size();
907 (*mapper)->mapURI(*uri, aEntityData, *this, lResultUris);
908 size_t const lPostNumResultUris = lResultUris.size();
909- if (lPreNumResultUris == lPostNumResultUris)
910+ if (lPreNumResultUris == lPostNumResultUris)
911 {
912 // Mapper didn't map this URI to anything new, therefore add
913 // the original URI to the result list
914 lResultUris.push_back(*uri);
915 }
916- else
917+ else
918 {
919 // Check the new entries for DENY_ACCESS.
920- for (size_t i = lPreNumResultUris; i < lPostNumResultUris; i++)
921+ for (size_t i = lPreNumResultUris; i < lPostNumResultUris; i++)
922 {
923 if (lResultUris.at(i) == internal::URIMapper::DENY_ACCESS) {
924 throw XQUERY_EXCEPTION(zerr::ZXQP0029_URI_ACCESS_DENIED,
925@@ -1574,14 +1579,14 @@
926 void static_context::apply_url_resolvers(
927 std::vector<zstring>& aUrls,
928 internal::EntityData const* aEntityData,
929- std::auto_ptr<internal::Resource>& oResource,
930+ std::auto_ptr<internal::Resource>& oResource,
931 zstring& oErrorMessage) const
932 {
933 oErrorMessage = "";
934
935 // Iterate through all candidate URLs...
936 for (std::vector<zstring>::iterator url = aUrls.begin();
937- url != aUrls.end(); url++)
938+ url != aUrls.end(); url++)
939 {
940 // We should never try to load the http-client module using its original URI,
941 // because that URI starts with http:, so we'll try to load the http-client
942@@ -1600,7 +1605,7 @@
943 sctx->theURLResolvers.begin();
944 resolver != sctx->theURLResolvers.end(); resolver++)
945 {
946- try
947+ try
948 {
949 // Take ownership of returned Resource (if any)
950 oResource.reset((*resolver)->resolveURL(*url, aEntityData));
951@@ -1611,15 +1616,15 @@
952 return;
953 }
954 }
955- catch (const std::exception& e)
956+ catch (const std::exception& e)
957 {
958- if (oErrorMessage == "")
959+ if (oErrorMessage == "")
960 {
961 // Really no point in saving anything more than the first message
962 oErrorMessage = e.what();
963 }
964 }
965- catch (...)
966+ catch (...)
967 {
968 // Not much we can do here except try the rest of the
969 // candidate URIs
970@@ -2169,7 +2174,7 @@
971 {
972 if (externalVarsOnly)
973 {
974- if((*ite).second->is_external())
975+ if((*ite).second->is_external())
976 vars.push_back((*ite).second);
977 }
978 else
979@@ -2179,7 +2184,7 @@
980 }
981 }
982 }
983-
984+
985 if (returnPrivateVars && sctx->theImportedPrivateVariablesMap != NULL)
986 {
987 VariableMap::iterator ite = sctx->theImportedPrivateVariablesMap->begin();
988@@ -2199,7 +2204,7 @@
989 {
990 if(externalVarsOnly)
991 {
992- if((*ite).second->is_external())
993+ if((*ite).second->is_external())
994 vars.push_back((*ite).second);
995 }
996 else
997@@ -3220,11 +3225,11 @@
998 PrologOption option(qname, value);
999
1000 store::Item* qname2 = option.theName.getp();
1001-
1002+
1003 zstring lNamespace = qname2->getNamespace();
1004
1005 // If option namespace starts with zorba options namespace
1006- if ( lNamespace.find(ZORBA_OPTIONS_NS) == 0 )
1007+ if ( lNamespace.find(ZORBA_OPTIONS_NS) == 0 )
1008 {
1009 zstring lLocalName = qname2->getLocalName();
1010
1011@@ -3239,7 +3244,7 @@
1012 process_feature_option(lVal1, lLocalName == "enable", loc);
1013 lCommaFound = true;
1014 }
1015- process_feature_option(lCommaFound ? lVal2 : lVal1,
1016+ process_feature_option(lCommaFound ? lVal2 : lVal1,
1017 lLocalName == "enable",
1018 loc);
1019 }
1020@@ -3254,7 +3259,7 @@
1021 process_optim_option(lVal1, lLocalName == "enable", loc);
1022 lCommaFound = true;
1023 }
1024- process_optim_option(lCommaFound ? lVal2 : lVal1,
1025+ process_optim_option(lCommaFound ? lVal2 : lVal1,
1026 lLocalName == "enable",
1027 loc);
1028 }
1029@@ -3282,7 +3287,7 @@
1030 // Re-use "ModuleVersion" class since it does 98% of the work for us;
1031 // just use a fake URI
1032 ModuleVersion lOptVersion(zstring(ZORBA_VERSIONING_NS) + "/corezorba", value);
1033- if (! lOptVersion.is_valid_version())
1034+ if (! lOptVersion.is_valid_version())
1035 {
1036 RAISE_ERROR(zerr::ZXQP0039_INVALID_VERSION_SPECIFICATION, loc,
1037 ERROR_PARAMS(value));
1038@@ -3291,7 +3296,7 @@
1039 ModuleVersion lZorbaVersion(zstring(ZORBA_VERSIONING_NS) + "/corezorba",
1040 ZORBA_VERSION);
1041
1042- if ( ! lZorbaVersion.satisfies(lOptVersion))
1043+ if ( ! lZorbaVersion.satisfies(lOptVersion))
1044 {
1045 RAISE_ERROR(zerr::ZXQP0038_INAPPROPRIATE_ZORBA_VERSION, loc,
1046 ERROR_PARAMS(value, ZORBA_VERSION));
1047@@ -3301,7 +3306,7 @@
1048
1049 // If the option is in (starts-with) Zorba's own namespace but not known,
1050 // we raise an error
1051- else
1052+ else
1053 {
1054 RAISE_ERROR(zerr::ZXQP0060_OPTION_NOT_KNOWN, loc,
1055 ERROR_PARAMS(qname2->getNamespace() + ":" + qname2->getLocalName()));
1056@@ -3352,7 +3357,7 @@
1057 const zstring& name,
1058 const QueryLoc& loc)
1059 {
1060- store::Item_t lQName = parse_and_expand_qname( value, ZORBA_WARN_NS, loc );
1061+ store::Item_t lQName = parse_and_expand_qname( value, ZORBA_WARN_NS, loc );
1062
1063 std::vector<store::Item_t>::iterator lIter;
1064
1065@@ -3418,7 +3423,7 @@
1066 RAISE_ERROR(zerr::ZDST0060_FEATURE_NOT_SUPPORTED, loc,
1067 ERROR_PARAMS(featureName->getStringValue(),
1068 ZED(ZDST0060_unknown_namespace),
1069- featureName->getNamespace()));
1070+ featureName->getNamespace()));
1071 }
1072
1073 feature::kind k;
1074@@ -3434,7 +3439,7 @@
1075 RAISE_ERROR(zerr::ZDST0060_FEATURE_NOT_SUPPORTED, loc,
1076 ERROR_PARAMS(featureName->getStringValue(),
1077 ZED(ZDST0060_unknown_localname),
1078- featureName->getLocalName()));
1079+ featureName->getLocalName()));
1080 }
1081 }
1082
1083@@ -3450,7 +3455,7 @@
1084 if (value != "for-serialization-only")
1085 {
1086 RAISE_ERROR(zerr::ZDST0060_FEATURE_NOT_SUPPORTED, loc,
1087- ERROR_PARAMS(value, ZED(ZDST0060_unknown_localname), value));
1088+ ERROR_PARAMS(value, ZED(ZDST0060_unknown_localname), value));
1089 }
1090 }
1091
1092@@ -3974,11 +3979,11 @@
1093 {
1094 theImportedPrivateVariablesMap = new VariableMap(0, NULL, 8, false);
1095 }
1096-
1097+
1098 if (!theImportedPrivateVariablesMap->insert(ve->get_name(), ve))
1099 {
1100 throw XQUERY_EXCEPTION_VAR(err::XQST0049, ERROR_PARAMS( ve->get_name()->getStringValue() ), ERROR_LOC( loc ));
1101- }
1102+ }
1103 }
1104 }
1105 }
1106
1107=== modified file 'src/context/static_context.h'
1108--- src/context/static_context.h 2012-03-07 15:49:25 +0000
1109+++ src/context/static_context.h 2012-03-13 16:09:23 +0000
1110@@ -273,7 +273,7 @@
1111 theExternalModulesMap :
1112 -----------------------
1113
1114- theTypeMnager :
1115+ theTypeManager :
1116 ---------------
1117 If non NULL, then "this" is the root sctx of a module, and theTypeManager stores
1118 the schemas that are imported by the associated module (in-scope element
1119@@ -296,7 +296,7 @@
1120
1121 theVariablesMap :
1122 -----------------
1123-
1124+
1125 theImportedPrivateVariablesMap :
1126 --------------------------------
1127
1128@@ -469,6 +469,7 @@
1129 static const char* ZORBA_FETCH_FN_NS;
1130 static const char* ZORBA_NODE_FN_NS;
1131 static const char* ZORBA_XML_FN_NS;
1132+ static const char* ZORBA_XML_FN_OPTIONS_NS;
1133
1134 // Namespaces of virtual modules declaring zorba builtin functions
1135 static const char* ZORBA_UTIL_FN_NS;
1136@@ -522,7 +523,7 @@
1137 xqtref_t theContextItemType;
1138
1139 VariableMap * theVariablesMap;
1140-
1141+
1142 VariableMap * theImportedPrivateVariablesMap;
1143
1144 FunctionMap * theFunctionMap;
1145
1146=== modified file 'src/diagnostics/diagnostic_en.xml'
1147--- src/diagnostics/diagnostic_en.xml 2012-03-12 23:43:56 +0000
1148+++ src/diagnostics/diagnostic_en.xml 2012-03-13 16:09:23 +0000
1149@@ -1753,7 +1753,7 @@
1150 </diagnostic>
1151
1152 <diagnostic code="ZXQD0003" name="INCONSISTENT_PARSE_FRAGMENT_OPTIONS">
1153- <value>inconsistent options to the parse-xml-fragment() function: $1</value>
1154+ <value>inconsistent options to the parse-xml() function: $1</value>
1155 </diagnostic>
1156
1157 <diagnostic code="ZXQD0004" name="INVALID_PARAMETER">
1158@@ -2620,6 +2620,10 @@
1159 <entry key="BadXMLDocument_2o">
1160 <value>malformed XML document${ at "2"}</value>
1161 </entry>
1162+
1163+ <entry key="BadXMLNoOpeningTag">
1164+ <value>closing tag without matching opening tag</value>
1165+ </entry>
1166
1167 <entry key="BadXMLForXQDoc_3">
1168 <value>can not parse as XML for xqdoc: $3</value>
1169@@ -3517,12 +3521,12 @@
1170 <value>xqueryx content is empty</value>
1171 </entry>
1172
1173- <entry key="ParseFragmentOptionDSLNotAllowed">
1174- <value>if the e option is specified, none of the options d, s, or l may be enabled</value>
1175- </entry>
1176-
1177 <entry key="ParseFragmentOptionCombinationNotAllowed">
1178- <value>specifying both $2 and $3 is an error</value>
1179+ <value>only one of the &lt;schema-validate/&gt;, &lt;DTD-validate/&gt; or &lt;parse-external-parsed-entity/&gt; options can be specified</value>
1180+ </entry>
1181+
1182+ <entry key="ParseFragmentInvalidOptions">
1183+ <value>invalid options passed to the parse-xml:parse() function, the element must in the schema target namespace</value>
1184 </entry>
1185
1186 </subvalues>
1187
1188=== modified file 'src/diagnostics/pregenerated/dict_en.cpp'
1189--- src/diagnostics/pregenerated/dict_en.cpp 2012-03-12 23:43:56 +0000
1190+++ src/diagnostics/pregenerated/dict_en.cpp 2012-03-13 16:09:23 +0000
1191@@ -386,7 +386,7 @@
1192 { "ZWST0006", "\"$1\": function caching might not give the intended result because the function is declared as $2" },
1193 { "ZXQD0001", "\"$1\": prefix not declared when calling function \"$2\" from $3" },
1194 { "ZXQD0002", "\"$1\": $2" },
1195- { "ZXQD0003", "inconsistent options to the parse-xml-fragment() function: $1" },
1196+ { "ZXQD0003", "inconsistent options to the parse-xml() function: $1" },
1197 { "ZXQD0004", "invalid parameter: $1" },
1198 { "ZXQD0005", "key with type $1 not subtype or castable to target type $2 of map ($3)" },
1199 { "ZXQD0006", "\"$1\": invalid UTF-8 byte sequence" },
1200@@ -464,6 +464,7 @@
1201 { "~BadWordNetPtr_2", "\"$2\": invalid pointer type" },
1202 { "~BadXMLDocument_2o", "malformed XML document${ at \"2\"}" },
1203 { "~BadXMLForXQDoc_3", "can not parse as XML for xqdoc: $3" },
1204+ { "~BadXMLNoOpeningTag", "closing tag without matching opening tag" },
1205 { "~BadXQueryVersion", "unsupported XQuery version" },
1206 { "~Base64BadChar", "invalid Base64 character" },
1207 { "~Base64Equals", "in Base64, '=' must be at the end and followed by one of [AEIMQUYcgkosw048]" },
1208@@ -582,8 +583,8 @@
1209 { "~OpNodeBeforeMustHaveNodes", "op:node-before() must have nodes as parameters" },
1210 { "~OperationNotDef_23", "$2 not defined for type \"$3\"" },
1211 { "~OperationNotPossibleWithTypes_234", "\"$2\": operation not possible with parameters of type \"$3\" and \"$4\"" },
1212- { "~ParseFragmentOptionCombinationNotAllowed", "specifying both $2 and $3 is an error" },
1213- { "~ParseFragmentOptionDSLNotAllowed", "if the e option is specified, none of the options d, s, or l may be enabled" },
1214+ { "~ParseFragmentInvalidOptions", "invalid options passed to the parse-xml:parse() function, the element must in the schema target namespace" },
1215+ { "~ParseFragmentOptionCombinationNotAllowed", "only one of the <schema-validate/>, <DTD-validate/> or <parse-external-parsed-entity/> options can be specified" },
1216 { "~ParserInitFailed", "parser initialization failed" },
1217 { "~ParserNoCreateTree", "XML tree creation failed" },
1218 { "~PromotionImpossible", "promotion not possible" },
1219
1220=== modified file 'src/functions/pregenerated/func_parse_fragment.cpp'
1221--- src/functions/pregenerated/func_parse_fragment.cpp 2012-02-16 12:48:17 +0000
1222+++ src/functions/pregenerated/func_parse_fragment.cpp 2012-03-13 16:09:23 +0000
1223@@ -31,7 +31,7 @@
1224
1225
1226
1227-PlanIter_t fn_zorba_xml_parse_xml_fragment::codegen(
1228+PlanIter_t fn_zorba_xml_parse::codegen(
1229 CompilerCB*,
1230 static_context* sctx,
1231 const QueryLoc& loc,
1232@@ -46,26 +46,12 @@
1233 {
1234
1235
1236- DECL_WITH_KIND(sctx, fn_zorba_xml_parse_xml_fragment,
1237- (createQName("http://www.zorba-xquery.com/modules/xml","","parse-xml-fragment"),
1238- GENV_TYPESYSTEM.STRING_TYPE_QUESTION,
1239- GENV_TYPESYSTEM.STRING_TYPE_ONE,
1240- GENV_TYPESYSTEM.ANY_NODE_TYPE_STAR),
1241- FunctionConsts::FN_ZORBA_XML_PARSE_XML_FRAGMENT_2);
1242-
1243- }
1244-
1245-
1246- {
1247-
1248-
1249- DECL_WITH_KIND(sctx, fn_zorba_xml_parse_xml_fragment,
1250- (createQName("http://www.zorba-xquery.com/modules/xml","","parse-xml-fragment"),
1251- GENV_TYPESYSTEM.STRING_TYPE_QUESTION,
1252- GENV_TYPESYSTEM.STRING_TYPE_ONE,
1253- GENV_TYPESYSTEM.STRING_TYPE_ONE,
1254- GENV_TYPESYSTEM.ANY_NODE_TYPE_STAR),
1255- FunctionConsts::FN_ZORBA_XML_PARSE_XML_FRAGMENT_3);
1256+ DECL_WITH_KIND(sctx, fn_zorba_xml_parse,
1257+ (createQName("http://www.zorba-xquery.com/modules/xml","","parse"),
1258+ GENV_TYPESYSTEM.STRING_TYPE_QUESTION,
1259+ GENV_TYPESYSTEM.ELEMENT_TYPE_QUESTION,
1260+ GENV_TYPESYSTEM.ANY_NODE_TYPE_STAR),
1261+ FunctionConsts::FN_ZORBA_XML_PARSE_2);
1262
1263 }
1264
1265
1266=== modified file 'src/functions/pregenerated/func_parse_fragment.h'
1267--- src/functions/pregenerated/func_parse_fragment.h 2012-01-11 17:30:25 +0000
1268+++ src/functions/pregenerated/func_parse_fragment.h 2012-03-13 16:09:23 +0000
1269@@ -38,11 +38,11 @@
1270
1271
1272
1273-//fn-zorba-xml:parse-xml-fragment
1274-class fn_zorba_xml_parse_xml_fragment : public function
1275+//fn-zorba-xml:parse
1276+class fn_zorba_xml_parse : public function
1277 {
1278 public:
1279- fn_zorba_xml_parse_xml_fragment(const signature& sig, FunctionConsts::FunctionKind kind)
1280+ fn_zorba_xml_parse(const signature& sig, FunctionConsts::FunctionKind kind)
1281 :
1282 function(sig, kind)
1283 {
1284
1285=== modified file 'src/functions/pregenerated/function_enum.h'
1286--- src/functions/pregenerated/function_enum.h 2012-03-08 18:51:25 +0000
1287+++ src/functions/pregenerated/function_enum.h 2012-03-13 16:09:23 +0000
1288@@ -256,8 +256,7 @@
1289 FN_FORMAT_NUMBER_3,
1290 FN_FORMAT_INTEGER_2,
1291 FN_FORMAT_INTEGER_3,
1292- FN_ZORBA_XML_PARSE_XML_FRAGMENT_2,
1293- FN_ZORBA_XML_PARSE_XML_FRAGMENT_3,
1294+ FN_ZORBA_XML_PARSE_2,
1295 FN_PARSE_XML_1,
1296 FN_PARSE_XML_2,
1297 FN_SERIALIZE_1,
1298
1299=== modified file 'src/runtime/parsing_and_serializing/fragment_istream.h' (properties changed: +x to -x)
1300--- src/runtime/parsing_and_serializing/fragment_istream.h 2011-07-16 13:33:13 +0000
1301+++ src/runtime/parsing_and_serializing/fragment_istream.h 2012-03-13 16:09:23 +0000
1302@@ -18,55 +18,99 @@
1303 #define ZORBA_RUNTIME_PARSING_AND_SERIALIZING_FRAGMENT_ISTREAM_H
1304
1305 #include <iostream>
1306+#include <libxml/parser.h>
1307+#include <store/api/iterator.h>
1308
1309 namespace zorba {
1310
1311 /**
1312- * A class to hold an input stream for the parse-xml-fragment function
1313- * Author: Zorba Team
1314+ * A class to hold an input stream for the parse-xml:parse() function
1315+ * Author: Nicolae Brinza
1316 */
1317 class FragmentIStream : public std::istream
1318 {
1319 public:
1320+ static const unsigned int BUFFER_SIZE = 4096;
1321+ static const unsigned int LOOKAHEAD_BYTES = 3; // lookahead fetching is implemented, but currently not used
1322+ static const unsigned int PARSED_NODES_BATCH_SIZE = 1024;
1323+
1324+public:
1325 FragmentIStream()
1326 :
1327 std::istream(NULL),
1328 theIss(NULL),
1329 theStream(NULL),
1330 theBuffer(NULL),
1331- buffer_size(0),
1332- current_offset(0)
1333+ bytes_in_buffer(0),
1334+ current_offset(0),
1335+ current_element_depth(0),
1336+ root_elements_to_skip(0),
1337+ ctxt(NULL),
1338+ first_start_doc(true),
1339+ forced_parser_stop(false),
1340+ reached_eof(false),
1341+ parsed_nodes_count(0),
1342+ children(NULL)
1343 {
1344 };
1345
1346+ bool stream_is_consumed()
1347+ {
1348+ return reached_eof && current_offset >= bytes_in_buffer;
1349+ }
1350+
1351 void reset()
1352 {
1353 if (theBuffer)
1354+ {
1355 delete[] theBuffer;
1356+ }
1357+
1358 if (theIss)
1359+ {
1360 delete theIss;
1361+ }
1362+
1363+ if (ctxt)
1364+ {
1365+ xmlCtxtReset(ctxt);
1366+ xmlFreeParserCtxt(ctxt);
1367+ }
1368
1369 theIss = NULL;
1370 theStream = NULL;
1371 theBuffer = NULL;
1372- buffer_size = 0;
1373+ bytes_in_buffer = 0;
1374 current_offset = 0;
1375+ current_element_depth = 0;
1376+ root_elements_to_skip = 0;
1377+ ctxt = NULL;
1378+ first_start_doc = true;
1379+ forced_parser_stop = false;
1380+ reached_eof = false;
1381+ parsed_nodes_count = 0;
1382+ children = NULL;
1383 }
1384
1385 virtual ~FragmentIStream()
1386 {
1387- if (theBuffer)
1388- delete[] theBuffer;
1389- if (theIss)
1390- delete theIss;
1391+ reset();
1392 }
1393
1394 public:
1395 std::istringstream* theIss;
1396 std::istream* theStream;
1397 char* theBuffer;
1398- unsigned long buffer_size;
1399+ unsigned long bytes_in_buffer;
1400 unsigned long current_offset;
1401+ int current_element_depth;
1402+ int root_elements_to_skip;
1403+ xmlParserCtxtPtr ctxt;
1404+ bool first_start_doc;
1405+ bool forced_parser_stop;
1406+ bool reached_eof;
1407+ unsigned int parsed_nodes_count;
1408+ store::Iterator_t children;
1409 };
1410
1411 }
1412
1413=== modified file 'src/runtime/parsing_and_serializing/parse_fragment_impl.cpp' (properties changed: +x to -x)
1414--- src/runtime/parsing_and_serializing/parse_fragment_impl.cpp 2011-08-10 02:50:23 +0000
1415+++ src/runtime/parsing_and_serializing/parse_fragment_impl.cpp 2012-03-13 16:09:23 +0000
1416@@ -25,117 +25,150 @@
1417 #include "store/api/store.h"
1418 #include "store/api/item.h"
1419 #include "store/api/item_factory.h"
1420+#include "store/api/load_properties.h"
1421
1422 #include "system/globalenv.h"
1423
1424 #include "types/schema/schema.h"
1425 #include "types/schema/validate.h"
1426
1427+
1428 namespace zorba
1429 {
1430
1431 /*******************************************************************************
1432- 14.9.1 fn-zorba-xml:parse-xml-fragment
1433+ 14.9.1 fn-zorba-xml:parse
1434 ********************************************************************************/
1435
1436-class ParseXmlFragmentOptions
1437-{
1438-public:
1439- // all options are false by default, except for enableFatelErrorProcessing which is true
1440- bool enableExternalEntitiesProcessing;
1441- bool enableDTDValidation;
1442- bool enableStrictSchemaValidation;
1443- bool enableLaxSchemaValidation;
1444- bool enableWhitespaceStripping;
1445- bool enableFatelErrorProcessing;
1446-
1447-public:
1448- ParseXmlFragmentOptions() :
1449- enableExternalEntitiesProcessing(false),
1450- enableDTDValidation(false),
1451- enableStrictSchemaValidation(false),
1452- enableLaxSchemaValidation(false),
1453- enableWhitespaceStripping(false),
1454- enableFatelErrorProcessing(true) // only enableFatelErrorProcessing is set to true
1455- {
1456- }
1457-
1458- void reset()
1459- {
1460- enableExternalEntitiesProcessing = false;
1461- enableDTDValidation = false;
1462- enableStrictSchemaValidation = false;
1463- enableLaxSchemaValidation = false;
1464- enableWhitespaceStripping = false;
1465- enableFatelErrorProcessing = true; // only enableFatelErrorProcessing is set to true
1466- }
1467-
1468- static ParseXmlFragmentOptions parseOptions(const zstring& options, const QueryLoc& loc)
1469- {
1470- ParseXmlFragmentOptions opt;
1471-
1472- if (options.find("e") != zstring::npos && options.find("E") != zstring::npos)
1473- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1474- ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed), "e", "E"), ERROR_LOC( loc ));
1475-
1476- if (options.find("d") != zstring::npos && options.find("D") != zstring::npos)
1477- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1478- ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed), "d", "D"), ERROR_LOC( loc ));
1479-
1480- if (options.find("s") != zstring::npos && options.find("S") != zstring::npos)
1481- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1482- ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed), "s", "S"), ERROR_LOC( loc ));
1483-
1484- if (options.find("l") != zstring::npos && options.find("L") != zstring::npos)
1485- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1486- ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed), "l", "L"), ERROR_LOC( loc ));
1487-
1488- if (options.find("w") != zstring::npos && options.find("W") != zstring::npos)
1489- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1490- ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed), "w", "W"), ERROR_LOC( loc ));
1491-
1492- if (options.find("f") != zstring::npos && options.find("F") != zstring::npos)
1493- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1494- ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed), "f", "F"), ERROR_LOC( loc ));
1495-
1496- if (options.find("e") != zstring::npos)
1497- opt.enableExternalEntitiesProcessing = true;
1498- if (options.find("d") != zstring::npos)
1499- opt.enableDTDValidation = true;
1500- if (options.find("s") != zstring::npos)
1501- opt.enableStrictSchemaValidation = true;
1502- if (options.find("l") != zstring::npos)
1503- opt.enableLaxSchemaValidation = true;
1504- if (options.find("w") != zstring::npos)
1505- opt.enableWhitespaceStripping = true;
1506- if (options.find("f") != zstring::npos)
1507- opt.enableFatelErrorProcessing = true;
1508-
1509- if (options.find("E") != zstring::npos)
1510- opt.enableExternalEntitiesProcessing = false;
1511- if (options.find("D") != zstring::npos)
1512- opt.enableDTDValidation = false;
1513- if (options.find("S") != zstring::npos)
1514- opt.enableStrictSchemaValidation = false;
1515- if (options.find("L") != zstring::npos)
1516- opt.enableLaxSchemaValidation = false;
1517- if (options.find("W") != zstring::npos)
1518- opt.enableWhitespaceStripping = false;
1519- if (options.find("F") != zstring::npos)
1520- opt.enableFatelErrorProcessing = false;
1521-
1522- if (opt.enableExternalEntitiesProcessing
1523- &&
1524- (opt.enableDTDValidation || opt.enableStrictSchemaValidation || opt.enableLaxSchemaValidation))
1525- {
1526- throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1527- ERROR_PARAMS(ZED(ParseFragmentOptionDSLNotAllowed)), ERROR_LOC( loc ));
1528- }
1529-
1530- return opt;
1531- }
1532-};
1533-
1534+store::Item_t getFirstAttribute(store::Item_t node)
1535+{
1536+ store::Item_t attr;
1537+ store::Iterator_t attributes = node->getAttributes();
1538+ attributes->open();
1539+ attributes->next(attr);
1540+ attributes->close();
1541+ return attr;
1542+}
1543+
1544+void processOptions(store::Item_t item, store::LoadProperties& props, static_context* theSctx, const QueryLoc& loc)
1545+{
1546+ URI lValidatedBaseUri;
1547+ store::Item_t child, tempItem;
1548+
1549+ if (item.getp() == NULL)
1550+ return;
1551+
1552+#ifndef ZORBA_NO_XMLSCHEMA
1553+ if (item->isValidated())
1554+ {
1555+ if (item->getNodeName() == NULL
1556+ ||
1557+ item->getNodeName()->getNamespace() != static_context::ZORBA_XML_FN_OPTIONS_NS)
1558+ {
1559+ throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1560+ ERROR_PARAMS(ZED(ParseFragmentInvalidOptions)), ERROR_LOC( loc ));
1561+ }
1562+ }
1563+ else
1564+ {
1565+ tempItem = NULL; // used as the effectiveValidationValue()'s typeName
1566+ Validator::effectiveValidationValue(
1567+ item,
1568+ item,
1569+ tempItem,
1570+ theSctx->get_typemanager(),
1571+ ParseConstants::val_strict,
1572+ theSctx,
1573+ loc);
1574+ }
1575+#endif
1576+
1577+ store::Iterator_t children = item->getChildren();
1578+ children->open();
1579+
1580+ while (children->next(child))
1581+ {
1582+ if (child->getNodeKind() != store::StoreConsts::elementNode)
1583+ continue;
1584+
1585+ if (child->getNodeName()->getLocalName() == "base-uri")
1586+ {
1587+ store::Item_t attr = getFirstAttribute(child);
1588+
1589+ try {
1590+ lValidatedBaseUri = URI(attr->getStringValue());
1591+ } catch (ZorbaException const& /* e */) {
1592+ throw XQUERY_EXCEPTION(
1593+ err::FODC0007,
1594+ ERROR_PARAMS( attr->getStringValue() ),
1595+ ERROR_LOC( loc )
1596+ );
1597+ }
1598+
1599+ if (!lValidatedBaseUri.is_absolute()) {
1600+ throw XQUERY_EXCEPTION(
1601+ err::FODC0007,
1602+ ERROR_PARAMS( lValidatedBaseUri.toString() ),
1603+ ERROR_LOC( loc )
1604+ );
1605+ }
1606+
1607+ props.setBaseUri(attr->getStringValue());
1608+ }
1609+ else if (child->getNodeName()->getLocalName() == "no-error")
1610+ props.setNoError(true);
1611+ else if (child->getNodeName()->getLocalName() == "strip-boundary-space")
1612+ props.setStripWhitespace(true);
1613+ else if (child->getNodeName()->getLocalName() == "schema-validate")
1614+ {
1615+ store::Item_t attr = getFirstAttribute(child);
1616+ if (attr->getStringValue() == "strict")
1617+ props.setSchemaStrictValidate(true);
1618+ else
1619+ props.setSchemaLaxValidate(true);
1620+ }
1621+ else if (child->getNodeName()->getLocalName() == "DTD-validate")
1622+ props.setDTDValidate(true);
1623+ else if (child->getNodeName()->getLocalName() == "DTD-load")
1624+ props.setDTDLoad(true);
1625+ else if (child->getNodeName()->getLocalName() == "default-DTD-attributes")
1626+ props.setDefaultDTDAttributes(true);
1627+ else if (child->getNodeName()->getLocalName() == "parse-external-parsed-entity")
1628+ {
1629+ props.setParseExternalParsedEntity(true);
1630+ store::Item_t attr;
1631+ store::Iterator_t attribs = child->getAttributes();
1632+ attribs->open();
1633+ while (attribs->next(attr))
1634+ {
1635+ if (attr->getNodeName()->getLocalName() == "skip-root-nodes")
1636+ props.setSkipRootNodes(ztd::aton<xs_int>(attr->getStringValue().c_str()));
1637+ else if (attr->getNodeName()->getLocalName() == "skip-top-level-text-nodes")
1638+ props.setSkipTopLevelTextNodes(true);
1639+ }
1640+ attribs->close();
1641+ }
1642+ else if (child->getNodeName()->getLocalName() == "substitute-entities")
1643+ props.setSubstituteEntities(true);
1644+ else if (child->getNodeName()->getLocalName() == "xinclude-substitutions")
1645+ props.setXincludeSubstitutions(true);
1646+ else if (child->getNodeName()->getLocalName() == "remove-redundant-ns")
1647+ props.setRemoveRedundantNS(true);
1648+ else if (child->getNodeName()->getLocalName() == "no-CDATA")
1649+ props.setNoCDATA(true);
1650+ else if (child->getNodeName()->getLocalName() == "no-xinclude-nodes")
1651+ props.setNoXIncludeNodes(true);
1652+ }
1653+
1654+ children->close();
1655+
1656+ if (props.getSchemaLaxValidate() + props.getSchemaStrictValidate() +
1657+ props.getDTDValidate() + props.getParseExternalParsedEntity() > 1)
1658+ {
1659+ throw XQUERY_EXCEPTION(zerr::ZXQD0003_INCONSISTENT_PARSE_FRAGMENT_OPTIONS,
1660+ ERROR_PARAMS(ZED(ParseFragmentOptionCombinationNotAllowed)), ERROR_LOC( loc ));
1661+ }
1662+}
1663
1664 /*******************************************************************************
1665
1666@@ -145,8 +178,7 @@
1667 {
1668 PlanIteratorState::reset(planState);
1669 theFragmentStream.reset();
1670- theProperties.setEnableDtd(false);
1671- theProperties.setEnableExtParsedEntity(false);
1672+ theProperties.reset();
1673 theProperties.setStoreDocument(false);
1674 baseUri = "";
1675 docUri = "";
1676@@ -161,9 +193,7 @@
1677 {
1678 store::Store& lStore = GENV.getStore();
1679 zstring docString;
1680- URI lValidatedBaseUri;
1681 store::Item_t tempItem;
1682- ParseXmlFragmentOptions parseOptions;
1683 bool validated = true;
1684
1685 FnParseXmlFragmentIteratorState* state;
1686@@ -182,87 +212,61 @@
1687 state->theFragmentStream.theStream = state->theFragmentStream.theIss;
1688 }
1689
1690- // optional base URI argument
1691- if (theChildren.size() == 3)
1692- {
1693- consumeNext(result, theChildren[1].getp(), planState);
1694- ZORBA_ASSERT(result);
1695-
1696- try {
1697- lValidatedBaseUri = URI(result->getStringValue());
1698- } catch (ZorbaException const& /* e */) {
1699- throw XQUERY_EXCEPTION(
1700- err::FODC0007,
1701- ERROR_PARAMS( result->getStringValue() ),
1702- ERROR_LOC( loc )
1703- );
1704- }
1705-
1706- if (!lValidatedBaseUri.is_absolute()) {
1707- throw XQUERY_EXCEPTION(
1708- err::FODC0007,
1709- ERROR_PARAMS( lValidatedBaseUri.toString() ),
1710- ERROR_LOC( loc )
1711- );
1712- }
1713-
1714- result->getStringValue2(state->baseUri);
1715-
1716- // read options
1717- consumeNext(tempItem, theChildren[2].getp(), planState);
1718- parseOptions = ParseXmlFragmentOptions::parseOptions(tempItem->getStringValue(), loc);
1719-
1720- } else {
1721- // read options
1722- consumeNext(tempItem, theChildren[1].getp(), planState);
1723- parseOptions = ParseXmlFragmentOptions::parseOptions(tempItem->getStringValue(), loc);
1724-
1725- state->baseUri = theSctx->get_base_uri();
1726- }
1727+ // read options
1728+ consumeNext(tempItem, theChildren[1].getp(), planState);
1729+ state->theProperties.setBaseUri(theSctx->get_base_uri());
1730+ state->theProperties.setStoreDocument(false);
1731+ processOptions(tempItem, state->theProperties, theSctx, loc);
1732
1733 // baseURI serves both as the base URI used by the XML parser
1734 // to resolve relative entity references within the document,
1735 // and as the base URI of the document node that is returned.
1736- state->docUri = state->baseUri;
1737-
1738- // The DTD and ExternalEntitiesProcessing options/props cannot both be true at the same time
1739- if (parseOptions.enableDTDValidation)
1740- state->theProperties.setEnableDtd(true);
1741- if (parseOptions.enableExternalEntitiesProcessing)
1742- state->theProperties.setEnableExtParsedEntity(true);
1743- state->theProperties.setStoreDocument(false);
1744-
1745- if (state->theProperties.getEnableExtParsedEntity())
1746+ state->baseUri = state->theProperties.getBaseUri();
1747+ state->docUri = state->theProperties.getBaseUri();
1748+
1749+
1750+ ////////////////////////////////////////////////////////////////////////
1751+ // External parsed entity processing
1752+ ////////////////////////////////////////////////////////////////////////
1753+ if (state->theProperties.getParseExternalParsedEntity())
1754 {
1755- // state->theFragmentStream.root_elements_to_skip = 0;
1756+ state->theFragmentStream.root_elements_to_skip = state->theProperties.getSkipRootNodes();
1757
1758- while (state->theFragmentStream.theBuffer == NULL
1759- ||
1760- state->theFragmentStream.current_offset < state->theFragmentStream.buffer_size)
1761+ while ( ! state->theFragmentStream.stream_is_consumed())
1762 {
1763 try {
1764 result = lStore.loadDocument(state->baseUri, state->docUri, state->theFragmentStream, state->theProperties);
1765 } catch (ZorbaException const& e) {
1766- if (parseOptions.enableFatelErrorProcessing)
1767- throw XQUERY_EXCEPTION( err::FODC0006, ERROR_PARAMS("parse-xml:parse-xml-fragment()", e.what()), ERROR_LOC( loc ));
1768+ if ( ! state->theProperties.getNoError())
1769+ throw XQUERY_EXCEPTION( err::FODC0006, ERROR_PARAMS("parse-xml:parse()", e.what()), ERROR_LOC( loc ));
1770 else
1771 result = NULL;
1772 }
1773
1774- if (result != NULL)
1775+ if (result == NULL)
1776+ continue;
1777+
1778+ // Return the children of document node
1779+ state->theFragmentStream.children = result->getChildren();
1780+ while (state->theFragmentStream.children->next(result) && result != NULL)
1781 {
1782- result->getChildren()->next(result);
1783+ if (state->theProperties.getSkipTopLevelTextNodes() && result->getNodeKind() == store::StoreConsts::textNode)
1784+ continue;
1785+
1786 STACK_PUSH(true, state);
1787 }
1788 }
1789 }
1790+ ////////////////////////////////////////////////////////////////////////
1791+ // XML document processing
1792+ ////////////////////////////////////////////////////////////////////////
1793 else // if (!state->theProperties.getEnableExtParsedEntity())
1794 {
1795 try {
1796 result = lStore.loadDocument(state->baseUri, state->docUri, *state->theFragmentStream.theStream, state->theProperties);
1797 } catch (ZorbaException const& e) {
1798- if (parseOptions.enableFatelErrorProcessing)
1799- throw XQUERY_EXCEPTION( err::FODC0006, ERROR_PARAMS("parse-xml:parse-xml-fragment()", e.what()), ERROR_LOC( loc ));
1800+ if ( ! state->theProperties.getNoError())
1801+ throw XQUERY_EXCEPTION( err::FODC0006, ERROR_PARAMS("parse-xml:parse()", e.what()), ERROR_LOC( loc ));
1802 else
1803 result = NULL;
1804 }
1805@@ -270,7 +274,7 @@
1806 if (result != NULL)
1807 {
1808 #ifndef ZORBA_NO_XMLSCHEMA
1809- if (parseOptions.enableStrictSchemaValidation || parseOptions.enableLaxSchemaValidation)
1810+ if (state->theProperties.getSchemaLaxValidate() || state->theProperties.getSchemaStrictValidate())
1811 {
1812 try
1813 {
1814@@ -280,13 +284,13 @@
1815 result,
1816 tempItem,
1817 theSctx->get_typemanager(),
1818- parseOptions.enableLaxSchemaValidation ? ParseConstants::val_lax : ParseConstants::val_strict,
1819+ state->theProperties.getSchemaLaxValidate() ? ParseConstants::val_lax : ParseConstants::val_strict,
1820 theSctx,
1821 this->loc);
1822 }
1823 catch (ZorbaException& /*e*/)
1824 {
1825- if (parseOptions.enableFatelErrorProcessing)
1826+ if ( ! state->theProperties.getNoError())
1827 throw;
1828 else
1829 {
1830@@ -298,11 +302,6 @@
1831 #endif
1832 // Ignore the schema validation options if Zorba is built without schema support
1833
1834- if (result != NULL && validated && parseOptions.enableWhitespaceStripping)
1835- {
1836- // TODO: whitespace stripping
1837- }
1838-
1839 STACK_PUSH(validated, state);
1840 } // if (result != NULL)
1841 } // if (state->theProperties.getEnableExtParsedEntity())
1842
1843=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parse_fragment.cpp' (properties changed: +x to -x)
1844=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h' (properties changed: +x to -x)
1845--- src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h 2011-10-19 15:28:51 +0000
1846+++ src/runtime/parsing_and_serializing/pregenerated/parse_fragment.h 2012-03-13 16:09:23 +0000
1847@@ -36,7 +36,7 @@
1848 namespace zorba {
1849
1850 /**
1851- * fn-zorba-xml:parse-xml-fragment
1852+ * fn-zorba-xml:parse
1853 * Author: Zorba Team
1854 */
1855 class FnParseXmlFragmentIteratorState : public PlanIteratorState
1856
1857=== modified file 'src/runtime/sequences/sequences_impl.cpp'
1858--- src/runtime/sequences/sequences_impl.cpp 2012-02-15 10:25:02 +0000
1859+++ src/runtime/sequences/sequences_impl.cpp 2012-03-13 16:09:23 +0000
1860@@ -464,13 +464,13 @@
1861 state->theIsChildReset = false;
1862
1863 CONSUME(startPosItem, 1);
1864- startPos =
1865+ startPos =
1866 static_cast<xs_long>(startPosItem->getDoubleValue().round().getNumber()) - 1;
1867
1868 if (theChildren.size() == 3)
1869 {
1870 CONSUME(lengthItem, 2);
1871- state->theRemaining =
1872+ state->theRemaining =
1873 static_cast<xs_long>(lengthItem->getDoubleValue().round().getNumber());
1874 }
1875
1876@@ -1033,7 +1033,7 @@
1877 }
1878
1879 bool FnDeepEqualIterator::nextImpl(
1880- store::Item_t& result,
1881+ store::Item_t& result,
1882 PlanState& planState) const
1883 {
1884 PlanIteratorState* state;
1885@@ -1061,7 +1061,7 @@
1886 break;
1887 }
1888
1889- if (arg1->isFunction() || arg2->isFunction())
1890+ if (arg1->isFunction() || arg2->isFunction())
1891 {
1892 throw XQUERY_EXCEPTION(
1893 err::FOTY0015,
1894@@ -1161,12 +1161,12 @@
1895 DEFAULT_STACK_INIT(PlanIteratorState, state, planState);
1896
1897
1898- for (;;)
1899+ for (;;)
1900 {
1901 // load items
1902- for (i = 0; i < 2; i++)
1903+ for (i = 0; i < 2; i++)
1904 {
1905- if (item [i] == NULL)
1906+ if (item [i] == NULL)
1907 {
1908 if (!CONSUME (item[i], i))
1909 {
1910@@ -1178,7 +1178,7 @@
1911
1912 // advance, output
1913 order = GENV_STORE.compareNodes(item[0].getp(), item[1].getp());
1914- if ( order == 0 )
1915+ if ( order == 0 )
1916 {
1917 result = item[0];
1918 STACK_PUSH (true, state);
1919@@ -1739,7 +1739,7 @@
1920 planState.theGlobalDynCtx->theDocLoadingUserTime +=
1921 zorbatm::get_cputime_elapsed(t0user, t1user);
1922
1923- planState.theGlobalDynCtx->theDocLoadingTime +=
1924+ planState.theGlobalDynCtx->theDocLoadingTime +=
1925 zorbatm::get_walltime_elapsed(t0, t1);
1926 }
1927
1928@@ -1833,7 +1833,7 @@
1929 // Prepare a LoadProperties for loading the stream into the store
1930 store::LoadProperties lLoadProperties;
1931 lLoadProperties.setStoreDocument(true);
1932- lLoadProperties.setEnableDtd( aSctx->is_feature_set( feature::dtd ) );
1933+ lLoadProperties.setDTDValidate( aSctx->is_feature_set( feature::dtd ) );
1934
1935 // Resolve URI to a stream
1936 zstring lErrorMessage;
1937
1938=== modified file 'src/runtime/spec/parsing_and_serializing/parse_fragment.xml'
1939--- src/runtime/spec/parsing_and_serializing/parse_fragment.xml 2011-07-15 16:39:51 +0000
1940+++ src/runtime/spec/parsing_and_serializing/parse_fragment.xml 2012-03-13 16:09:23 +0000
1941@@ -19,27 +19,20 @@
1942
1943 <!--
1944 /*******************************************************************************
1945- * 14.9.1 fn:parse-xml-fragment
1946+ * 14.9.1 parse-xml:parse
1947 ********************************************************************************/
1948 -->
1949 <zorba:iterator name="FnParseXmlFragmentIterator">
1950
1951- <zorba:description author="Zorba Team">fn-zorba-xml:parse-xml-fragment</zorba:description>
1952+ <zorba:description author="Zorba Team">fn-zorba-xml:parse</zorba:description>
1953
1954 <zorba:function>
1955- <zorba:signature localname="parse-xml-fragment" prefix="fn-zorba-xml">
1956- <zorba:param>xs:string?</zorba:param> <!-- string to parse -->
1957- <zorba:param>xs:string</zorba:param> <!-- parse-xml options -->
1958+ <zorba:signature localname="parse" prefix="fn-zorba-xml">
1959+ <zorba:param>xs:string?</zorba:param> <!-- string to parse -->
1960+ <zorba:param>element()?</zorba:param> <!-- parse() options -->
1961 <zorba:output>node()*</zorba:output>
1962 </zorba:signature>
1963
1964- <zorba:signature localname="parse-xml-fragment" prefix="fn-zorba-xml">
1965- <zorba:param>xs:string?</zorba:param> <!-- string to parse -->
1966- <zorba:param>xs:string</zorba:param> <!-- baseURI -->
1967- <zorba:param>xs:string</zorba:param> <!-- parse-xml options -->
1968- <zorba:output>node()*</zorba:output>
1969- </zorba:signature>
1970-
1971 <zorba:methods>
1972 <zorba:accessesDynCtx returnValue="true"/>
1973 </zorba:methods>
1974
1975=== modified file 'src/store/api/load_properties.h'
1976--- src/store/api/load_properties.h 2011-06-29 15:03:41 +0000
1977+++ src/store/api/load_properties.h 2012-03-13 16:09:23 +0000
1978@@ -35,12 +35,70 @@
1979 {
1980 private:
1981 bool theStoreDocument;
1982- bool theEnableDtdLoader;
1983- bool theEnableExtParsedEntityLoader;
1984+ zstring theBaseUri;
1985+ bool theNoError;
1986+ bool theStripWhitespace;
1987+ bool theSchemaLaxValidate;
1988+ bool theSchemaStrictValidate;
1989+ bool theDTDValidate;
1990+ bool theDTDLoad;
1991+ bool theDefaultDTDAttributes;
1992+ bool theParseExternalParsedEntity;
1993+ unsigned int theSkipRootNodes;
1994+ bool theSkipTopLevelTextNodes;
1995+ bool theSubstituteEntities;
1996+ bool theXincludeSubstitutions;
1997+ bool theRemoveRedundantNS;
1998+ bool theNoCDATA;
1999+ bool theNoXIncludeNodes;
2000
2001 public:
2002- LoadProperties() : theStoreDocument(true), theEnableDtdLoader(false), theEnableExtParsedEntityLoader(false) {}
2003- virtual ~LoadProperties() {}
2004+ LoadProperties()
2005+ :
2006+ theStoreDocument(true),
2007+ theBaseUri(""),
2008+ theNoError(false),
2009+ theStripWhitespace(false),
2010+ theSchemaLaxValidate(false),
2011+ theSchemaStrictValidate(false),
2012+ theDTDValidate(false),
2013+ theDTDLoad(false),
2014+ theDefaultDTDAttributes(false),
2015+ theParseExternalParsedEntity(false),
2016+ theSkipRootNodes(0),
2017+ theSkipTopLevelTextNodes(false),
2018+ theSubstituteEntities(false),
2019+ theXincludeSubstitutions(false),
2020+ theRemoveRedundantNS(false),
2021+ theNoCDATA(false),
2022+ theNoXIncludeNodes(false)
2023+ {
2024+ }
2025+
2026+ virtual ~LoadProperties()
2027+ {
2028+ }
2029+
2030+ void reset()
2031+ {
2032+ theStoreDocument = true;
2033+ theBaseUri = "";
2034+ theNoError = false;
2035+ theStripWhitespace = false;
2036+ theSchemaLaxValidate = false;
2037+ theSchemaStrictValidate = false;
2038+ theDTDValidate = false;
2039+ theDTDLoad = false;
2040+ theDefaultDTDAttributes = false;
2041+ theParseExternalParsedEntity = false;
2042+ theSkipRootNodes = 0;
2043+ theSkipTopLevelTextNodes = false;
2044+ theSubstituteEntities = false;
2045+ theXincludeSubstitutions = false;
2046+ theRemoveRedundantNS = false;
2047+ theNoCDATA = false;
2048+ theNoXIncludeNodes = false;
2049+ }
2050
2051 /**
2052 * Set the property storeDocument, it specifies whether the document
2053@@ -60,40 +118,168 @@
2054 return theStoreDocument;
2055 }
2056
2057- /**
2058- * Set the property enableDtd, it specifies whether the document's
2059- * dtd should be enabled when loading
2060- */
2061- void setEnableDtd(bool aEnableDtdLoader)
2062- {
2063- theEnableDtdLoader = aEnableDtdLoader;
2064- }
2065-
2066- /**
2067- * Get the property enableDtd, it specifies whether the document's
2068- * dtd should be enabled when loading
2069- */
2070- bool getEnableDtd() const
2071- {
2072- return theEnableDtdLoader;
2073- }
2074-
2075- /**
2076- * Set the property enableExtParsedEntity, it specifies whether the document
2077- * should be parsed as an enxternal general parsed entity
2078- */
2079- void setEnableExtParsedEntity(bool aEnableExtParsedEntityLoader)
2080- {
2081- theEnableExtParsedEntityLoader = aEnableExtParsedEntityLoader;
2082- }
2083-
2084- /**
2085- * Get the property enableDtd, it specifies whether the document
2086- * should be parsed as an enxternal general parsed entity
2087- */
2088- bool getEnableExtParsedEntity() const
2089- {
2090- return theEnableExtParsedEntityLoader;
2091+ // theBaseUri
2092+ void setBaseUri(const zstring& aBaseUri)
2093+ {
2094+ theBaseUri = aBaseUri;
2095+ }
2096+ zstring getBaseUri() const
2097+ {
2098+ return theBaseUri;
2099+ }
2100+
2101+ // theNoError
2102+ void setNoError(bool aNoError)
2103+ {
2104+ theNoError = aNoError;
2105+ }
2106+ bool getNoError() const
2107+ {
2108+ return theNoError;
2109+ }
2110+
2111+ // theStripWhitespace
2112+ void setStripWhitespace(bool aStripWhitespace)
2113+ {
2114+ theStripWhitespace = aStripWhitespace;
2115+ }
2116+ bool getStripWhitespace() const
2117+ {
2118+ return theStripWhitespace;
2119+ }
2120+
2121+ // theSchemaLaxValidate
2122+ void setSchemaLaxValidate(bool aSchemaLaxValidate)
2123+ {
2124+ theSchemaLaxValidate = aSchemaLaxValidate;
2125+ if (theSchemaLaxValidate)
2126+ theSchemaStrictValidate = false;
2127+ }
2128+ bool getSchemaLaxValidate() const
2129+ {
2130+ return theSchemaLaxValidate;
2131+ }
2132+
2133+ // theSchemaStrictValidate
2134+ void setSchemaStrictValidate(bool aSchemaStrictValidate)
2135+ {
2136+ theSchemaStrictValidate = aSchemaStrictValidate;
2137+ if (theSchemaStrictValidate)
2138+ theSchemaLaxValidate = false;
2139+ }
2140+ bool getSchemaStrictValidate() const
2141+ {
2142+ return theSchemaStrictValidate;
2143+ }
2144+
2145+ // theDTDValidate
2146+ void setDTDValidate(bool aDTDValidate)
2147+ {
2148+ theDTDValidate = aDTDValidate;
2149+ }
2150+ bool getDTDValidate() const
2151+ {
2152+ return theDTDValidate;
2153+ }
2154+
2155+ // theDTDLoad
2156+ void setDTDLoad(bool aDTDLoad)
2157+ {
2158+ theDTDLoad = aDTDLoad;
2159+ }
2160+ bool getDTDLoad() const
2161+ {
2162+ return theDTDLoad;
2163+ }
2164+
2165+ // theDefaultDTDAttributes
2166+ void setDefaultDTDAttributes(bool aDefaultDTDAttributes)
2167+ {
2168+ theDefaultDTDAttributes = aDefaultDTDAttributes;
2169+ }
2170+ bool getDefaultDTDAttributes() const
2171+ {
2172+ return theDefaultDTDAttributes;
2173+ }
2174+
2175+ // theParseExternalParsedEntity
2176+ void setParseExternalParsedEntity(bool aParseExternalParsedEntity)
2177+ {
2178+ theParseExternalParsedEntity = aParseExternalParsedEntity;
2179+ }
2180+ bool getParseExternalParsedEntity() const
2181+ {
2182+ return theParseExternalParsedEntity;
2183+ }
2184+
2185+ // theSkipRootNodes
2186+ void setSkipRootNodes(unsigned int aSkipRootNodes)
2187+ {
2188+ theSkipRootNodes = aSkipRootNodes;
2189+ }
2190+ unsigned int getSkipRootNodes() const
2191+ {
2192+ return theSkipRootNodes;
2193+ }
2194+
2195+ // theSkipTopLevelTextNodes
2196+ void setSkipTopLevelTextNodes(bool aSkipTopLevelTextNodes)
2197+ {
2198+ theSkipTopLevelTextNodes = aSkipTopLevelTextNodes;
2199+ }
2200+ bool getSkipTopLevelTextNodes() const
2201+ {
2202+ return theSkipTopLevelTextNodes;
2203+ }
2204+
2205+ // theSubstituteEntities
2206+ void setSubstituteEntities(bool aSubstituteEntities)
2207+ {
2208+ theSubstituteEntities = aSubstituteEntities;
2209+ }
2210+ bool getSubstituteEntities() const
2211+ {
2212+ return theSubstituteEntities;
2213+ }
2214+
2215+ // theXincludeSubstitutions
2216+ void setXincludeSubstitutions(bool aXincludeSubstitutions)
2217+ {
2218+ theXincludeSubstitutions = aXincludeSubstitutions;
2219+ }
2220+ bool getXincludeSubstitutions() const
2221+ {
2222+ return theXincludeSubstitutions;
2223+ }
2224+
2225+ // theRemoveRedundantNS
2226+ void setRemoveRedundantNS(bool aRemoveRedundantNS)
2227+ {
2228+ theRemoveRedundantNS = aRemoveRedundantNS;
2229+ }
2230+ bool getRemoveRedundantNS() const
2231+ {
2232+ return theRemoveRedundantNS;
2233+ }
2234+
2235+ // theNoCDATA
2236+ void setNoCDATA(bool aNoCDATA)
2237+ {
2238+ theNoCDATA = aNoCDATA;
2239+ }
2240+ bool getNoCDATA() const
2241+ {
2242+ return theNoCDATA;
2243+ }
2244+
2245+ // theNoXIncludeNodes
2246+ void setNoXIncludeNodes(bool aNoXIncludeNodes)
2247+ {
2248+ theNoXIncludeNodes = aNoXIncludeNodes;
2249+ }
2250+ bool getNoXIncludeNodes() const
2251+ {
2252+ return theNoXIncludeNodes;
2253 }
2254 };
2255
2256
2257=== modified file 'src/store/naive/loader.h'
2258--- src/store/naive/loader.h 2012-02-28 20:45:43 +0000
2259+++ src/store/naive/loader.h 2012-03-13 16:09:23 +0000
2260@@ -21,6 +21,7 @@
2261 #include <libxml/xmlstring.h>
2262
2263 #include "store/api/item.h"
2264+#include "store/api/load_properties.h"
2265
2266 #include "ordpath.h"
2267
2268@@ -74,6 +75,8 @@
2269 static const ulong INPUT_CHUNK_SIZE = 8192;
2270
2271 protected:
2272+ const store::LoadProperties & theLoadProperties;
2273+
2274 xmlParserCtxtPtr ctxt;
2275
2276 xmlSAXHandler theSaxHandler;
2277@@ -89,12 +92,19 @@
2278
2279 bool theBuildDataGuide;
2280
2281+
2282+protected:
2283+ void applyLoadOptions(const store::LoadProperties& props, xmlParserCtxtPtr ctxt);
2284+
2285+
2286 public:
2287 XmlLoader(
2288 BasicItemFactory* factory,
2289 XQueryDiagnostics* xqueryDiagnostics,
2290+ const store::LoadProperties& loadProperties,
2291 bool dataguide)
2292 :
2293+ theLoadProperties(loadProperties),
2294 ctxt(NULL),
2295 theFactory(factory),
2296 theXQueryDiagnostics(xqueryDiagnostics),
2297@@ -156,6 +166,7 @@
2298 FastXmlLoader(
2299 BasicItemFactory* factory,
2300 XQueryDiagnostics* xqueryDiagnostics,
2301+ const store::LoadProperties& loadProperties,
2302 bool dataguide);
2303
2304 ~FastXmlLoader();
2305@@ -245,6 +256,7 @@
2306 FragmentXmlLoader(
2307 BasicItemFactory* factory,
2308 XQueryDiagnostics* xqueryDiagnostics,
2309+ const store::LoadProperties& loadProperties,
2310 bool dataguide);
2311
2312 ~FragmentXmlLoader();
2313@@ -255,7 +267,15 @@
2314 std::istream& xmlStream);
2315
2316 protected:
2317- static void checkStopParsing(void* ctx);
2318+ bool fillBuffer(FragmentIStream* theFragmentStream);
2319+
2320+ unsigned long getCurrentInputOffset() const;
2321+
2322+ static void checkStopParsing(void* ctx, bool force = false);
2323+
2324+ static void startDocument(void * ctx);
2325+
2326+ static void endDocument(void * ctx);
2327
2328 static void startElement(
2329 void * ctx,
2330@@ -295,7 +315,6 @@
2331
2332 protected:
2333 FragmentIStream* theFragmentStream;
2334- int element_depth;
2335 };
2336
2337 /*******************************************************************************
2338@@ -331,8 +350,6 @@
2339 zorba::Stack<PathStepInfo> thePathStack;
2340 std::stack<NsBindingsContext*> theBindingsStack;
2341
2342- bool theParseExtParsedEntity;
2343-
2344 #ifdef DATAGUIDE
2345 zorba::Stack<ElementGuideNode*> theGuideStack;
2346 #endif
2347@@ -341,8 +358,8 @@
2348 DtdXmlLoader(
2349 BasicItemFactory* factory,
2350 XQueryDiagnostics* xqueryDiagnostics,
2351- bool dataguide,
2352- bool parseExtParsedEntity);
2353+ const store::LoadProperties& loadProperties,
2354+ bool dataguide);
2355
2356 ~DtdXmlLoader();
2357
2358
2359=== modified file 'src/store/naive/loader_dtd.cpp'
2360--- src/store/naive/loader_dtd.cpp 2012-02-15 10:25:02 +0000
2361+++ src/store/naive/loader_dtd.cpp 2012-03-13 16:09:23 +0000
2362@@ -76,12 +76,51 @@
2363 /*******************************************************************************
2364
2365 ********************************************************************************/
2366+void XmlLoader::applyLoadOptions(const store::LoadProperties& props, xmlParserCtxtPtr ctxt)
2367+{
2368+ int options = 0;
2369+
2370+ if (props.getStripWhitespace())
2371+ options |= XML_PARSE_NOBLANKS;
2372+
2373+ if (props.getDTDValidate())
2374+ options |= XML_PARSE_DTDVALID;
2375+
2376+ if (props.getDTDLoad())
2377+ options |= XML_PARSE_DTDLOAD;
2378+
2379+ if (props.getDefaultDTDAttributes())
2380+ options |= XML_PARSE_DTDATTR;
2381+
2382+ if (props.getSubstituteEntities())
2383+ options |= XML_PARSE_NOENT;
2384+
2385+ if (props.getXincludeSubstitutions())
2386+ options |= XML_PARSE_XINCLUDE;
2387+
2388+ if (props.getRemoveRedundantNS())
2389+ options |= XML_PARSE_NSCLEAN;
2390+
2391+ if (props.getNoCDATA())
2392+ options |= XML_PARSE_NOCDATA;
2393+
2394+ if (props.getNoXIncludeNodes())
2395+ options |= XML_PARSE_NOXINCNODE;
2396+
2397+ xmlCtxtUseOptions(ctxt, options);
2398+}
2399+
2400+
2401+/*******************************************************************************
2402+
2403+********************************************************************************/
2404 FragmentXmlLoader::FragmentXmlLoader(
2405 BasicItemFactory* factory,
2406 XQueryDiagnostics* xqueryDiagnostics,
2407+ const store::LoadProperties& loadProperties,
2408 bool dataguide)
2409 :
2410- FastXmlLoader(factory, xqueryDiagnostics, dataguide)
2411+ FastXmlLoader(factory, xqueryDiagnostics, loadProperties, dataguide)
2412 {
2413 theOrdPath.init();
2414
2415@@ -109,6 +148,39 @@
2416 {
2417 }
2418
2419+bool FragmentXmlLoader::fillBuffer(FragmentIStream* theFragmentStream)
2420+{
2421+ if (theFragmentStream->ctxt->input->length > 0 && theFragmentStream->current_offset < theFragmentStream->bytes_in_buffer)
2422+ {
2423+ memmove(theFragmentStream->theBuffer, theFragmentStream->theBuffer + theFragmentStream->current_offset,
2424+ theFragmentStream->bytes_in_buffer - theFragmentStream->current_offset);
2425+ }
2426+ theFragmentStream->bytes_in_buffer -= theFragmentStream->current_offset;
2427+
2428+ std::streamsize numChars = readPacket(*theFragmentStream->theStream, theFragmentStream->theBuffer + theFragmentStream->bytes_in_buffer,
2429+ FragmentIStream::BUFFER_SIZE+FragmentIStream::LOOKAHEAD_BYTES - theFragmentStream->bytes_in_buffer);
2430+ if (numChars < 0)
2431+ {
2432+ theXQueryDiagnostics->add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0020_LOADER_IO_ERROR));
2433+ throw 0; // the argument to throw is not used by the catch clause
2434+ }
2435+
2436+ if (theFragmentStream->theStream->eof())
2437+ theFragmentStream->reached_eof = true;
2438+
2439+ theFragmentStream->bytes_in_buffer += numChars;
2440+ theFragmentStream->current_offset = 0;
2441+ theFragmentStream->ctxt->input->base = (xmlChar*)(theFragmentStream->theBuffer);
2442+ theFragmentStream->ctxt->input->length = (theFragmentStream->bytes_in_buffer < FragmentIStream::BUFFER_SIZE? theFragmentStream->bytes_in_buffer : FragmentIStream::BUFFER_SIZE);
2443+ theFragmentStream->ctxt->input->cur = theFragmentStream->ctxt->input->base;
2444+ theFragmentStream->ctxt->input->end = theFragmentStream->ctxt->input->base + theFragmentStream->ctxt->input->length;
2445+ theFragmentStream->ctxt->checkIndex = 0;
2446+
2447+ if (theFragmentStream->bytes_in_buffer < FragmentIStream::BUFFER_SIZE+FragmentIStream::LOOKAHEAD_BYTES)
2448+ theFragmentStream->theBuffer[theFragmentStream->bytes_in_buffer] = 0;
2449+
2450+ return !theFragmentStream->stream_is_consumed();
2451+}
2452
2453 store::Item_t FragmentXmlLoader::loadXml(
2454 const zstring& baseUri,
2455@@ -138,88 +210,105 @@
2456 {
2457 theFragmentStream = static_cast<FragmentIStream*>(&stream);
2458
2459- // Prepare the input buffer
2460+ // Prepare the input buffer and the parser context
2461 if (theFragmentStream->theBuffer == NULL)
2462 {
2463- theFragmentStream->theStream->seekg(0, std::ios::end);
2464- std::streamoff fileSize = theFragmentStream->theStream->tellg();
2465- theFragmentStream->theStream->seekg(0, std::ios::beg);
2466-
2467- theFragmentStream->theBuffer = new char[static_cast<unsigned int>(fileSize+1)];
2468- theFragmentStream->theBuffer[fileSize] = 0;
2469-
2470- std::streamsize numChars = readPacket(*theFragmentStream->theStream,
2471- theFragmentStream->theBuffer,
2472- fileSize);
2473- theFragmentStream->buffer_size = numChars;
2474- if (numChars < 0)
2475- {
2476- theXQueryDiagnostics->
2477- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0020_LOADER_IO_ERROR));
2478-
2479- abortload();
2480- return NULL;
2481- }
2482- else if (numChars == 0)
2483- {
2484- theXQueryDiagnostics->
2485- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0020_LOADER_IO_ERROR,
2486- ERROR_PARAMS(ZED(NoInputData))));
2487-
2488- abortload();
2489- return NULL;
2490- }
2491- }
2492-
2493- // Create the LibXml parser context
2494- ctxt = xmlCreatePushParserCtxt(&theSaxHandler, this, NULL, 0, 0);
2495- // ctxt = xmlCreate
2496- if (ctxt == NULL)
2497- {
2498- theXQueryDiagnostics->
2499- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2500- ERROR_PARAMS(ZED(ParserInitFailed))));
2501-
2502- abortload();
2503- return NULL;
2504- }
2505-
2506- // Delete the initial empty input stream
2507- xmlFreeInputStream(inputPop(ctxt));
2508-
2509- // Create the LibXml parser input
2510- xmlParserInputPtr input = xmlNewInputStream(ctxt);
2511- if (input == NULL)
2512- {
2513- theXQueryDiagnostics->
2514- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2515- ERROR_PARAMS(ZED(ParserInitFailed))));
2516-
2517- abortload();
2518- return NULL;
2519- }
2520-
2521- // Initialize the parser input
2522- input->filename = (const char*)(xmlCanonicPath((const xmlChar*)theDocUri.c_str()));
2523- input->base = (xmlChar*)(theFragmentStream->theBuffer + theFragmentStream->current_offset);
2524- input->cur = (xmlChar*)(theFragmentStream->theBuffer + theFragmentStream->current_offset);
2525- input->length = theFragmentStream->buffer_size - theFragmentStream->current_offset;
2526- input->end = input->base + input->length;
2527- xmlPushInput(ctxt, input);
2528-
2529- // Reset element_depth
2530- element_depth = 0;
2531-
2532- // Finally call the parser
2533- if (xmlParseExtParsedEnt(ctxt)==-1)
2534- {
2535- theXQueryDiagnostics->
2536- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2537- ERROR_PARAMS(ZED(ParserNoCreateTree))));
2538-
2539- abortload();
2540- return NULL;
2541- }
2542+ // Allocate input buffer
2543+ theFragmentStream->theBuffer = new char[FragmentIStream::BUFFER_SIZE + FragmentIStream::LOOKAHEAD_BYTES+1];
2544+ theFragmentStream->theBuffer[FragmentIStream::BUFFER_SIZE + FragmentIStream::LOOKAHEAD_BYTES] = 0;
2545+
2546+ // Create the LibXml parser context
2547+ theFragmentStream->ctxt = xmlCreatePushParserCtxt(&theSaxHandler, this, NULL, 0, 0);
2548+ if (theFragmentStream->ctxt == NULL)
2549+ {
2550+ theXQueryDiagnostics->add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( ParserInitFailed ) )));
2551+ throw 0; // the argument to throw is not used by the catch clause
2552+ }
2553+
2554+ // Apply parser options
2555+ applyLoadOptions(theLoadProperties, theFragmentStream->ctxt);
2556+
2557+ // Delete the initial empty input stream
2558+ xmlFreeInputStream(inputPop(theFragmentStream->ctxt));
2559+
2560+ // Create the LibXml parser input
2561+ xmlParserInputPtr input = xmlNewInputStream(theFragmentStream->ctxt);
2562+ if (input == NULL)
2563+ {
2564+ theXQueryDiagnostics->add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( ParserInitFailed ) )));
2565+ throw 0; // the argument to throw is not used by the catch clause
2566+ }
2567+
2568+ // Initialize the parser input (only filename and the pointer to the current char)
2569+ theFragmentStream->theBuffer[0] = ' '; // This assignment is needed for LibXml2-2.7.6, which tries to read the buffer when xmlPushInput() is called
2570+ input->cur = (xmlChar*)(theFragmentStream->theBuffer);
2571+ input->filename = (const char*)(xmlCanonicPath((const xmlChar*)theDocUri.c_str()));
2572+ xmlPushInput(theFragmentStream->ctxt, input);
2573+ }
2574+
2575+ theFragmentStream->ctxt->userData = this; // the loader has changed, update the address
2576+ theFragmentStream->ctxt->disableSAX = false; // xmlStopParser() sets disableSAX to true
2577+ theFragmentStream->parsed_nodes_count = 0;
2578+ theFragmentStream->forced_parser_stop = false;
2579+
2580+ if ( ! theFragmentStream->first_start_doc)
2581+ {
2582+ theFragmentStream->ctxt->instate = XML_PARSER_CONTENT;
2583+ FragmentXmlLoader::startDocument(theFragmentStream->ctxt->userData);
2584+ }
2585+
2586+ while ( ! theFragmentStream->forced_parser_stop && fillBuffer(theFragmentStream))
2587+ {
2588+ // std::cerr << "\n==================\n--> skip_root: " << theFragmentStream->root_elements_to_skip << " current_depth: " << theFragmentStream->current_element_depth << " about to parse: [" << theFragmentStream->ctxt->input->cur << "] " << std::endl;
2589+
2590+ // This case needs to be handled here, otherwise LibXml2 will segfault
2591+ if (theFragmentStream->ctxt->input->cur[0] == '<' &&
2592+ theFragmentStream->ctxt->input->cur[1] == '/' &&
2593+ theFragmentStream->current_element_depth == 0)
2594+ {
2595+ theXQueryDiagnostics->add_error(theDocUri.empty() ?
2596+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLNoOpeningTag ))) :
2597+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLNoOpeningTag ), theDocUri))
2598+ );
2599+ throw 0; // the argument to throw is not used by the catch clause
2600+ }
2601+
2602+ xmlParseChunk(theFragmentStream->ctxt, (const char*)theFragmentStream->ctxt->input->cur,
2603+ theFragmentStream->ctxt->input->length, 0);
2604+
2605+ if (theFragmentStream->ctxt->input->base == (xmlChar*)(theFragmentStream->theBuffer)
2606+ &&
2607+ theFragmentStream->current_offset < getCurrentInputOffset())
2608+ theFragmentStream->current_offset = getCurrentInputOffset();
2609+
2610+ // If we didn't get an error and we haven't moved, we might have some freestanding text. Parse it as element character data.
2611+ if (theXQueryDiagnostics->errors().empty()
2612+ &&
2613+ theFragmentStream->current_offset == 0)
2614+ {
2615+ // The input has been reset by xmlStopParser()
2616+ theFragmentStream->ctxt->input->base = (xmlChar*)(theFragmentStream->theBuffer);
2617+ theFragmentStream->ctxt->input->cur = theFragmentStream->ctxt->input->base;
2618+ xmlParseCharData(theFragmentStream->ctxt, 0);
2619+ }
2620+
2621+ if ( ! theXQueryDiagnostics->errors().empty())
2622+ throw 0; // the argument to throw is not used by the catch clause
2623+ }
2624+
2625+ // this happens when there are tags that have not been closed
2626+ if (theFragmentStream->stream_is_consumed()
2627+ &&
2628+ theFragmentStream->current_element_depth > 0)
2629+ {
2630+ theXQueryDiagnostics->add_error(theDocUri.empty() ?
2631+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLDocument_2o ))) :
2632+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLDocument_2o ), theDocUri))
2633+ );
2634+ throw 0;
2635+ }
2636+
2637+ FragmentXmlLoader::endDocument(theFragmentStream->ctxt->userData); // this would not be called otherwise
2638 }
2639 catch (...)
2640 {
2641@@ -228,49 +317,36 @@
2642 return NULL;
2643 }
2644
2645- bool ok = ctxt->wellFormed != 0;
2646-
2647 // The doc may be well formed, but it may have other kinds of errors, e.g., unresolved ns prefixes.
2648 if (!theXQueryDiagnostics->errors().empty())
2649 {
2650 abortload();
2651 return NULL;
2652 }
2653- else if (!ok )
2654+ else if ( ! theFragmentStream->ctxt->wellFormed)
2655 {
2656- if (!theDocUri.empty())
2657- {
2658- theXQueryDiagnostics->
2659- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2660- ERROR_PARAMS(ZED(BadXMLDocument_2o), theDocUri)));
2661- }
2662- else
2663- {
2664- theXQueryDiagnostics->
2665- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2666- ERROR_PARAMS(ZED(BadXMLDocument_2o))));
2667- }
2668+ theXQueryDiagnostics->add_error(theDocUri.empty() ?
2669+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLDocument_2o ))) :
2670+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLDocument_2o ), theDocUri))
2671+ );
2672 abortload();
2673 return NULL;
2674 }
2675- else if ( ctxt->lastError.code != XML_ERR_OK )
2676+ else if (theFragmentStream->ctxt->lastError.code != XML_ERR_OK)
2677 {
2678- if ( ctxt->lastError.code == XML_NS_ERR_UNDEFINED_NAMESPACE ||
2679- ctxt->lastError.code != XML_ERR_NO_DTD )
2680+ if (theFragmentStream->ctxt->lastError.code == XML_NS_ERR_UNDEFINED_NAMESPACE
2681+ ||
2682+ theFragmentStream->ctxt->lastError.code != XML_ERR_NO_DTD )
2683 {
2684- theXQueryDiagnostics->
2685- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2686- ERROR_PARAMS(ZED(BadXMLDocument_2o))));
2687-
2688+ theXQueryDiagnostics->add_error(theDocUri.empty() ?
2689+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLDocument_2o ))) :
2690+ NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR, ERROR_PARAMS( ZED( BadXMLDocument_2o ), theDocUri))
2691+ );
2692 abortload();
2693 return NULL;
2694 }
2695 }
2696
2697- xmlCtxtReset(ctxt);
2698- xmlFreeParserCtxt(ctxt);
2699- ctxt = NULL;
2700-
2701 thePathStack.pop();
2702 assert(thePathStack.empty());
2703
2704@@ -280,23 +356,59 @@
2705 return resultNode;
2706 }
2707
2708-
2709-void FragmentXmlLoader::checkStopParsing(void* ctx)
2710-{
2711- FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2712- ZORBA_LOADER_CHECK_ERROR(loader);
2713-
2714- if (loader.element_depth == 0)
2715- {
2716- /* if (loader.ctxt->inputNr <= 1)
2717- loader.theFragmentStream->current_offset = loader.theFragmentStream->buffer_size;
2718- else */
2719- loader.theFragmentStream->current_offset += (loader.ctxt->input->cur - loader.ctxt->input->base)
2720- + loader.ctxt->input->consumed;
2721- xmlStopParser(loader.ctxt);
2722- }
2723-}
2724-
2725+unsigned long FragmentXmlLoader::getCurrentInputOffset() const
2726+{
2727+ unsigned long offset = theFragmentStream->ctxt->input->cur
2728+ - theFragmentStream->ctxt->input->base
2729+ + theFragmentStream->ctxt->input->consumed;
2730+
2731+ return offset;
2732+}
2733+
2734+void FragmentXmlLoader::checkStopParsing(void* ctx, bool force)
2735+{
2736+ FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2737+ ZORBA_LOADER_CHECK_ERROR(loader);
2738+
2739+ unsigned long offset = loader.getCurrentInputOffset();
2740+
2741+ if (force
2742+ ||
2743+ loader.theFragmentStream->current_element_depth == 0
2744+ ||
2745+ (offset >= loader.theFragmentStream->bytes_in_buffer
2746+ &&
2747+ loader.theFragmentStream->reached_eof)
2748+ ||
2749+ (loader.theFragmentStream->current_element_depth <= loader.theFragmentStream->root_elements_to_skip
2750+ &&
2751+ loader.theFragmentStream->parsed_nodes_count >= FragmentIStream::PARSED_NODES_BATCH_SIZE))
2752+ {
2753+ loader.theFragmentStream->current_offset = offset;
2754+ xmlStopParser(loader.theFragmentStream->ctxt);
2755+ loader.theFragmentStream->ctxt->errNo = XML_SCHEMAV_MISC; // fake error to force stopping
2756+ loader.theFragmentStream->forced_parser_stop = true;
2757+ }
2758+
2759+ loader.theFragmentStream->parsed_nodes_count++;
2760+}
2761+
2762+void FragmentXmlLoader::startDocument(void * ctx)
2763+{
2764+ FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2765+ ZORBA_LOADER_CHECK_ERROR(loader);
2766+ FastXmlLoader::startDocument(ctx);
2767+ if (loader.theFragmentStream->first_start_doc)
2768+ {
2769+ loader.theFragmentStream->first_start_doc = false;
2770+ FragmentXmlLoader::checkStopParsing(ctx, true);
2771+ }
2772+}
2773+
2774+void FragmentXmlLoader::endDocument(void * ctx)
2775+{
2776+ FastXmlLoader::endDocument(ctx);
2777+}
2778
2779 void FragmentXmlLoader::startElement(
2780 void * ctx,
2781@@ -309,27 +421,34 @@
2782 int nb_defaulted,
2783 const xmlChar ** attributes)
2784 {
2785- FastXmlLoader::startElement(ctx, localname, prefix, URI, nb_namespaces, namespaces, nb_attributes, nb_defaulted, attributes);
2786-
2787 FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2788 ZORBA_LOADER_CHECK_ERROR(loader);
2789- loader.element_depth++;
2790+ loader.theFragmentStream->current_element_depth++;
2791+ if (loader.theFragmentStream->current_element_depth > loader.theFragmentStream->root_elements_to_skip)
2792+ {
2793+ const xmlChar** nsTab = namespaces;
2794+
2795+ if (loader.theFragmentStream->current_element_depth == loader.theFragmentStream->root_elements_to_skip + 1)
2796+ {
2797+ nsTab = loader.theFragmentStream->ctxt->nsTab;
2798+ nb_namespaces = loader.theFragmentStream->ctxt->nsNr/2;
2799+ }
2800+
2801+ FastXmlLoader::startElement(ctx, localname, prefix, URI, nb_namespaces, nsTab, nb_attributes, nb_defaulted, attributes);
2802+ }
2803 }
2804
2805-
2806 void FragmentXmlLoader::endElement(
2807 void * ctx,
2808 const xmlChar * localname,
2809 const xmlChar * prefix,
2810 const xmlChar * URI)
2811 {
2812- FastXmlLoader::endElement(ctx, localname, prefix, URI);
2813-
2814 FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2815 ZORBA_LOADER_CHECK_ERROR(loader);
2816-
2817- loader.element_depth--;
2818-
2819+ if (loader.theFragmentStream->current_element_depth > loader.theFragmentStream->root_elements_to_skip)
2820+ FastXmlLoader::endElement(ctx, localname, prefix, URI);
2821+ loader.theFragmentStream->current_element_depth--;
2822 checkStopParsing(ctx);
2823 }
2824
2825@@ -338,7 +457,10 @@
2826 const xmlChar * ch,
2827 int len)
2828 {
2829- FastXmlLoader::characters(ctx, ch, len);
2830+ FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2831+ ZORBA_LOADER_CHECK_ERROR(loader);
2832+ if (loader.theFragmentStream->current_element_depth >= loader.theFragmentStream->root_elements_to_skip)
2833+ FastXmlLoader::characters(ctx, ch, len);
2834 checkStopParsing(ctx);
2835 }
2836
2837@@ -347,7 +469,10 @@
2838 void * ctx,
2839 const xmlChar * value)
2840 {
2841- FastXmlLoader::comment(ctx, value);
2842+ FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2843+ ZORBA_LOADER_CHECK_ERROR(loader);
2844+ if (loader.theFragmentStream->current_element_depth >= loader.theFragmentStream->root_elements_to_skip)
2845+ FastXmlLoader::comment(ctx, value);
2846 checkStopParsing(ctx);
2847 }
2848
2849@@ -357,7 +482,10 @@
2850 const xmlChar * value,
2851 int len)
2852 {
2853- FastXmlLoader::cdataBlock(ctx, value, len);
2854+ FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2855+ ZORBA_LOADER_CHECK_ERROR(loader);
2856+ if (loader.theFragmentStream->current_element_depth >= loader.theFragmentStream->root_elements_to_skip)
2857+ FastXmlLoader::cdataBlock(ctx, value, len);
2858 checkStopParsing(ctx);
2859 }
2860
2861@@ -367,7 +495,10 @@
2862 const xmlChar * target,
2863 const xmlChar * data)
2864 {
2865- FastXmlLoader::processingInstruction(ctx, target, data);
2866+ FragmentXmlLoader& loader = *(static_cast<FragmentXmlLoader*>(ctx));
2867+ ZORBA_LOADER_CHECK_ERROR(loader);
2868+ if (loader.theFragmentStream->current_element_depth >= loader.theFragmentStream->root_elements_to_skip)
2869+ FastXmlLoader::processingInstruction(ctx, target, data);
2870 checkStopParsing(ctx);
2871 }
2872
2873@@ -378,14 +509,13 @@
2874 DtdXmlLoader::DtdXmlLoader(
2875 BasicItemFactory* factory,
2876 XQueryDiagnostics* xqueryDiagnostics,
2877- bool dataguide,
2878- bool parseExtParsedEntity)
2879+ const store::LoadProperties& loadProperties,
2880+ bool dataguide)
2881 :
2882- XmlLoader(factory, xqueryDiagnostics, dataguide),
2883+ XmlLoader(factory, xqueryDiagnostics, loadProperties, dataguide),
2884 theTree(NULL),
2885 theRootNode(NULL),
2886- theNodeStack(2048),
2887- theParseExtParsedEntity(parseExtParsedEntity)
2888+ theNodeStack(2048)
2889 {
2890 theOrdPath.init();
2891
2892@@ -511,10 +641,7 @@
2893 Return the number of bytes actually read, throw an exception if any I/O
2894 error occured.
2895 ********************************************************************************/
2896-std::streamsize DtdXmlLoader::readPacket(
2897- std::istream& stream,
2898- char* buf,
2899- std::streamoff size)
2900+std::streamsize DtdXmlLoader::readPacket(std::istream& stream, char* buf, std::streamoff size)
2901 {
2902 try
2903 {
2904@@ -626,23 +753,26 @@
2905 }
2906
2907 // Set the LibXml DTD validation options
2908+ /*
2909 int options = XML_PARSE_COMPACT;
2910 options |= XML_PARSE_DTDVALID;
2911 options |= XML_PARSE_DTDLOAD;
2912+ */
2913 //options |= XML_PARSE_SAX1;
2914 //xmlSAXDefaultVersion(1);
2915
2916+ // xmlCtxtUseOptions(ctxt, options);
2917+
2918 xmlLoadExtDtdDefaultValue |= XML_DETECT_IDS;
2919 xmlLoadExtDtdDefaultValue |= XML_COMPLETE_ATTRS;
2920
2921- xmlCtxtUseOptions(ctxt, options);
2922+ // Apply loader options
2923+ applyLoadOptions(theLoadProperties, ctxt);
2924
2925 if ( xmlParseDocument(ctxt)==-1 )
2926 {
2927 // std::cout << " xmlParseDocument: Error: Unable to create tree: " << ctxt->lastError.message << std::endl;
2928- theXQueryDiagnostics->
2929- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2930- ERROR_PARAMS(ZED(ParserNoCreateTree))));
2931+ theXQueryDiagnostics->add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,ERROR_PARAMS( ZED( ParserNoCreateTree ) )));
2932 abortload();
2933 return NULL;
2934 }
2935@@ -667,15 +797,21 @@
2936 {
2937 if (!theDocUri.empty())
2938 {
2939- theXQueryDiagnostics->
2940- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2941- ERROR_PARAMS(ZED(BadXMLDocument_2o), theDocUri)));
2942+ theXQueryDiagnostics->add_error(
2943+ NEW_ZORBA_EXCEPTION(
2944+ zerr::ZSTR0021_LOADER_PARSING_ERROR,
2945+ ERROR_PARAMS( ZED( BadXMLDocument_2o ), theDocUri )
2946+ )
2947+ );
2948 }
2949 else
2950 {
2951- theXQueryDiagnostics->
2952- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2953- ERROR_PARAMS(ZED(BadXMLDocument_2o))));
2954+ theXQueryDiagnostics->add_error(
2955+ NEW_ZORBA_EXCEPTION(
2956+ zerr::ZSTR0021_LOADER_PARSING_ERROR,
2957+ ERROR_PARAMS( ZED( BadXMLDocument_2o ) )
2958+ )
2959+ );
2960 }
2961
2962 abortload();
2963@@ -691,9 +827,12 @@
2964 if ( ctxt->lastError.code == XML_NS_ERR_UNDEFINED_NAMESPACE ||
2965 ctxt->lastError.code != XML_ERR_NO_DTD )
2966 {
2967- theXQueryDiagnostics->
2968- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2969- ERROR_PARAMS(ZED(BadXMLDocument_2o))));
2970+ theXQueryDiagnostics->add_error(
2971+ NEW_ZORBA_EXCEPTION(
2972+ zerr::ZSTR0021_LOADER_PARSING_ERROR,
2973+ ERROR_PARAMS( ZED( BadXMLDocument_2o ) )
2974+ )
2975+ );
2976 abortload();
2977 return NULL;
2978
2979@@ -704,10 +843,12 @@
2980 xmlDoc *doc = ctxt->myDoc;
2981 if (doc == NULL)
2982 {
2983- theXQueryDiagnostics->
2984- add_error(NEW_ZORBA_EXCEPTION(zerr::ZSTR0021_LOADER_PARSING_ERROR,
2985- ERROR_PARAMS(ZED(ParserNoCreateTree))));
2986-
2987+ theXQueryDiagnostics->add_error(
2988+ NEW_ZORBA_EXCEPTION(
2989+ zerr::ZSTR0021_LOADER_PARSING_ERROR,
2990+ ERROR_PARAMS( ZED( ParserNoCreateTree ) )
2991+ )
2992+ );
2993 abortload();
2994 return NULL;
2995 }
2996@@ -859,8 +1000,9 @@
2997 }
2998 catch (...)
2999 {
3000- loader.theXQueryDiagnostics->
3001- add_error(NEW_ZORBA_EXCEPTION(zerr::ZXQP0003_INTERNAL_ERROR));
3002+ loader.theXQueryDiagnostics->add_error(
3003+ NEW_ZORBA_EXCEPTION( zerr::ZXQP0003_INTERNAL_ERROR )
3004+ );
3005 }
3006 }
3007
3008
3009=== modified file 'src/store/naive/loader_fast.cpp'
3010--- src/store/naive/loader_fast.cpp 2012-02-15 10:25:02 +0000
3011+++ src/store/naive/loader_fast.cpp 2012-03-13 16:09:23 +0000
3012@@ -76,9 +76,10 @@
3013 FastXmlLoader::FastXmlLoader(
3014 BasicItemFactory* factory,
3015 XQueryDiagnostics* xqueryDiagnostics,
3016+ const store::LoadProperties& loadProperties,
3017 bool dataguide)
3018 :
3019- XmlLoader(factory, xqueryDiagnostics, dataguide),
3020+ XmlLoader(factory, xqueryDiagnostics, loadProperties, dataguide),
3021 theTree(NULL),
3022 theRootNode(NULL),
3023 theNodeStack(2048)
3024@@ -298,6 +299,13 @@
3025 static_cast<int>(numChars),
3026 docUri.c_str());
3027
3028+ // Apply loader options
3029+ store::LoadProperties new_props = theLoadProperties;
3030+ new_props.setSubstituteEntities(true); // This is required for some Zorba tests,
3031+ // e.g. rbkt/Queries/zorba/entity/entity.xq
3032+ // It should probably be handled in a different way
3033+ applyLoadOptions(new_props, ctxt);
3034+
3035 if (ctxt == NULL)
3036 {
3037 theXQueryDiagnostics->
3038
3039=== modified file 'src/store/naive/simple_store.cpp'
3040--- src/store/naive/simple_store.cpp 2012-03-13 10:04:44 +0000
3041+++ src/store/naive/simple_store.cpp 2012-03-13 16:09:23 +0000
3042@@ -354,7 +354,7 @@
3043 std::cerr << "Reference: " << (*iter).second
3044 << "is still in the nodes to references map" << std::endl;
3045 }
3046- ZORBA_FATAL(0, theNodeToReferencesMap.size() +
3047+ ZORBA_FATAL(0, theNodeToReferencesMap.size() +
3048 " node references still in the nodes to references map");
3049 }
3050
3051@@ -364,7 +364,7 @@
3052 RefNodeMap::iterator end = theReferencesToNodeMap.end();
3053 for (; iter != end; ++iter)
3054 {
3055- std::cerr << "Reference: " << (*iter).first
3056+ std::cerr << "Reference: " << (*iter).first
3057 << "is still in the references to nodes map" << std::endl;
3058 }
3059 ZORBA_FATAL(0, theReferencesToNodeMap.size() +
3060@@ -490,18 +490,20 @@
3061 XmlLoader* SimpleStore::getXmlLoader(XQueryDiagnostics* aXQueryDiagnostics,
3062 const store::LoadProperties& loadProperties)
3063 {
3064- if (loadProperties.getEnableExtParsedEntity())
3065+ if (loadProperties.getParseExternalParsedEntity())
3066 return new FragmentXmlLoader(theItemFactory,
3067 aXQueryDiagnostics,
3068+ loadProperties,
3069 store::Properties::instance()->buildDataguide());
3070- else if (loadProperties.getEnableDtd())
3071+ else if (loadProperties.getDTDValidate())
3072 return new DtdXmlLoader(theItemFactory,
3073 aXQueryDiagnostics,
3074- store::Properties::instance()->buildDataguide(),
3075- loadProperties.getEnableExtParsedEntity());
3076+ loadProperties,
3077+ store::Properties::instance()->buildDataguide());
3078 else
3079 return new FastXmlLoader(theItemFactory,
3080 aXQueryDiagnostics,
3081+ loadProperties,
3082 store::Properties::instance()->buildDataguide());
3083 }
3084
3085@@ -987,7 +989,7 @@
3086 return NULL;
3087
3088 store::Collection_t collection;
3089- if (theCollections->get(aName, collection, aDynamicCollection))
3090+ if (theCollections->get(aName, collection, aDynamicCollection))
3091 {
3092 return collection;
3093 }
3094@@ -1315,7 +1317,7 @@
3095 Computes the Structural Reference for the given node.
3096 ********************************************************************************/
3097 bool SimpleStore::getStructuralInformation(
3098- store::Item_t& result,
3099+ store::Item_t& result,
3100 const store::Item* node)
3101 {
3102 #ifdef TEXT_ORDPATH
3103@@ -1355,7 +1357,7 @@
3104
3105 /*******************************************************************************
3106 Computes the reference of the given node.
3107-
3108+
3109 @param node XDM node
3110 @return the identifier as an item of type xs:anyURI
3111 ********************************************************************************/
3112@@ -1388,7 +1390,7 @@
3113
3114 /*******************************************************************************
3115 Returns the node which is identified by the given reference.
3116-
3117+
3118 @param reference an xs:anyURI item
3119 @result the node identified by the reference, or NULL if no node with the given
3120 reference exists
3121@@ -1417,7 +1419,7 @@
3122
3123 /*******************************************************************************
3124 Returns whether a reference has already been generated for the given node.
3125-
3126+
3127 @param item XDM node
3128 @return whether a reference has already been generated for the given node.
3129 ********************************************************************************/
3130@@ -1429,7 +1431,7 @@
3131
3132 /*******************************************************************************
3133 Removes a node from the reference-to-nodes and nodes-to-references maps.
3134-
3135+
3136 @param node XDM node
3137 @return whether the node was registered or not.
3138 ********************************************************************************/
3139
3140=== modified file 'src/types/typeimpl.cpp'
3141--- src/types/typeimpl.cpp 2012-01-10 10:52:15 +0000
3142+++ src/types/typeimpl.cpp 2012-03-13 16:09:23 +0000
3143@@ -361,7 +361,7 @@
3144
3145
3146 bool NodeXQType::is_subtype(
3147- const TypeManager* tm,
3148+ const TypeManager* tm,
3149 const NodeXQType& supertype,
3150 const QueryLoc& loc) const
3151 {
3152@@ -443,7 +443,7 @@
3153
3154
3155 bool NodeXQType::is_supertype(
3156- const TypeManager* tm,
3157+ const TypeManager* tm,
3158 const store::Item* subitem,
3159 const QueryLoc& loc) const
3160 {
3161@@ -488,14 +488,30 @@
3162 }
3163 }
3164
3165- if (m_node_kind != store::StoreConsts::elementNode &&
3166- m_node_kind != store::StoreConsts::attributeNode)
3167+ // document-node( E ) matches any document node that contains exactly one element
3168+ // node, optionally accompanied by one or more comment and processing instruction
3169+ // nodes, if E is an ElementTest or SchemaElementTest that matches the element node.
3170+ bool is_element_test = (
3171+ m_node_kind == store::StoreConsts::documentNode &&
3172+ m_content_type != NULL &&
3173+ m_content_type->type_kind() == XQType::NODE_TYPE_KIND &&
3174+ dynamic_cast<const NodeXQType*>(m_content_type.getp())->m_schema_test == false);
3175+
3176+ if (m_node_kind != store::StoreConsts::elementNode &&
3177+ m_node_kind != store::StoreConsts::attributeNode &&
3178+ !is_element_test)
3179 return true;
3180
3181 if (m_content_type == NULL ||
3182 m_content_type->type_kind() == XQType::ANY_TYPE_KIND)
3183 return true;
3184
3185+ if (is_element_test)
3186+ {
3187+ xqtref_t documentNodeType = tm->create_value_type(subitem, loc);
3188+ return TypeOps::is_subtype(tm, *documentNodeType, *this);
3189+ }
3190+
3191 xqtref_t subContentType = tm->create_named_type(subitem->getType(),
3192 TypeConstants::QUANT_ONE,
3193 loc,
3194
3195=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xml.res'
3196--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xml.res 1970-01-01 00:00:00 +0000
3197+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xml.res 2012-03-13 16:09:23 +0000
3198@@ -0,0 +1,2 @@
3199+<?xml version="1.0" encoding="UTF-8"?>
3200+<from1>Jani</from1>
3201\ No newline at end of file
3202
3203=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xml.res'
3204--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xml.res 1970-01-01 00:00:00 +0000
3205+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xml.res 2012-03-13 16:09:23 +0000
3206@@ -0,0 +1,6 @@
3207+<?xml version="1.0" encoding="UTF-8"?>
3208+
3209+ <from1>Jani1</from1>
3210+ <from2>Jani2</from2>
3211+ <from3>Jani3</from3>
3212+
3213
3214=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xml.res'
3215--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xml.res 1970-01-01 00:00:00 +0000
3216+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xml.res 2012-03-13 16:09:23 +0000
3217@@ -0,0 +1,2 @@
3218+<?xml version="1.0" encoding="UTF-8"?>
3219+Jani1Jani2Jani3
3220
3221=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xml.res'
3222--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xml.res 1970-01-01 00:00:00 +0000
3223+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xml.res 2012-03-13 16:09:23 +0000
3224@@ -0,0 +1,12 @@
3225+<?xml version="1.0" encoding="UTF-8"?>
3226+<root>
3227+ <root2>
3228+ <from1>Jani1</from1>
3229+ </root2>
3230+ <root2>
3231+ <from2>Jani2</from2>
3232+ </root2>
3233+ <root2>
3234+ <from3>Jani3</from3>
3235+ </root2>
3236+</root>
3237
3238=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xml.res'
3239--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xml.res 1970-01-01 00:00:00 +0000
3240+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xml.res 2012-03-13 16:09:23 +0000
3241@@ -0,0 +1,12 @@
3242+<?xml version="1.0" encoding="UTF-8"?>
3243+
3244+ <root2>
3245+ <from1>Jani1</from1>
3246+ </root2>
3247+ <root2>
3248+ <from2>Jani2</from2>
3249+ </root2>
3250+ <root2>
3251+ <from3>Jani3</from3>
3252+ </root2>
3253+
3254
3255=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xml.res'
3256--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xml.res 1970-01-01 00:00:00 +0000
3257+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xml.res 2012-03-13 16:09:23 +0000
3258@@ -0,0 +1,8 @@
3259+<?xml version="1.0" encoding="UTF-8"?>
3260+
3261+ <from1>Jani1</from1>
3262+
3263+ <from2>Jani2</from2>
3264+
3265+ <from3>Jani3</from3>
3266+
3267
3268=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xml.res'
3269--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xml.res 1970-01-01 00:00:00 +0000
3270+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xml.res 2012-03-13 16:09:23 +0000
3271@@ -0,0 +1,2 @@
3272+<?xml version="1.0" encoding="UTF-8"?>
3273+Jani1Jani2Jani3
3274
3275=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xml.res'
3276--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xml.res 1970-01-01 00:00:00 +0000
3277+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xml.res 2012-03-13 16:09:23 +0000
3278@@ -0,0 +1,2 @@
3279+<?xml version="1.0" encoding="UTF-8"?>
3280+<root><from1>Jani1</from1></root>
3281
3282=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xml.res'
3283--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xml.res 1970-01-01 00:00:00 +0000
3284+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xml.res 2012-03-13 16:09:23 +0000
3285@@ -0,0 +1,2 @@
3286+<?xml version="1.0" encoding="UTF-8"?>
3287+<from1>Jani1</from1>
3288
3289=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xml.res'
3290--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xml.res 1970-01-01 00:00:00 +0000
3291+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xml.res 2012-03-13 16:09:23 +0000
3292@@ -0,0 +1,2 @@
3293+<?xml version="1.0" encoding="UTF-8"?>
3294+Jani1
3295
3296=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xml.res'
3297--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xml.res 1970-01-01 00:00:00 +0000
3298+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xml.res 2012-03-13 16:09:23 +0000
3299@@ -0,0 +1,2 @@
3300+<?xml version="1.0" encoding="UTF-8"?>
3301+
3302
3303=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xml.res'
3304--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xml.res 1970-01-01 00:00:00 +0000
3305+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xml.res 2012-03-13 16:09:23 +0000
3306@@ -0,0 +1,2 @@
3307+<?xml version="1.0" encoding="UTF-8"?>
3308+Jani1
3309
3310=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xml.res'
3311--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xml.res 1970-01-01 00:00:00 +0000
3312+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xml.res 2012-03-13 16:09:23 +0000
3313@@ -0,0 +1,2 @@
3314+<?xml version="1.0" encoding="UTF-8"?>
3315+<from1>Jani1</from1>
3316
3317=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xml.res'
3318--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xml.res 1970-01-01 00:00:00 +0000
3319+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xml.res 2012-03-13 16:09:23 +0000
3320@@ -0,0 +1,2 @@
3321+<?xml version="1.0" encoding="UTF-8"?>
3322+Jani1
3323
3324=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xml.res'
3325--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xml.res 1970-01-01 00:00:00 +0000
3326+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xml.res 2012-03-13 16:09:23 +0000
3327@@ -0,0 +1,2 @@
3328+<?xml version="1.0" encoding="UTF-8"?>
3329+Jani1
3330
3331=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xml.res'
3332--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xml.res 1970-01-01 00:00:00 +0000
3333+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xml.res 2012-03-13 16:09:23 +0000
3334@@ -0,0 +1,2 @@
3335+<?xml version="1.0" encoding="UTF-8"?>
3336+Jani1
3337
3338=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xml.res'
3339--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xml.res 1970-01-01 00:00:00 +0000
3340+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xml.res 2012-03-13 16:09:23 +0000
3341@@ -0,0 +1,2 @@
3342+<?xml version="1.0" encoding="UTF-8"?>
3343+root3 text<from1>Jani1</from1>
3344
3345=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xml.res'
3346--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xml.res 1970-01-01 00:00:00 +0000
3347+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xml.res 2012-03-13 16:09:23 +0000
3348@@ -0,0 +1,2 @@
3349+<?xml version="1.0" encoding="UTF-8"?>
3350+Jani1
3351
3352=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xml.res'
3353--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xml.res 1970-01-01 00:00:00 +0000
3354+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xml.res 2012-03-13 16:09:23 +0000
3355@@ -0,0 +1,8 @@
3356+<?xml version="1.0" encoding="UTF-8"?>
3357+<level1>
3358+ <level2>
3359+ <level3>
3360+ <level4>level4 text</level4>
3361+ </level3>
3362+ </level2>
3363+</level1>
3364
3365=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xml.res'
3366--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xml.res 1970-01-01 00:00:00 +0000
3367+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xml.res 2012-03-13 16:09:23 +0000
3368@@ -0,0 +1,8 @@
3369+<?xml version="1.0" encoding="UTF-8"?>
3370+
3371+ <level2>
3372+ <level3>
3373+ <level4>level4 text</level4>
3374+ </level3>
3375+ </level2>
3376+
3377
3378=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xml.res'
3379--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xml.res 1970-01-01 00:00:00 +0000
3380+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xml.res 2012-03-13 16:09:23 +0000
3381@@ -0,0 +1,6 @@
3382+<?xml version="1.0" encoding="UTF-8"?>
3383+
3384+ <level3>
3385+ <level4>level4 text</level4>
3386+ </level3>
3387+
3388
3389=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xml.res'
3390--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xml.res 1970-01-01 00:00:00 +0000
3391+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xml.res 2012-03-13 16:09:23 +0000
3392@@ -0,0 +1,4 @@
3393+<?xml version="1.0" encoding="UTF-8"?>
3394+
3395+ <level4>level4 text</level4>
3396+
3397
3398=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xml.res'
3399--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xml.res 1970-01-01 00:00:00 +0000
3400+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xml.res 2012-03-13 16:09:23 +0000
3401@@ -0,0 +1,2 @@
3402+<?xml version="1.0" encoding="UTF-8"?>
3403+level4 text
3404
3405=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xml.res'
3406--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xml.res 1970-01-01 00:00:00 +0000
3407+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xml.res 2012-03-13 16:09:23 +0000
3408@@ -0,0 +1,5 @@
3409+<?xml version="1.0" encoding="UTF-8"?>
3410+
3411+ <level4>level4 text</level4>
3412+ level3 end
3413+
3414
3415=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xml.res'
3416--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xml.res 1970-01-01 00:00:00 +0000
3417+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xml.res 2012-03-13 16:09:23 +0000
3418@@ -0,0 +1,14 @@
3419+<?xml version="1.0" encoding="UTF-8"?>
3420+<level1>
3421+ level1 text start
3422+ <level2>
3423+ level2 text start
3424+ <level3>
3425+ level3 text start
3426+ <level4>level4 text</level4>
3427+ level3 text end
3428+ </level3>
3429+ level2 text end
3430+ </level2>
3431+ level1 text end
3432+</level1>
3433
3434=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xml.res'
3435--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xml.res 1970-01-01 00:00:00 +0000
3436+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xml.res 2012-03-13 16:09:23 +0000
3437@@ -0,0 +1,14 @@
3438+<?xml version="1.0" encoding="UTF-8"?>
3439+
3440+ level1 text start
3441+ <level2>
3442+ level2 text start
3443+ <level3>
3444+ level3 text start
3445+ <level4>level4 text</level4>
3446+ level3 text end
3447+ </level3>
3448+ level2 text end
3449+ </level2>
3450+ level1 text end
3451+
3452
3453=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xml.res'
3454--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xml.res 1970-01-01 00:00:00 +0000
3455+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xml.res 2012-03-13 16:09:23 +0000
3456@@ -0,0 +1,10 @@
3457+<?xml version="1.0" encoding="UTF-8"?>
3458+
3459+ level2 text start
3460+ <level3>
3461+ level3 text start
3462+ <level4>level4 text</level4>
3463+ level3 text end
3464+ </level3>
3465+ level2 text end
3466+
3467
3468=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xml.res'
3469--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xml.res 1970-01-01 00:00:00 +0000
3470+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xml.res 2012-03-13 16:09:23 +0000
3471@@ -0,0 +1,6 @@
3472+<?xml version="1.0" encoding="UTF-8"?>
3473+
3474+ level3 text start
3475+ <level4>level4 text</level4>
3476+ level3 text end
3477+
3478
3479=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xml.res'
3480--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xml.res 1970-01-01 00:00:00 +0000
3481+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xml.res 2012-03-13 16:09:23 +0000
3482@@ -0,0 +1,2 @@
3483+<?xml version="1.0" encoding="UTF-8"?>
3484+level4 text
3485
3486=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xml.res'
3487--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xml.res 1970-01-01 00:00:00 +0000
3488+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xml.res 2012-03-13 16:09:23 +0000
3489@@ -0,0 +1,2 @@
3490+<?xml version="1.0" encoding="UTF-8"?>
3491+
3492
3493=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xml.res'
3494--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xml.res 1970-01-01 00:00:00 +0000
3495+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xml.res 2012-03-13 16:09:23 +0000
3496@@ -0,0 +1,59 @@
3497+<?xml version="1.0" encoding="UTF-8"?>
3498+
3499+level0 text
3500+<level1>
3501+ level1 text start
3502+ <level2>
3503+ level2 text start
3504+ <level3>
3505+ level3 text start
3506+ <level4>level4 text</level4>
3507+ level3 text end
3508+ </level3>
3509+ level2 text end
3510+ </level2>
3511+ level1 text end
3512+</level1>
3513+level0 text
3514+<level1>
3515+ level1 text start
3516+ <level2>
3517+ level2 text start
3518+ <level3>
3519+ level3 text start
3520+ <level4>level4 text</level4>
3521+ level3 text end
3522+ </level3>
3523+ level2 text end
3524+ </level2>
3525+ level1 text end
3526+</level1>
3527+level0 text
3528+<level1>
3529+ level1 text start
3530+ <level2>
3531+ level2 text start
3532+ <level3>
3533+ level3 text start
3534+ <level4>level4 text</level4>
3535+ level3 text end
3536+ </level3>
3537+ level2 text end
3538+ </level2>
3539+ level1 text end
3540+</level1>
3541+level0 text
3542+<level1>
3543+ level1 text start
3544+ <level2>
3545+ level2 text start
3546+ <level3>
3547+ level3 text start
3548+ <level4>level4 text</level4>
3549+ level3 text end
3550+ </level3>
3551+ level2 text end
3552+ </level2>
3553+ level1 text end
3554+</level1>
3555+level0 text
3556
3557=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xml.res'
3558--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xml.res 1970-01-01 00:00:00 +0000
3559+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xml.res 2012-03-13 16:09:23 +0000
3560@@ -0,0 +1,50 @@
3561+<?xml version="1.0" encoding="UTF-8"?>
3562+
3563+ level1 text start
3564+ <level2>
3565+ level2 text start
3566+ <level3>
3567+ level3 text start
3568+ <level4>level4 text</level4>
3569+ level3 text end
3570+ </level3>
3571+ level2 text end
3572+ </level2>
3573+ level1 text end
3574+
3575+ level1 text start
3576+ <level2>
3577+ level2 text start
3578+ <level3>
3579+ level3 text start
3580+ <level4>level4 text</level4>
3581+ level3 text end
3582+ </level3>
3583+ level2 text end
3584+ </level2>
3585+ level1 text end
3586+
3587+ level1 text start
3588+ <level2>
3589+ level2 text start
3590+ <level3>
3591+ level3 text start
3592+ <level4>level4 text</level4>
3593+ level3 text end
3594+ </level3>
3595+ level2 text end
3596+ </level2>
3597+ level1 text end
3598+
3599+ level1 text start
3600+ <level2>
3601+ level2 text start
3602+ <level3>
3603+ level3 text start
3604+ <level4>level4 text</level4>
3605+ level3 text end
3606+ </level3>
3607+ level2 text end
3608+ </level2>
3609+ level1 text end
3610+
3611
3612=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xml.res'
3613--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xml.res 1970-01-01 00:00:00 +0000
3614+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xml.res 2012-03-13 16:09:23 +0000
3615@@ -0,0 +1,34 @@
3616+<?xml version="1.0" encoding="UTF-8"?>
3617+
3618+ level2 text start
3619+ <level3>
3620+ level3 text start
3621+ <level4>level4 text</level4>
3622+ level3 text end
3623+ </level3>
3624+ level2 text end
3625+
3626+ level2 text start
3627+ <level3>
3628+ level3 text start
3629+ <level4>level4 text</level4>
3630+ level3 text end
3631+ </level3>
3632+ level2 text end
3633+
3634+ level2 text start
3635+ <level3>
3636+ level3 text start
3637+ <level4>level4 text</level4>
3638+ level3 text end
3639+ </level3>
3640+ level2 text end
3641+
3642+ level2 text start
3643+ <level3>
3644+ level3 text start
3645+ <level4>level4 text</level4>
3646+ level3 text end
3647+ </level3>
3648+ level2 text end
3649+
3650
3651=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xml.res'
3652--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xml.res 1970-01-01 00:00:00 +0000
3653+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xml.res 2012-03-13 16:09:23 +0000
3654@@ -0,0 +1,18 @@
3655+<?xml version="1.0" encoding="UTF-8"?>
3656+
3657+ level3 text start
3658+ <level4>level4 text</level4>
3659+ level3 text end
3660+
3661+ level3 text start
3662+ <level4>level4 text</level4>
3663+ level3 text end
3664+
3665+ level3 text start
3666+ <level4>level4 text</level4>
3667+ level3 text end
3668+
3669+ level3 text start
3670+ <level4>level4 text</level4>
3671+ level3 text end
3672+
3673
3674=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xml.res'
3675--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xml.res 1970-01-01 00:00:00 +0000
3676+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xml.res 2012-03-13 16:09:23 +0000
3677@@ -0,0 +1,2 @@
3678+<?xml version="1.0" encoding="UTF-8"?>
3679+level4 textlevel4 textlevel4 textlevel4 text
3680
3681=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xml.res'
3682--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xml.res 1970-01-01 00:00:00 +0000
3683+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xml.res 2012-03-13 16:09:23 +0000
3684@@ -0,0 +1,2 @@
3685+<?xml version="1.0" encoding="UTF-8"?>
3686+
3687
3688=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xml.res'
3689--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xml.res 1970-01-01 00:00:00 +0000
3690+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xml.res 2012-03-13 16:09:23 +0000
3691@@ -0,0 +1,14 @@
3692+<?xml version="1.0" encoding="UTF-8"?>
3693+<doc>
3694+ <foo>0</foo>
3695+ <foo>1</foo>
3696+ <foo>2</foo>
3697+ <foo>3</foo>
3698+ <foo>4</foo>
3699+ <foo>5</foo>
3700+ <foo>6</foo>
3701+ <foo>7</foo>
3702+ <foo>8</foo>
3703+ <foo>9</foo>
3704+ <foo>10</foo>
3705+</doc>
3706
3707=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xml.res'
3708--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xml.res 1970-01-01 00:00:00 +0000
3709+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xml.res 2012-03-13 16:09:23 +0000
3710@@ -0,0 +1,14 @@
3711+<?xml version="1.0" encoding="UTF-8"?>
3712+
3713+ <foo>0</foo>
3714+ <foo>1</foo>
3715+ <foo>2</foo>
3716+ <foo>3</foo>
3717+ <foo>4</foo>
3718+ <foo>5</foo>
3719+ <foo>6</foo>
3720+ <foo>7</foo>
3721+ <foo>8</foo>
3722+ <foo>9</foo>
3723+ <foo>10</foo>
3724+
3725
3726=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xml.res'
3727--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xml.res 1970-01-01 00:00:00 +0000
3728+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xml.res 2012-03-13 16:09:23 +0000
3729@@ -0,0 +1,2 @@
3730+<?xml version="1.0" encoding="UTF-8"?>
3731+012345678910
3732
3733=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xml.res'
3734--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xml.res 1970-01-01 00:00:00 +0000
3735+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xml.res 2012-03-13 16:09:23 +0000
3736@@ -0,0 +1,3 @@
3737+<?xml version="1.0" encoding="UTF-8"?>
3738+
3739+<n1:root xmlns:n1="ns" xmlns:m1="ms"><n2:root2 xmlns:n2="ns2" xmlns:m2="ms2"><n1:from1 xmlns:n3="ns3"><from2>Text from2</from2></n1:from1></n2:root2></n1:root>
3740
3741=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xml.res'
3742--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xml.res 1970-01-01 00:00:00 +0000
3743+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xml.res 2012-03-13 16:09:23 +0000
3744@@ -0,0 +1,2 @@
3745+<?xml version="1.0" encoding="UTF-8"?>
3746+<n2:root2 xmlns:n1="ns" xmlns:m1="ms" xmlns:n2="ns2" xmlns:m2="ms2"><n1:from1 xmlns:n3="ns3"><from2>Text from2</from2></n1:from1></n2:root2>
3747
3748=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xml.res'
3749--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xml.res 1970-01-01 00:00:00 +0000
3750+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xml.res 2012-03-13 16:09:23 +0000
3751@@ -0,0 +1,2 @@
3752+<?xml version="1.0" encoding="UTF-8"?>
3753+<n1:from1 xmlns:n1="ns" xmlns:m1="ms" xmlns:n2="ns2" xmlns:m2="ms2" xmlns:n3="ns3"><from2>Text from2</from2></n1:from1>
3754\ No newline at end of file
3755
3756=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xml.res'
3757--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xml.res 1970-01-01 00:00:00 +0000
3758+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xml.res 2012-03-13 16:09:23 +0000
3759@@ -0,0 +1,2 @@
3760+<?xml version="1.0" encoding="UTF-8"?>
3761+<from2 xmlns:n1="ns" xmlns:m1="ms" xmlns:n2="ns2" xmlns:m2="ms2" xmlns:n3="ns3">Text from2</from2>
3762\ No newline at end of file
3763
3764=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-44.xml.res'
3765--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-44.xml.res 1970-01-01 00:00:00 +0000
3766+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-44.xml.res 2012-03-13 16:09:23 +0000
3767@@ -0,0 +1,2 @@
3768+<?xml version="1.0" encoding="UTF-8"?>
3769+Text from2
3770\ No newline at end of file
3771
3772=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-45.xml.res'
3773--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-45.xml.res 1970-01-01 00:00:00 +0000
3774+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-45.xml.res 2012-03-13 16:09:23 +0000
3775@@ -0,0 +1,2 @@
3776+<?xml version="1.0" encoding="UTF-8"?>
3777+
3778
3779=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-46.xml.res'
3780--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-46.xml.res 1970-01-01 00:00:00 +0000
3781+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-46.xml.res 2012-03-13 16:09:23 +0000
3782@@ -0,0 +1,31 @@
3783+<?xml version="1.0" encoding="UTF-8"?>
3784+
3785+level0 text
3786+<level1/>
3787+level0 text
3788+<level1/>
3789+level0 text
3790+<level1/>
3791+level0 text
3792+<level1/>
3793+level0 text
3794+<level1/>
3795+level0 text
3796+<level1/>
3797+level0 text
3798+<level1/>
3799+level0 text
3800+<level1/>
3801+level0 text
3802+<level1/>
3803+level0 text
3804+<level1/>
3805+level0 text
3806+<level1/>
3807+level0 text
3808+<level1/>
3809+level0 text
3810+<level1/>
3811+level0 text
3812+<level1/>
3813+level0 text
3814\ No newline at end of file
3815
3816=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-53.xml.res'
3817--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-53.xml.res 1970-01-01 00:00:00 +0000
3818+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-53.xml.res 2012-03-13 16:09:23 +0000
3819@@ -0,0 +1,8 @@
3820+<?xml version="1.0" encoding="UTF-8"?>
3821+<mediawiki>
3822+ <page>
3823+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3824+
3825+ </page>
3826+</mediawiki>
3827+
3828
3829=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-54.xml.res'
3830--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-54.xml.res 1970-01-01 00:00:00 +0000
3831+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-54.xml.res 2012-03-13 16:09:23 +0000
3832@@ -0,0 +1,7 @@
3833+<?xml version="1.0" encoding="UTF-8"?>
3834+
3835+ <page>
3836+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3837+
3838+ </page>
3839+
3840
3841=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-55.xml.res'
3842--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-55.xml.res 1970-01-01 00:00:00 +0000
3843+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-55.xml.res 2012-03-13 16:09:23 +0000
3844@@ -0,0 +1,8 @@
3845+<?xml version="1.0" encoding="UTF-8"?>
3846+<mediawiki>
3847+ <page>
3848+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
3849+
3850+ </page>
3851+</mediawiki>
3852+
3853
3854=== added file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-56.xml.res'
3855--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-56.xml.res 1970-01-01 00:00:00 +0000
3856+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-fragment-skip-root-56.xml.res 2012-03-13 16:09:23 +0000
3857@@ -0,0 +1,7 @@
3858+<?xml version="1.0" encoding="UTF-8"?>
3859+
3860+ <page>
3861+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
3862+
3863+ </page>
3864+
3865
3866=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-01.xml.res' (properties changed: +x to -x)
3867=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-03.xml.res' (properties changed: +x to -x)
3868=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-04.xml.res' (properties changed: +x to -x)
3869=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-05.xml.res' (properties changed: +x to -x)
3870=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-07.xml.res' (properties changed: +x to -x)
3871=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-10.xml.res' (properties changed: +x to -x)
3872=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-11.xml.res' (properties changed: +x to -x)
3873=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-12.xml.res' (properties changed: +x to -x)
3874--- test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-12.xml.res 2011-07-15 16:39:51 +0000
3875+++ test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-12.xml.res 2012-03-13 16:09:23 +0000
3876@@ -1,4 +1,4 @@
3877 <?xml version="1.0" encoding="UTF-8"?>
3878 <fragment><from1>Jani</from1>
3879 <from2>Jani</from2>
3880-<from3>Jani</from3><count>5</count></fragment>
3881\ No newline at end of file
3882+<from3>Jani</from3><count>6</count></fragment>
3883\ No newline at end of file
3884
3885=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-14.xml.res' (properties changed: +x to -x)
3886=== modified file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-15.xml.res' (properties changed: +x to -x)
3887=== renamed file 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-18.xml.res' => 'test/rbkt/ExpQueryResults/zorba/parsing_and_serializing/parse-xml-fragment-16.xml.res'
3888=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xq'
3889--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xq 1970-01-01 00:00:00 +0000
3890+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-01.xq 2012-03-13 16:09:23 +0000
3891@@ -0,0 +1,8 @@
3892+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
3893+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
3894+
3895+z:parse("<?xml version='1.0'?><root><from1>Jani</from1></root>",
3896+ <opt:options>
3897+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
3898+ </opt:options>
3899+)
3900
3901=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xq'
3902--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xq 1970-01-01 00:00:00 +0000
3903+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-02.xq 2012-03-13 16:09:23 +0000
3904@@ -0,0 +1,13 @@
3905+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
3906+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
3907+
3908+z:parse("<?xml version='1.0'?>
3909+<root>
3910+ <from1>Jani1</from1>
3911+ <from2>Jani2</from2>
3912+ <from3>Jani3</from3>
3913+</root>",
3914+ <opt:options>
3915+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
3916+ </opt:options>
3917+)
3918
3919=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xq'
3920--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xq 1970-01-01 00:00:00 +0000
3921+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-03.xq 2012-03-13 16:09:23 +0000
3922@@ -0,0 +1,13 @@
3923+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
3924+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
3925+
3926+z:parse("<?xml version='1.0'?>
3927+<root>
3928+ <from1>Jani1</from1>
3929+ <from2>Jani2</from2>
3930+ <from3>Jani3</from3>
3931+</root>",
3932+ <opt:options>
3933+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
3934+ </opt:options>
3935+)
3936
3937=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xq'
3938--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xq 1970-01-01 00:00:00 +0000
3939+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-04.xq 2012-03-13 16:09:23 +0000
3940@@ -0,0 +1,19 @@
3941+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
3942+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
3943+
3944+z:parse("<?xml version='1.0'?>
3945+<root>
3946+ <root2>
3947+ <from1>Jani1</from1>
3948+ </root2>
3949+ <root2>
3950+ <from2>Jani2</from2>
3951+ </root2>
3952+ <root2>
3953+ <from3>Jani3</from3>
3954+ </root2>
3955+</root>",
3956+ <opt:options>
3957+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
3958+ </opt:options>
3959+)
3960
3961=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xq'
3962--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xq 1970-01-01 00:00:00 +0000
3963+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-05.xq 2012-03-13 16:09:23 +0000
3964@@ -0,0 +1,19 @@
3965+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
3966+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
3967+
3968+z:parse("<?xml version='1.0'?>
3969+<root>
3970+ <root2>
3971+ <from1>Jani1</from1>
3972+ </root2>
3973+ <root2>
3974+ <from2>Jani2</from2>
3975+ </root2>
3976+ <root2>
3977+ <from3>Jani3</from3>
3978+ </root2>
3979+</root>",
3980+ <opt:options>
3981+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
3982+ </opt:options>
3983+)
3984
3985=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xq'
3986--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xq 1970-01-01 00:00:00 +0000
3987+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-06.xq 2012-03-13 16:09:23 +0000
3988@@ -0,0 +1,19 @@
3989+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
3990+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
3991+
3992+z:parse("<?xml version='1.0'?>
3993+<root>
3994+ <root2>
3995+ <from1>Jani1</from1>
3996+ </root2>
3997+ <root2>
3998+ <from2>Jani2</from2>
3999+ </root2>
4000+ <root2>
4001+ <from3>Jani3</from3>
4002+ </root2>
4003+</root>",
4004+ <opt:options>
4005+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4006+ </opt:options>
4007+)
4008
4009=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xq'
4010--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xq 1970-01-01 00:00:00 +0000
4011+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-07.xq 2012-03-13 16:09:23 +0000
4012@@ -0,0 +1,19 @@
4013+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4014+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4015+
4016+z:parse("<?xml version='1.0'?>
4017+<root>
4018+ <root2>
4019+ <from1>Jani1</from1>
4020+ </root2>
4021+ <root2>
4022+ <from2>Jani2</from2>
4023+ </root2>
4024+ <root2>
4025+ <from3>Jani3</from3>
4026+ </root2>
4027+</root>",
4028+ <opt:options>
4029+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4030+ </opt:options>
4031+)
4032
4033=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xq'
4034--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xq 1970-01-01 00:00:00 +0000
4035+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-08.xq 2012-03-13 16:09:23 +0000
4036@@ -0,0 +1,9 @@
4037+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4038+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4039+
4040+z:parse("<?xml version='1.0'?>
4041+<root><from1>Jani1</from1></root>",
4042+ <opt:options>
4043+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
4044+ </opt:options>
4045+)
4046
4047=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xq'
4048--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xq 1970-01-01 00:00:00 +0000
4049+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-09.xq 2012-03-13 16:09:23 +0000
4050@@ -0,0 +1,9 @@
4051+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4052+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4053+
4054+z:parse("<?xml version='1.0'?>
4055+<root><from1>Jani1</from1></root>",
4056+ <opt:options>
4057+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
4058+ </opt:options>
4059+)
4060
4061=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xq'
4062--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xq 1970-01-01 00:00:00 +0000
4063+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-10.xq 2012-03-13 16:09:23 +0000
4064@@ -0,0 +1,9 @@
4065+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4066+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4067+
4068+z:parse("<?xml version='1.0'?>
4069+<root><from1>Jani1</from1></root>",
4070+ <opt:options>
4071+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4072+ </opt:options>
4073+)
4074
4075=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xq'
4076--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xq 1970-01-01 00:00:00 +0000
4077+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-11.xq 2012-03-13 16:09:23 +0000
4078@@ -0,0 +1,9 @@
4079+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4080+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4081+
4082+z:parse("<?xml version='1.0'?>
4083+<root><from1>Jani1</from1></root>",
4084+ <opt:options>
4085+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4086+ </opt:options>
4087+)
4088
4089=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xq'
4090--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xq 1970-01-01 00:00:00 +0000
4091+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-12.xq 2012-03-13 16:09:23 +0000
4092@@ -0,0 +1,9 @@
4093+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4094+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4095+
4096+z:parse("<?xml version='1.0'?>
4097+<root><root2><from1>Jani1</from1></root2></root>",
4098+ <opt:options>
4099+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4100+ </opt:options>
4101+)
4102
4103=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xq'
4104--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xq 1970-01-01 00:00:00 +0000
4105+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-13.xq 2012-03-13 16:09:23 +0000
4106@@ -0,0 +1,9 @@
4107+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4108+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4109+
4110+z:parse("<?xml version='1.0'?>
4111+<root><root2><root3><from1>Jani1</from1></root3></root2></root>",
4112+ <opt:options>
4113+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4114+ </opt:options>
4115+)
4116
4117=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xq'
4118--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xq 1970-01-01 00:00:00 +0000
4119+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-14.xq 2012-03-13 16:09:23 +0000
4120@@ -0,0 +1,9 @@
4121+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4122+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4123+
4124+z:parse("<?xml version='1.0'?>
4125+<root><root2><root3><from1>Jani1</from1></root3></root2></root>",
4126+ <opt:options>
4127+ <opt:parse-external-parsed-entity opt:skip-root-nodes="4"/>
4128+ </opt:options>
4129+)
4130
4131=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xq'
4132--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xq 1970-01-01 00:00:00 +0000
4133+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-15.xq 2012-03-13 16:09:23 +0000
4134@@ -0,0 +1,8 @@
4135+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4136+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4137+
4138+z:parse("<?xml version='1.0'?><root>root1 text<root2>root2 text<root3>root3 text<from1>Jani1</from1></root3></root2></root>",
4139+ <opt:options>
4140+ <opt:parse-external-parsed-entity opt:skip-root-nodes="4"/>
4141+ </opt:options>
4142+)
4143
4144=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xq'
4145--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xq 1970-01-01 00:00:00 +0000
4146+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-16.xq 2012-03-13 16:09:23 +0000
4147@@ -0,0 +1,8 @@
4148+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4149+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4150+
4151+z:parse("<?xml version='1.0'?><root>root1 text<root15>root15 text</root15><root2>root2 text<root3>root3 text<from1>Jani1</from1></root3></root2></root>",
4152+ <opt:options>
4153+ <opt:parse-external-parsed-entity opt:skip-root-nodes="4"/>
4154+ </opt:options>
4155+)
4156
4157=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xq'
4158--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xq 1970-01-01 00:00:00 +0000
4159+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-17.xq 2012-03-13 16:09:23 +0000
4160@@ -0,0 +1,8 @@
4161+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4162+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4163+
4164+z:parse("<?xml version='1.0'?><root>root1 text<root15>root15 text</root15><root2>root2 text<root3>root3 text<from1>Jani1</from1></root3></root2></root>",
4165+ <opt:options>
4166+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4167+ </opt:options>
4168+)
4169
4170=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xq'
4171--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xq 1970-01-01 00:00:00 +0000
4172+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-18.xq 2012-03-13 16:09:23 +0000
4173@@ -0,0 +1,9 @@
4174+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4175+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4176+
4177+z:parse("<?xml version='1.0'?>
4178+<root>Jani0<from1>Jani1</from1></root>",
4179+ <opt:options>
4180+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4181+ </opt:options>
4182+)
4183
4184=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xq'
4185--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xq 1970-01-01 00:00:00 +0000
4186+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-19.xq 2012-03-13 16:09:23 +0000
4187@@ -0,0 +1,15 @@
4188+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4189+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4190+
4191+z:parse("<?xml version='1.0'?>
4192+<level1>
4193+ <level2>
4194+ <level3>
4195+ <level4>level4 text</level4>
4196+ </level3>
4197+ </level2>
4198+</level1>",
4199+ <opt:options>
4200+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
4201+ </opt:options>
4202+)
4203
4204=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xq'
4205--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xq 1970-01-01 00:00:00 +0000
4206+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-20.xq 2012-03-13 16:09:23 +0000
4207@@ -0,0 +1,15 @@
4208+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4209+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4210+
4211+z:parse("<?xml version='1.0'?>
4212+<level1>
4213+ <level2>
4214+ <level3>
4215+ <level4>level4 text</level4>
4216+ </level3>
4217+ </level2>
4218+</level1>",
4219+ <opt:options>
4220+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
4221+ </opt:options>
4222+)
4223
4224=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xq'
4225--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xq 1970-01-01 00:00:00 +0000
4226+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-21.xq 2012-03-13 16:09:23 +0000
4227@@ -0,0 +1,15 @@
4228+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4229+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4230+
4231+z:parse("<?xml version='1.0'?>
4232+<level1>
4233+ <level2>
4234+ <level3>
4235+ <level4>level4 text</level4>
4236+ </level3>
4237+ </level2>
4238+</level1>",
4239+ <opt:options>
4240+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4241+ </opt:options>
4242+)
4243
4244=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xq'
4245--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xq 1970-01-01 00:00:00 +0000
4246+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-22.xq 2012-03-13 16:09:23 +0000
4247@@ -0,0 +1,15 @@
4248+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4249+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4250+
4251+z:parse("<?xml version='1.0'?>
4252+<level1>
4253+ <level2>
4254+ <level3>
4255+ <level4>level4 text</level4>
4256+ </level3>
4257+ </level2>
4258+</level1>",
4259+ <opt:options>
4260+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4261+ </opt:options>
4262+)
4263
4264=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xq'
4265--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xq 1970-01-01 00:00:00 +0000
4266+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-23.xq 2012-03-13 16:09:23 +0000
4267@@ -0,0 +1,15 @@
4268+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4269+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4270+
4271+z:parse("<?xml version='1.0'?>
4272+<level1>
4273+ <level2>
4274+ <level3>
4275+ <level4>level4 text</level4>
4276+ </level3>
4277+ </level2>
4278+</level1>",
4279+ <opt:options>
4280+ <opt:parse-external-parsed-entity opt:skip-root-nodes="4"/>
4281+ </opt:options>
4282+)
4283
4284=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xq'
4285--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xq 1970-01-01 00:00:00 +0000
4286+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-24.xq 2012-03-13 16:09:23 +0000
4287@@ -0,0 +1,16 @@
4288+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4289+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4290+
4291+z:parse("<?xml version='1.0'?>
4292+<level1>
4293+ <level2>
4294+ <level3>
4295+ <level4>level4 text</level4>
4296+ level3 end
4297+ </level3>
4298+ </level2>
4299+</level1>",
4300+ <opt:options>
4301+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4302+ </opt:options>
4303+)
4304
4305=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xq'
4306--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xq 1970-01-01 00:00:00 +0000
4307+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-25.xq 2012-03-13 16:09:23 +0000
4308@@ -0,0 +1,21 @@
4309+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4310+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4311+
4312+z:parse("<?xml version='1.0'?>
4313+<level1>
4314+ level1 text start
4315+ <level2>
4316+ level2 text start
4317+ <level3>
4318+ level3 text start
4319+ <level4>level4 text</level4>
4320+ level3 text end
4321+ </level3>
4322+ level2 text end
4323+ </level2>
4324+ level1 text end
4325+</level1>",
4326+ <opt:options>
4327+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
4328+ </opt:options>
4329+)
4330
4331=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xq'
4332--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xq 1970-01-01 00:00:00 +0000
4333+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-26.xq 2012-03-13 16:09:23 +0000
4334@@ -0,0 +1,21 @@
4335+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4336+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4337+
4338+z:parse("<?xml version='1.0'?>
4339+<level1>
4340+ level1 text start
4341+ <level2>
4342+ level2 text start
4343+ <level3>
4344+ level3 text start
4345+ <level4>level4 text</level4>
4346+ level3 text end
4347+ </level3>
4348+ level2 text end
4349+ </level2>
4350+ level1 text end
4351+</level1>",
4352+ <opt:options>
4353+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
4354+ </opt:options>
4355+)
4356
4357=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xq'
4358--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xq 1970-01-01 00:00:00 +0000
4359+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-27.xq 2012-03-13 16:09:23 +0000
4360@@ -0,0 +1,21 @@
4361+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4362+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4363+
4364+z:parse("<?xml version='1.0'?>
4365+<level1>
4366+ level1 text start
4367+ <level2>
4368+ level2 text start
4369+ <level3>
4370+ level3 text start
4371+ <level4>level4 text</level4>
4372+ level3 text end
4373+ </level3>
4374+ level2 text end
4375+ </level2>
4376+ level1 text end
4377+</level1>",
4378+ <opt:options>
4379+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4380+ </opt:options>
4381+)
4382
4383=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xq'
4384--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xq 1970-01-01 00:00:00 +0000
4385+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-28.xq 2012-03-13 16:09:23 +0000
4386@@ -0,0 +1,21 @@
4387+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4388+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4389+
4390+z:parse("<?xml version='1.0'?>
4391+<level1>
4392+ level1 text start
4393+ <level2>
4394+ level2 text start
4395+ <level3>
4396+ level3 text start
4397+ <level4>level4 text</level4>
4398+ level3 text end
4399+ </level3>
4400+ level2 text end
4401+ </level2>
4402+ level1 text end
4403+</level1>",
4404+ <opt:options>
4405+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4406+ </opt:options>
4407+)
4408
4409=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xq'
4410--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xq 1970-01-01 00:00:00 +0000
4411+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-29.xq 2012-03-13 16:09:23 +0000
4412@@ -0,0 +1,21 @@
4413+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4414+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4415+
4416+z:parse("<?xml version='1.0'?>
4417+<level1>
4418+ level1 text start
4419+ <level2>
4420+ level2 text start
4421+ <level3>
4422+ level3 text start
4423+ <level4>level4 text</level4>
4424+ level3 text end
4425+ </level3>
4426+ level2 text end
4427+ </level2>
4428+ level1 text end
4429+</level1>",
4430+ <opt:options>
4431+ <opt:parse-external-parsed-entity opt:skip-root-nodes="4"/>
4432+ </opt:options>
4433+)
4434
4435=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xq'
4436--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xq 1970-01-01 00:00:00 +0000
4437+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-30.xq 2012-03-13 16:09:23 +0000
4438@@ -0,0 +1,21 @@
4439+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4440+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4441+
4442+z:parse("<?xml version='1.0'?>
4443+<level1>
4444+ level1 text start
4445+ <level2>
4446+ level2 text start
4447+ <level3>
4448+ level3 text start
4449+ <level4>level4 text</level4>
4450+ level3 text end
4451+ </level3>
4452+ level2 text end
4453+ </level2>
4454+ level1 text end
4455+</level1>",
4456+ <opt:options>
4457+ <opt:parse-external-parsed-entity opt:skip-root-nodes="5"/>
4458+ </opt:options>
4459+)
4460
4461=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xq'
4462--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xq 1970-01-01 00:00:00 +0000
4463+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-31.xq 2012-03-13 16:09:23 +0000
4464@@ -0,0 +1,65 @@
4465+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4466+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4467+
4468+z:parse("<?xml version='1.0'?>
4469+level0 text
4470+<level1>
4471+ level1 text start
4472+ <level2>
4473+ level2 text start
4474+ <level3>
4475+ level3 text start
4476+ <level4>level4 text</level4>
4477+ level3 text end
4478+ </level3>
4479+ level2 text end
4480+ </level2>
4481+ level1 text end
4482+</level1>
4483+level0 text
4484+<level1>
4485+ level1 text start
4486+ <level2>
4487+ level2 text start
4488+ <level3>
4489+ level3 text start
4490+ <level4>level4 text</level4>
4491+ level3 text end
4492+ </level3>
4493+ level2 text end
4494+ </level2>
4495+ level1 text end
4496+</level1>
4497+level0 text
4498+<level1>
4499+ level1 text start
4500+ <level2>
4501+ level2 text start
4502+ <level3>
4503+ level3 text start
4504+ <level4>level4 text</level4>
4505+ level3 text end
4506+ </level3>
4507+ level2 text end
4508+ </level2>
4509+ level1 text end
4510+</level1>
4511+level0 text
4512+<level1>
4513+ level1 text start
4514+ <level2>
4515+ level2 text start
4516+ <level3>
4517+ level3 text start
4518+ <level4>level4 text</level4>
4519+ level3 text end
4520+ </level3>
4521+ level2 text end
4522+ </level2>
4523+ level1 text end
4524+</level1>
4525+level0 text",
4526+ <opt:options>
4527+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
4528+ </opt:options>
4529+)
4530
4531=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xq'
4532--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xq 1970-01-01 00:00:00 +0000
4533+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-32.xq 2012-03-13 16:09:23 +0000
4534@@ -0,0 +1,65 @@
4535+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4536+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4537+
4538+z:parse("<?xml version='1.0'?>
4539+level0 text
4540+<level1>
4541+ level1 text start
4542+ <level2>
4543+ level2 text start
4544+ <level3>
4545+ level3 text start
4546+ <level4>level4 text</level4>
4547+ level3 text end
4548+ </level3>
4549+ level2 text end
4550+ </level2>
4551+ level1 text end
4552+</level1>
4553+level0 text
4554+<level1>
4555+ level1 text start
4556+ <level2>
4557+ level2 text start
4558+ <level3>
4559+ level3 text start
4560+ <level4>level4 text</level4>
4561+ level3 text end
4562+ </level3>
4563+ level2 text end
4564+ </level2>
4565+ level1 text end
4566+</level1>
4567+level0 text
4568+<level1>
4569+ level1 text start
4570+ <level2>
4571+ level2 text start
4572+ <level3>
4573+ level3 text start
4574+ <level4>level4 text</level4>
4575+ level3 text end
4576+ </level3>
4577+ level2 text end
4578+ </level2>
4579+ level1 text end
4580+</level1>
4581+level0 text
4582+<level1>
4583+ level1 text start
4584+ <level2>
4585+ level2 text start
4586+ <level3>
4587+ level3 text start
4588+ <level4>level4 text</level4>
4589+ level3 text end
4590+ </level3>
4591+ level2 text end
4592+ </level2>
4593+ level1 text end
4594+</level1>
4595+level0 text",
4596+ <opt:options>
4597+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
4598+ </opt:options>
4599+)
4600
4601=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xq'
4602--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xq 1970-01-01 00:00:00 +0000
4603+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-33.xq 2012-03-13 16:09:23 +0000
4604@@ -0,0 +1,65 @@
4605+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4606+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4607+
4608+z:parse("<?xml version='1.0'?>
4609+level0 text
4610+<level1>
4611+ level1 text start
4612+ <level2>
4613+ level2 text start
4614+ <level3>
4615+ level3 text start
4616+ <level4>level4 text</level4>
4617+ level3 text end
4618+ </level3>
4619+ level2 text end
4620+ </level2>
4621+ level1 text end
4622+</level1>
4623+level0 text
4624+<level1>
4625+ level1 text start
4626+ <level2>
4627+ level2 text start
4628+ <level3>
4629+ level3 text start
4630+ <level4>level4 text</level4>
4631+ level3 text end
4632+ </level3>
4633+ level2 text end
4634+ </level2>
4635+ level1 text end
4636+</level1>
4637+level0 text
4638+<level1>
4639+ level1 text start
4640+ <level2>
4641+ level2 text start
4642+ <level3>
4643+ level3 text start
4644+ <level4>level4 text</level4>
4645+ level3 text end
4646+ </level3>
4647+ level2 text end
4648+ </level2>
4649+ level1 text end
4650+</level1>
4651+level0 text
4652+<level1>
4653+ level1 text start
4654+ <level2>
4655+ level2 text start
4656+ <level3>
4657+ level3 text start
4658+ <level4>level4 text</level4>
4659+ level3 text end
4660+ </level3>
4661+ level2 text end
4662+ </level2>
4663+ level1 text end
4664+</level1>
4665+level0 text",
4666+ <opt:options>
4667+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4668+ </opt:options>
4669+)
4670
4671=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xq'
4672--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xq 1970-01-01 00:00:00 +0000
4673+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-34.xq 2012-03-13 16:09:23 +0000
4674@@ -0,0 +1,65 @@
4675+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4676+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4677+
4678+z:parse("<?xml version='1.0'?>
4679+level0 text
4680+<level1>
4681+ level1 text start
4682+ <level2>
4683+ level2 text start
4684+ <level3>
4685+ level3 text start
4686+ <level4>level4 text</level4>
4687+ level3 text end
4688+ </level3>
4689+ level2 text end
4690+ </level2>
4691+ level1 text end
4692+</level1>
4693+level0 text
4694+<level1>
4695+ level1 text start
4696+ <level2>
4697+ level2 text start
4698+ <level3>
4699+ level3 text start
4700+ <level4>level4 text</level4>
4701+ level3 text end
4702+ </level3>
4703+ level2 text end
4704+ </level2>
4705+ level1 text end
4706+</level1>
4707+level0 text
4708+<level1>
4709+ level1 text start
4710+ <level2>
4711+ level2 text start
4712+ <level3>
4713+ level3 text start
4714+ <level4>level4 text</level4>
4715+ level3 text end
4716+ </level3>
4717+ level2 text end
4718+ </level2>
4719+ level1 text end
4720+</level1>
4721+level0 text
4722+<level1>
4723+ level1 text start
4724+ <level2>
4725+ level2 text start
4726+ <level3>
4727+ level3 text start
4728+ <level4>level4 text</level4>
4729+ level3 text end
4730+ </level3>
4731+ level2 text end
4732+ </level2>
4733+ level1 text end
4734+</level1>
4735+level0 text",
4736+ <opt:options>
4737+ <opt:parse-external-parsed-entity opt:skip-root-nodes="3"/>
4738+ </opt:options>
4739+)
4740
4741=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xq'
4742--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xq 1970-01-01 00:00:00 +0000
4743+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-35.xq 2012-03-13 16:09:23 +0000
4744@@ -0,0 +1,65 @@
4745+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4746+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4747+
4748+z:parse("<?xml version='1.0'?>
4749+level0 text
4750+<level1>
4751+ level1 text start
4752+ <level2>
4753+ level2 text start
4754+ <level3>
4755+ level3 text start
4756+ <level4>level4 text</level4>
4757+ level3 text end
4758+ </level3>
4759+ level2 text end
4760+ </level2>
4761+ level1 text end
4762+</level1>
4763+level0 text
4764+<level1>
4765+ level1 text start
4766+ <level2>
4767+ level2 text start
4768+ <level3>
4769+ level3 text start
4770+ <level4>level4 text</level4>
4771+ level3 text end
4772+ </level3>
4773+ level2 text end
4774+ </level2>
4775+ level1 text end
4776+</level1>
4777+level0 text
4778+<level1>
4779+ level1 text start
4780+ <level2>
4781+ level2 text start
4782+ <level3>
4783+ level3 text start
4784+ <level4>level4 text</level4>
4785+ level3 text end
4786+ </level3>
4787+ level2 text end
4788+ </level2>
4789+ level1 text end
4790+</level1>
4791+level0 text
4792+<level1>
4793+ level1 text start
4794+ <level2>
4795+ level2 text start
4796+ <level3>
4797+ level3 text start
4798+ <level4>level4 text</level4>
4799+ level3 text end
4800+ </level3>
4801+ level2 text end
4802+ </level2>
4803+ level1 text end
4804+</level1>
4805+level0 text",
4806+ <opt:options>
4807+ <opt:parse-external-parsed-entity opt:skip-root-nodes="4"/>
4808+ </opt:options>
4809+)
4810
4811=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xq'
4812--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xq 1970-01-01 00:00:00 +0000
4813+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-36.xq 2012-03-13 16:09:23 +0000
4814@@ -0,0 +1,65 @@
4815+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4816+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4817+
4818+z:parse("<?xml version='1.0'?>
4819+level0 text
4820+<level1>
4821+ level1 text start
4822+ <level2>
4823+ level2 text start
4824+ <level3>
4825+ level3 text start
4826+ <level4>level4 text</level4>
4827+ level3 text end
4828+ </level3>
4829+ level2 text end
4830+ </level2>
4831+ level1 text end
4832+</level1>
4833+level0 text
4834+<level1>
4835+ level1 text start
4836+ <level2>
4837+ level2 text start
4838+ <level3>
4839+ level3 text start
4840+ <level4>level4 text</level4>
4841+ level3 text end
4842+ </level3>
4843+ level2 text end
4844+ </level2>
4845+ level1 text end
4846+</level1>
4847+level0 text
4848+<level1>
4849+ level1 text start
4850+ <level2>
4851+ level2 text start
4852+ <level3>
4853+ level3 text start
4854+ <level4>level4 text</level4>
4855+ level3 text end
4856+ </level3>
4857+ level2 text end
4858+ </level2>
4859+ level1 text end
4860+</level1>
4861+level0 text
4862+<level1>
4863+ level1 text start
4864+ <level2>
4865+ level2 text start
4866+ <level3>
4867+ level3 text start
4868+ <level4>level4 text</level4>
4869+ level3 text end
4870+ </level3>
4871+ level2 text end
4872+ </level2>
4873+ level1 text end
4874+</level1>
4875+level0 text",
4876+ <opt:options>
4877+ <opt:parse-external-parsed-entity opt:skip-root-nodes="5"/>
4878+ </opt:options>
4879+)
4880
4881=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xq'
4882--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xq 1970-01-01 00:00:00 +0000
4883+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-37.xq 2012-03-13 16:09:23 +0000
4884@@ -0,0 +1,20 @@
4885+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4886+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4887+
4888+z:parse("<doc>
4889+ <foo>0</foo>
4890+ <foo>1</foo>
4891+ <foo>2</foo>
4892+ <foo>3</foo>
4893+ <foo>4</foo>
4894+ <foo>5</foo>
4895+ <foo>6</foo>
4896+ <foo>7</foo>
4897+ <foo>8</foo>
4898+ <foo>9</foo>
4899+ <foo>10</foo>
4900+</doc>",
4901+ <opt:options>
4902+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
4903+ </opt:options>
4904+)
4905
4906=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xq'
4907--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xq 1970-01-01 00:00:00 +0000
4908+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-38.xq 2012-03-13 16:09:23 +0000
4909@@ -0,0 +1,20 @@
4910+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4911+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4912+
4913+z:parse("<doc>
4914+ <foo>0</foo>
4915+ <foo>1</foo>
4916+ <foo>2</foo>
4917+ <foo>3</foo>
4918+ <foo>4</foo>
4919+ <foo>5</foo>
4920+ <foo>6</foo>
4921+ <foo>7</foo>
4922+ <foo>8</foo>
4923+ <foo>9</foo>
4924+ <foo>10</foo>
4925+</doc>",
4926+ <opt:options>
4927+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
4928+ </opt:options>
4929+)
4930
4931=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xq'
4932--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xq 1970-01-01 00:00:00 +0000
4933+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-39.xq 2012-03-13 16:09:23 +0000
4934@@ -0,0 +1,20 @@
4935+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4936+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4937+
4938+z:parse("<doc>
4939+ <foo>0</foo>
4940+ <foo>1</foo>
4941+ <foo>2</foo>
4942+ <foo>3</foo>
4943+ <foo>4</foo>
4944+ <foo>5</foo>
4945+ <foo>6</foo>
4946+ <foo>7</foo>
4947+ <foo>8</foo>
4948+ <foo>9</foo>
4949+ <foo>10</foo>
4950+</doc>",
4951+ <opt:options>
4952+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4953+ </opt:options>
4954+)
4955
4956=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xq'
4957--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xq 1970-01-01 00:00:00 +0000
4958+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-40.xq 2012-03-13 16:09:23 +0000
4959@@ -0,0 +1,9 @@
4960+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4961+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4962+
4963+z:parse("<?xml version='1.0'?>
4964+<n1:root xmlns:n1='ns' xmlns:m1='ms'><n2:root2 xmlns:n2='ns2' xmlns:m2='ms2'><n1:from1 xmlns:n3='ns3'><from2>Text from2</from2></n1:from1></n2:root2></n1:root>",
4965+ <opt:options>
4966+ <opt:parse-external-parsed-entity opt:skip-root-nodes="0"/>
4967+ </opt:options>
4968+)
4969
4970=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xq'
4971--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xq 1970-01-01 00:00:00 +0000
4972+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-41.xq 2012-03-13 16:09:23 +0000
4973@@ -0,0 +1,9 @@
4974+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4975+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4976+
4977+z:parse("<?xml version='1.0'?>
4978+<n1:root xmlns:n1='ns' xmlns:m1='ms'><n2:root2 xmlns:n2='ns2' xmlns:m2='ms2'><n1:from1 xmlns:n3='ns3'><from2>Text from2</from2></n1:from1></n2:root2></n1:root>",
4979+ <opt:options>
4980+ <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
4981+ </opt:options>
4982+)
4983
4984=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xq'
4985--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xq 1970-01-01 00:00:00 +0000
4986+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-42.xq 2012-03-13 16:09:23 +0000
4987@@ -0,0 +1,9 @@
4988+import module namespace z = "http://www.zorba-xquery.com/modules/xml";
4989+import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";
4990+
4991+z:parse("<?xml version='1.0'?>
4992+<n1:root xmlns:n1='ns' xmlns:m1='ms'><n2:root2 xmlns:n2='ns2' xmlns:m2='ms2'><n1:from1 xmlns:n3='ns3'><from2>Text from2</from2></n1:from1></n2:root2></n1:root>",
4993+ <opt:options>
4994+ <opt:parse-external-parsed-entity opt:skip-root-nodes="2"/>
4995+ </opt:options>
4996+)
4997
4998=== added file 'test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xq'
4999--- test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xq 1970-01-01 00:00:00 +0000
5000+++ test/rbkt/Queries/zorba/parsing_and_serializing/parse-fragment-skip-root-43.xq 2012-03-13 16:09:23 +0000
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches