[MarkLogic Dev General] .NET XCC
Ron Hitchens
ron.hitchens at marklogic.com
Wed Aug 16 12:30:10 PDT 2006
It will certainly be longer than a couple of
months. I can't promise that it will be in any
particular release - that's a policy we have. I
will say that it's unlikely to happen before 3.2.
On Aug 16, 2006, at 11:46 AM, Wyatt wrote:
> Ron,
>
> Thanks so much for your help. Makes sense to me... Any idea when
> such XDBC protocol improvements might happen? Is is likely to be a
> v3.2 enhancement or sometime after that? I'd hate to write a hack
> only to have it fixed in a couple months, ya know!
>
> Wyatt
>
> Ron Hitchens wrote:
>> Wyatt,
>> This should be considered a bug. The underlying
>> cause is that there is a weakness in the XDBC protocol
>> (XCC speaks the same protocol as XDBC). There is a
>> presumption in XDBC that node = element and this means
>> that information about the specific node type is not
>> returned by the server (except for text() and binary(),
>> which are handled differently than other nodes).
>> In XDBC, all nodes (element, attribute, etc) have
>> the same Java type (XDBCSchemaTypes.Node). In XCC,
>> there are Java types for all the XDM node types. This
>> means that all node instances will be a concrete
>> type (element(), attribute(), etc) rather than the
>> abstract node() type.
>> Sadly, resource constraints prevented the needed
>> server-side changes to implement an improved protocol
>> to fully specify concrete node types. To be consistent
>> with the Java object model XCC assumes nodes are elements,
>> which is the same assumption that exists in XDBC.
>> You can still obtain the value of attributes by
>> calling AsString() on the XdmItem instance. The
>> AsString() method should do the right thing for all
>> node types. If you want to convert an element to
>> a DOM, those methods may throw an exception if the
>> item is not actually an element().
>> We plan to implement the protocol improvements in
>> a future release. At that time, the full complement
>> of Java node types will map to the XDM types as expected.
>> On Aug 14, 2006, at 7:54 PM, Wyatt wrote:
>>> Greetings all,
>>>
>>> I've been playing with the .NET version of the XCC package and
>>> have run into an obstacle I can't seem to surmount. Maybe a bug
>>> - more likely my own ignorance...
>>>
>>> I'm trying to write a C# (VS 2005) function that utilizes XCC to
>>> execute an arbitrary XQuery and return a string of well-formed
>>> XML. All is well if the XQuery happens to return a single
>>> element, but I'm running into trouble post processing it if it is
>>> not. It appears that NodeType.ToString() always returns "element()"
>>>
>>> I've been using the XdmItem as so...
>>>
>>> //--
>>> private string ProcessResults(ResultSequence rs) {
>>> StringBuilder sb = new StringBuilder();
>>> while (rs.HasNext()) {
>>> XdmItem xi = rs.Next().Item;
>>> if (xi.ItemType.Node) {
>>> sb.AppendLine(((NodeType)xi.ItemType).ToString());
>>> }
>>> else if (xi.ItemType.Atomic) {
>>> sb.AppendLine(((AtomicType)xi.ItemType).ToString());
>>> }
>>> }
>>> return sb.ToString();
>>> }
>>> //--
>>>
>>> The XdmItem.ItemType seems to accurately resolve what is a Node
>>> and what is an Atomic, and ToString() correctly returns
>>> "xs:string" for an atomic string (didn't try any others), BUT
>>> when it is a Node ToString() always returns "element()" even it
>>> is an attribute node??? I'd have thought it would return
>>> "attribute()"?
>>>
>>> Any help would be much appreciated.
>>>
>>>
>>> _______________________________________________
>>> General mailing list
>>> General at developer.marklogic.com
>>> http://xqzone.com/mailman/listinfo/general
>> ---
>> Ron Hitchens {ron.hitchens at marklogic.com} 650-655-2351
>> _______________________________________________
>> General mailing list
>> General at developer.marklogic.com
>> http://xqzone.com/mailman/listinfo/general
>
>
> _______________________________________________
> General mailing list
> General at developer.marklogic.com
> http://xqzone.com/mailman/listinfo/general
---
Ron Hitchens {ron.hitchens at marklogic.com} 650-655-2351
More information about the General
mailing list