From: Michael B. <mbe...@mb...> - 2005-08-30 14:54:04
|
I think this may be an instance of a more general problem where predicate expressions can't see more than a certain number of levels deep into a structure (I posted a test case re numeric predicates some time ago) If we try this, using Adam's document but splitting the query into simpler phases let $doc := <county name="Devon" uid="0"> <district uid="1" name="East Devon"> <town uid="11" name="Axminster" pct="East Devon"> <settlement name="Abbey Gate" uid="244"/> <settlement name="All Saints" uid="245"/> <settlement name="Alston" uid="246"/> <settlement name="Bewley Down" uid="247"/> </town> </district> </county> let $counties := $doc//county[@name != ''] let $districts := $doc//district[@name != ''] let $towns := $doc//town[@name != ''] let $settlements := $doc//settlement[@name != ''] return <results> <counties>{$counties}</counties> <districts>{$districts}</districts> <towns>{$towns}</towns> <settlements>{$settlements}</settlements> </results> We get the expected output UNTIL the <settlement> children are reached -- or rather not reached, it appears the processor never visits them. Hence, I suppose, the complaint about a missing context node in the original query <results> <counties> <county name="Devon" uid="0"> <district uid="1" name="East Devon"> <town uid="11" name="Axminster" pct="East Devon"> <settlement name="Abbey Gate" uid="244"/> <settlement name="All Saints" uid="245"/> <settlement name="Alston" uid="246"/> <settlement name="Bewley Down" uid="247"/> </town> </district> </county> </counties> <districts> <district uid="1" name="East Devon"> <town uid="11" name="Axminster" pct="East Devon"> <settlement name="Abbey Gate" uid="244"/> <settlement name="All Saints" uid="245"/> <settlement name="Alston" uid="246"/> <settlement name="Bewley Down" uid="247"/> </town> </district> </districts> <towns> <town uid="11" name="Axminster" pct="East Devon"> <settlement name="Abbey Gate" uid="244"/> <settlement name="All Saints" uid="245"/> <settlement name="Alston" uid="246"/> <settlement name="Bewley Down" uid="247"/> </town> </towns> <settlements/> </results> This is with CVS of yesterday. I looked in the logs to see how the query was being evaluated, but it looks like the debug statements that used to show the analysis of the query have now been removed (I haven't altered my logging levels) Michael Beddow |