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