Geert, you are the man!!! Thanks so much for helping me see the right way to accomplish this - the external variable is far better than string manipulation. My code is now simpler, faster, and actually works for this use case!

Note - 3.2-4 requires slightly different syntax to declare the external variable.. let $status as element() := xdmp:document-get("C:\_projects_\tmp\escMMLError\quotedStatus.txt.xml")/status
return
xdmp:eval("define variable $status as element() external $status/exception", (xs:QName("status"), $status))


On 3/3/2010 2:51 PM, Geert Josten wrote:
Auch.. ;-)

How about passing parameters to xdm:eval?

let $ex =<exception/>
return
xdmp:eval('declare variable $ex as external; $ex', (xs:QName("ex"), $ex))

Kind regards,
Geert

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
Wyatt VanderStucken
Sent: woensdag 3 maart 2010 20:17
To: General Mark Logic Developer Discussion
Cc: Geert Josten
Subject: Re: [MarkLogic Dev General] Escaping text?

Hi Geert,

Thanks, again...  Unfortunately xdmp:value is not available
in 3.2-4...  We're upgrading in June, and I'm excited to
learn about the xdmp:value function, but can't use it today...

Regards,
Wyatt

On 3/3/2010 2:07 PM, Geert Josten wrote:

        Hi Wyatt,
        
        I don't recommend using replace like that. And since I
guess you will have little control on how the exceptions are
formatted, I recommend letting go of xdmp:quote and
xdmp:unquote all together and using xdmp:value instead of
xdmp:eval. Using xdmp:value you can refer to variables from
the context. You could also pass them explicitly to
xdmp:value, but then you would have to define them in the
subquery as external variables, which is rather awkward..
        
        Kind regards,
        Geert


________________________________

                From: [email protected]
[mailto:[email protected]] On Behalf Of
Wyatt VanderStucken
                Sent: woensdag 3 maart 2010 19:56
                To: [email protected]
                Subject: Re: [MarkLogic Dev General] Escaping text?
                
                
                Hi Geert,
                
                Thanks for responding...  Yes, this is really
part of a much larger XQuery, this snippit just illustrates
where I'm stuck.  The value of $ex originates from a
web-service call, which we use to create a which we then feed
into xdmp:eval() - something like this...
                
                let $status :=<status><exception
message="xxxx"/></status>,
                    $error :=
                <errorConditions>
                <errorCondition message="Missing
key(s). Please supply key(s) for this item and save or
validate again.">
                <condition
xpath="string(@message)='java.lang.Exception: integer_key
(null) is not an integer'"
<mailto:string...@message%29=%27java.lang.exception:integer_ke
y%28null%29isnotaninteger%27>  />
                <condition
xpath="string(@message)='cvc-complex-type.4: Attribute
''value'' must appear on element ''integer_key''.'"
<mailto:string...@message%29=%27cvc-complex-type.4:Attribute%2
7%27value%27%27mustappearonelement%27%27integer_key%27%27.%27>  />
                </errorCondition>
                <errorCondition message="Missing
key(s). Please supply key(s) for this item and save or
validate again.">
                <condition
xpath="string(@message)='cvc-complex-type.4: Attribute
''value'' must appear on element ''integer_key''.'"
<mailto:string...@message%29=%27cvc-complex-type.4:Attribute%2
7%27value%27%27mustappearonelement%27%27integer_key%27%27.%27>  />
                </errorCondition>
                </errorConditions>,
                    $quotedStatus as xs:string :=
replace(xdmp:quote($status), "'", "''"),
                    $matchedExceptions as element()* :=
                        for $errorCondition as element() in
$errorConditions/errorCondition
                        let $conditions as element()* :=
$errorCondition/condition,
                            $combinedXpath as xs:string :=
                                concat("xdmp:unquote('",
$quotedStatus, "')", "/status/exception[",
                                    string-join(
                                        for $condition as
element() in $conditions
                                        return
string($condition/@xpath),
                                        " and "
                                    ),
                                "]")
                        return xdmp:eval($combinedXpath)
                return doSomeThingWithData($quotedStatus,
$matchedExceptions)
                
                
                
                On 3/3/2010 1:39 PM, Geert Josten wrote:

                        Hi Wyatt,
                        
                        Do you have to use xdmp:unquote for a
particular reason? Otherwise you could do something like this:
                        
                        <exception message="one of
&apos;{{&quot;http://www.w3.org/1998/Math/MathML&quot;:semanti
cs}}&apos; is expected."/>
                        
                        Kind regards,
                        Geert
                        
                        

                                

                        drs. G.P.H. (Geert) Josten
                        Consultant
                        
                        
                        Daidalos BV
                        Hoekeindsehof 1-4
                        2665 JZ Bleiswijk
                        
                        T +31 (0)10 850 1200
                        F +31 (0)10 850 1199
                        
                        mailto:[email protected]
                        http://www.daidalos.nl/
                        
                        KvK 27164984
                        
                        P Please consider the environment
before printing this mail.
                        De informatie - verzonden in of met dit
e-mailbericht - is afkomstig van Daidalos BV en is
uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te
verwijderen. Aan dit bericht kunnen geen rechten worden ontleend.
                        
                        

                                From:
[email protected]
                                
[mailto:[email protected]] On Behalf Of
                                Wyatt VanderStucken
                                Sent: woensdag 3 maart 2010 19:32
                                To: General Mark Logic
Developer Discussion
                                Subject: [MarkLogic Dev
General] Escaping text?
                                
                                I've been banging my head
trying to figure this out - any
                                ideas would be much appreciated....
                                
                                let $ex as xs:string :=
'<exception message="One of
                                
''{&quot;http://www.w3.org/1998/Math/MathML&quot;:semantics}''
                                 is expected."/>'
                                return xdmp:unquote($ex)
                                
                                Always gives error "SystemID:
XDMP-DOCSTARTTAGCHAR:
                                xdmp:unquote("<exception
message=&quot;One of
                                
'{&quot;http://www.w3.org/1998/M...";) -- Unexpected character
                                "/" in start tag at  line 1"
                                
                                I've tried a variety fn:replace
calls, but haven't yet found
                                the magic...
                                
                                Thanks,
                                Wyatt
                                
                                
                                

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


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


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

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

Reply via email to