Hi Geert,

I run your query
for $doc in doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]
let $uri := try { base-uri($doc) } catch ($e) { () }
where not($uri)
return
   $doc

and it returns empty sequence.
------------

if I take "not" out in the where clause, like
for $doc in doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]
let $uri := try { base-uri($doc) } catch ($e) { () }
where ($uri)
return
   $doc

I got 7 nodes out, these nodes only have attributes, no sub nodes inside, like <ns1:sub file="1"/>, and they are all in the same xml file, the xml is: /pt/ajr_1.xml

--------------
I actually can run

doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]/fn:root(.)

and it returns the root of file /pt/ajr_1.xml, and only one result node

---------
but I cannot run
doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]/fn:document- uri(fn:root(.))


I thought it was because of multiple node returned, but when I use fn:root(.) at the end, it returns only one node, so it must be something else.

when I do : doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]/ fn:document-uri(.)
                      it returns empty sequence

when I do: doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]/ fn:document-uri(fn:root(.))
                      it gives error

when I do: doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]/ fn:document-uri(fn:root(.)/ns1:article) this query makes sure only one node for fn:document-uri() function, but it returns empty sequence

It seems that fn:root() pass root element to the fn:document-uri() and it does not like it, if I pass node to it, it returns empty sequence. Can we use fn:document-uri() or fn:base-uri() at the end of query?


Thanks, Helen


On Jan 20, 2010, at 3:33 PM, Geert Josten wrote:

Hi Helen,

I changed and I got the same error as when I use fn:base-uri(.)

Description: XDMP-NOTANODE: doc()/child::ns1:article/
descendant::ns1:sub[not(attribute::temp1 or
attribute::temp2)]/document-uri(root(.)) --
xs:anyURI("/pt/ajr_1.xml") is not a node

The result is really only one document, but it seems that I cannot put
fn:document-uri at the end of the query.

This is actually quite strange. Doc() always returns nodes or empty sequence, child always returns nodes or empty sequence, descendant always returns nodes or empty sequence, so this is very odd. Even a text or binary document would result in a node.

Could you try the following to figure out which document is causing the trouble?

for $doc in doc()/ns1:article//ns1:sub[not(@temp1 or @temp2)]
let $uri := try { base-uri($doc) } catch ($e) { () }
where not($uri)
return
   $doc

Kind regards,
Geert


Drs. G.P.H. Josten
Consultant


http://www.daidalos.nl/
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
http://www.daidalos.nl/
KvK 27164984
De informatie - verzonden in of met dit emailbericht - 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.



_______________________________________________
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