Got it. Thanks for your help, David. On Mon, Aug 8, 2016 at 4:53 PM, David Lee <[email protected]> wrote:
> Once 'inside' the XQuery side, there is no ambiguity on types of values or > variables. > > You can use any of the following > > xdmp:type() -- for Atomic types > > xdmp:node-kind() for Node types > > xdmp:describe() for any value > > > > XQuery primitives 'instance of' , 'typeswitch' > > Test if values are a type or subtype with 'treat as' > > Test if values can be converted to another type with 'cast as' > > > > You can enforce the expected type by using 'as' in the variable > declaration, eg. > > > > declare variable $node as element() external ; > > > > > > > > > > *From:* [email protected] [mailto:general-bounces@ > developer.marklogic.com] *On Behalf Of *Dave Liepmann > *Sent:* Monday, August 08, 2016 10:24 AM > *To:* MarkLogic Developer Discussion <[email protected]> > *Subject:* Re: [MarkLogic Dev General] External variables as element() > type > > > > Pursuant to this same question about sending Element variables, is there a > way to verify from XQuery or MarkLogic that the variable I've created is in > fact an Element and not a String? From the feedback above it's unclear if I > can trust xdmp:type or getValueType. > > > > Thanks, > > Dave > > > > On Sun, Jul 31, 2016 at 1:59 PM, Dave Liepmann <[email protected]> > wrote: > > On Sat, Jul 30, 2016 at 3:35 PM, David Lee <[email protected]> > wrote: > > You need to use ValueFactory.newElement to create Elements, it will not > be done for you in this method. > > > Right, that was what I expected too! :) But when I pass a pre-created > Element (such as the result of your above code) to setNewVariable, I get > an IllegalArgumentException: "String, org.w3c.dom.Element or InputStream > value required to construct element()". That message makes me suspect it is > passing the buck to newElement > <https://docs.marklogic.com/javadoc/xcc/com/marklogic/xcc/ValueFactory.html#newElement(java.lang.Object)> > . > > > > In contrast, setNewVariable accepts your `is` InputString variable, giving > me the same results as when I passed a String, including the > getValueType report that the variable is of type "element()". Using > setVariable also gives me identical results in XQuery and getValueType. > > > > _______________________________________________ > General mailing list > [email protected] > Manage your subscription at: > http://developer.marklogic.com/mailman/listinfo/general > >
_______________________________________________ General mailing list [email protected] Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general
