[xquery-talk] XML prologue
Jason Hunter
jhunter at xquery.com
Mon Jul 25 17:10:33 PDT 2005
I don't believe there's an XQuery standard function to do that. In
MarkLogic you can use xdmp:unquote().
let $b := '<?xml version="1.0"?><name>frank</name>'
return xdmp:unquote($b)
This returns the <name> element as an element. You could do
xdmp:unquote($b)/text() for example.
-jh-
Frank Cohen wrote:
> Both make sense to me. Thank you Michael. I'm wondering if there is a
> built-in function that would strip the xml prologue from a String so I
> could use something like this:
>
> let $b := '<?xml version="1.0"?><name>frank</name>'
> return doc-strip-prologue($b)/name
>
> -Frank
>
>
>
> On Jul 25, 2005, at 3:14 PM, Michael Dyck wrote:
>
>> Frank Cohen wrote:
>>
>>>
>>> let $b :=<?xml version="1.0"?><frank/>
>>>
>>> $b fails with a lexxing error.
>>>
>>> I read the XQuery 4/2005 spec and don't see that this is not allowed
>>> but the 3 different XQuery processors I ran this on all have a
>>> problem with it.
>>>
>>
>> There are a couple of things that they might be complaining about.
>>
>> (1)
>> To the XQuery grammar, <?xml version="1.0"?> looks like a
>> DirPIConstructor (direct processing-instruction constructor); however,
>> 'xml' is not allowed as a PITarget.
>>
>> (2)
>> If the parser is being lax about PITargets, or is delaying that check to
>> a later phase, then it's probably complaining that you have a
>> (top-level) DirPIConstructor followed by a DirElemConstructor, which is
>> a syntax error. (ExprSingle derives PrimaryExpr derives Constructor, not
>> Constructor+.) It's syntactically on par with
>> let $b := 1 2
>> or
>> let $b := "hello" "world"
>>
>> -Michael Dyck
>> _______________________________________________
>> talk at xquery.com
>> http://xquery.com/mailman/listinfo/talk
>>
>>
>
>
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
>
More information about the talk
mailing list