Ah, but you forgot the comma.  :)  My code has a comma between the PI and root.

The document node constructor takes a sequence of expressions and makes them 
into a document.

-jh-

On Jul 30, 2014, at 5:48 PM, neil bradley <[email protected]> wrote:

> I am not saying that the ZIP solution does not work - I expect that it does.
> 
> I am saying that the solution to construct an XML document in memory does
> not work.
> 
> This does not work...
> 
>    document { <?hi there?><Root><?hi there?></Root> }
> 
> Neil.
> 
> 
> 
> on 30/7/14 10:32 AM, Jason Hunter <[email protected]> wrote:
> 
>> I ran the exact code I sent you just now on my laptop and it worked fine.
>> The file was saved and on unzipping the file and viewing it in a text
> editor
>> I see the PI before the root node as well as inside it.
>> 
>> You're saying it "does not work".  I'll need you to be specific on what's
>> happening because I'm seeing it work.  And definitely to make a valid
>> expression where there's a PI before the root you need the document node
>> wrapper to make it one expression not two.
>> 
>> -jh-
>> 
>> On Jul 30, 2014, at 5:26 PM, neil bradley <[email protected]> wrote:
>> 
>>> Jason,
>>> 
>>> Thanks for your answers, and I expect that your solution
>>> to the ZIP problem will help me.
>>> 
>>> But I dont think you noticed that I was saying that the document node
> does
>>> NOT WORK:
>>> 
>>> document { <?hi there?><Root><?hi there?></Root> }
>>> 
>>> Now that is totally valid XML so I cant see why it fails.
>>> 
>>> Neil.
>>> 
>>> 
>>> 
>>> on 30/7/14 10:17 AM, Jason Hunter <[email protected]> wrote:
>>> 
>>>>> Just one more point. I had thought I would solved the first, more minor
>>>>> issue, by wrapping the XML in a document node. But that still does not
>>>>> work...
>>>>> 
>>>>> document { <?hi there?><Root><?hi there?></Root> }
>>>> 
>>>> Correct, because without that you were providing two independent
>>> expressions
>>>> without a comma between them.  You need the document wrapper to make it
> a
>>>> single expression.
>>>> 
>>>> I think there may be a bug in xdmp:zip-create() where only the root node
>>> is
>>>> used.  I was able to fix it by making the document into a string first:
>>>> 
>>>> let $doc := document {
>>>> <?hi there?>,
>>>> <Root><?hi there?></Root>
>>>> }
>>>> 
>>>> let $parts := <parts xmlns="xdmp:zip"><part>MyDoc.xml</part></parts>
>>>> let $zip := xdmp:zip-create($parts, text { xdmp:quote($doc) })
>>> (:
>>>> quoted! :)
>>>> let $save := xdmp:save("/tmp/test.zip", $zip,
>>>> <options xmlns="xdmp:save"><encoding>utf8</encoding></options>)
>>>> return "fixed"
>>>> 
>>>> -jh-
>>>> 
>>>>> 
>>>>> 
>>>>> Neil.
>>>>> 
>>>>> 
>>>>> 
>>>>> on 30/7/14 9:51 AM, neil bradley <[email protected]> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> I am having two problems with processing instructions.
>>>>>> 
>>>>>> First, in general it seems I cannot create one that is before the root
>>>>>> element.
>>>>>> 
>>>>>> I can type this into QC and run it and the result is as expected:
>>>>>> 
>>>>>> <?hi there?>
>>>>>> 
>>>>>> I can also have one embedded in an element and again it is preserved
>>>>>> in the output:
>>>>>> 
>>>>>> <Root><?hi there?></Root>
>>>>>> 
>>>>>> But it seems I cannot have a PI before a root element. This does not
>>>>>> work when I enter it into QC, and I get “unexpected token syntax
>>>>>> error”:
>>>>>> 
>>>>>> <?hi there?>
>>>>>> <Root><?hi there?></Root>
>>>>>> 
>>>>>> However, that is a side issue to my main concern…
>>>>>> 
>>>>>> I can import an XML document that has a leading PI, store it in ML,
>>>>>> and it is still there when I query the document. I can even save it
>>>>>> using xdmp:save() and the PI is still there, as I would expect. But
>>>>>> when I store the XML file in a ZIP instead, it is removed!
>>>>>> 
>>>>>> Here is sample code that saves a ZIP file that removes the leading PI
>>>>>> from the document:
>>>>>> 
>>>>>> let $Doc := doc("/MyDoc.xml")
>>>>>> let $Parts := <parts xmlns="xdmp:zip"><part>MyDoc.xml</part></parts>
>>>>>> let $ZIP := xdmp:zip-create($Parts, $Doc)
>>>>>> return
>>>>>> xdmp:save("c:/TEST/test.zip", $ZIP,  <options
>>>>>> xmlns="xdmp:save"><encoding>utf8</encoding></options>)
>>>>>> 
>>>>>> Does anyone have experience of this, and know any workaround. It is
>>>>>> really important that I preserve the PIs at the top of documents and
>>>>>> place them in a ZIP.
>>>>>> 
>>>>>> Neil.
>>>>>> _______________________________________________
>>>>>> General mailing list
>>>>>> [email protected]
>>>>>> http://developer.marklogic.com/mailman/listinfo/general
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> _______________________________________________
>>>>> General mailing list
>>>>> [email protected]
>>>>> http://developer.marklogic.com/mailman/listinfo/general
>>>> 
>>>> 
>>>> 
>>>> 
>> 
>> 
>> 
>> 

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to