[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] I have implemented SAX based XPath Engine
- From: Santhosh T <santhosh.tekuri@gmail.com>
- To: Michael Kay <mike@saxonica.com>
- Date: Fri, 20 Feb 2009 22:14:01 +0530
MK> OK. So let's change the query to
//book[author = editor]/price
Which of course is true if any of the book's authors has the same name as
one of its editors. You don't know the order or cardinality of the children
author, editor, and price, so I assume you are "remembering" all the author,
editor, and price children until you hit the end tag of a book; you're then
evaluating the predicate, and if it's true, you output all the price
children?
ST>
Yes. you are correct;
MK>
How much do you "remember" about the price children?
SK>
only the location of price element. because that is what user is interested.
here location mean, the unique xpath to that price element say
/library[1]/book[5]/price[1]
MK>
There's a question mark
here because you don't really know what information the user wants about the
price elements: they might want the string value, or the attributes, or
perhaps the children,...
SK>
wrong. I know what much information user wants from price elements in
xpath compilation stage only. so I simply remember the location of price element
if user would have given xpath:
//book[author = editor]/price/@type
Then during compilation stage, I know that he is interested in type attribute.
MK>
For author and editor, I guess the minimum that needs to be remembered is
the string-value of each author and editor child, and you can claim to be
"pure streaming" if the only memory you allocate is enough to hold these
values?
SK>
Yes. during compilation stage, it is seen that he is comparing nodesets.
nodesets are compared by comparing string value of each nodeitem. so only
the string value is remembered.
for more details:
http://code.google.com/p/jlibs/source/browse/trunk/xml/src/jlibs/xml/sax/sniff/model/expr/bool/Comparison.java
from its constructor, you can see that it requires each its member to be of type Datatype.STRINGS
and its member will be:
http://code.google.com/p/jlibs/source/browse/trunk/xml/src/jlibs/xml/sax/sniff/model/expr/nodeset/list/Strings.java
which will remember only stringized nodeitems of nodeset.
------------------------------------------------------------------------
ST>XMLDog do supports absolute paths in predicate also. for example:
/*/fibonacci[ count(/*/fibonacci) - 1 ]
Does that involve more than one scan/parse of the input file? If not, how is
it done?
ST>
No. it requires only one parse over input. XMLDog does xpath evaluation in single parse.
during compilation stage, each expression knows when its evaluation starts and finishes.
an expression adjusts its evaluation period depending on its members evaluation span.
here count(/*/fibonacci) is evaluation starts when document started and ends when document ended.
it parent NodeSet expression will remember its cached result until its member gets evaluated. i.e
till the document end.
---------------------------------------------------------------------------
MK> You've got an example that does *[last()]. Do you allow *[last() - 1]?
Is this done with a pure streaming approach?
ST> Yes. it supports [last()-1] also;
MK> How do you do this? With multiple passes over the data? Or with a
lookahead buffer?
ST> in single pass over data, it is evaluated; same as before the results are cached
until its predicates are evaluated;
----------------------------------------------------------------------------
I understand that it is difficult to digest how my implemenation works, in simple words.
The engine is rewritten lots of times to accomodate all xpath evaluation. i.e
the algo is refined/modifed N number of times.
I added the xpath you have mentioned: //book[author = editor]/price to my testsuite.
the input xmlfile is
http://code.google.com/p/jlibs/source/browse/trunk/xmlFiles/library.xml
to confirm that XMLDog handles all cases, i added multple <book> elements in sample xml
with different order of author, editor, price.
To make it more complicated, i added nested <book> elements between author, editor, price elements.
and the testcase has passed.
The XMLDog supports debug mode. in this mode it prints lot of information about what context information
it is cached, when it is discarded.
To enable debug mode, you need to edit following file and change value static variable called debug to true,
and recompile jlibs.
http://code.google.com/p/jlibs/source/browse/trunk/xml/src/jlibs/xml/sax/sniff/Debuggable.java
For your reference, i am attaching the output of XMLDog for //book[author = editor]/price.
in the beginning of this file, you will see the compiled tree for given xpath.
rest of the file shows, details of what is happening in engine for each sax event.
- Santhosh
//book[author = editor]/price
Root_0
`-- Document_1
| {{{ nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| }}} nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
`-- descendant-or-self::_1_1
`-- child::_2_2
`-- book_2_2
| {{{ =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| {{{ strings_2(descendant::_4)
| {{{ strings_2(descendant::_4)
| {{{ nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| }}} nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| }}} strings_2(descendant::_4)
| }}} strings_2(descendant::_4)
| }}} =_2(strings_2(descendant::_4), strings_2(descendant::_4))
`-- child::_3_3
|-- author_3_3
| | {{{ jlibs.xml.sax.sniff.model.expr.nodeset.list.NodeList$1@5759780d
| | }}} jlibs.xml.sax.sniff.model.expr.nodeset.list.NodeList$1@5759780d
| `-- descendant::_4_4
| ### strings_2(descendant::_4)
|-- editor_3_3
| | {{{ jlibs.xml.sax.sniff.model.expr.nodeset.list.NodeList$1@36c8570c
| | }}} jlibs.xml.sax.sniff.model.expr.nodeset.list.NodeList$1@36c8570c
| `-- descendant::_4_4
| ### strings_2(descendant::_4)
`-- price_3_3
### nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
-----------------------------------------------------------
nodeSet_1_3 {Document_1, Document_1}
`-- nodeSet_2_2 {book_2_2, book_2_2}
|-- price_3_3
`-- =_2_1 {book_2_2, book_2_2}
|-- strings_2_0 {book_2_2, book_2_2}
| `-- descendant::_4_4
`-- strings_2_0 {book_2_2, book_2_2}
`-- descendant::_4_4
-----------------------------------------------------------------
Contexts ->
[0] Root@2038015135@
-----------------------------------------------------------------
contextStarted(Document)
|newEvaluation: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
[0] Root@2038015135@ ->
[0] Document@163501009@
[0] descendant-or-self::_1@1255543553@
newContext ->
[0] Document@163501009@
[0] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<library>
[0] Document@163501009@ ->
[1] Document@163501009@
[0] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book1'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1684157287@
[0] book_2@1309141002@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1684157287@
[0] book_2@1309141002@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<author>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1684157287@ ->
[1] child::_2@1684157287@
contextStarted(author_3)
[0] book_2@1309141002@ ->
[0] child::_3@1077500591@
[0] author_3@222074199@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@489398036@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1684157287@
[0] child::_3@1077500591@
[0] author_3@222074199@
[0] child::_2@489398036@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scott</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@222074199@[0]=scott}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1309141002@
[0] child::_2@1684157287@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<editor>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1377751019@
[-3] descendant-or-self::_1@1255543553@
contextStarted(editor_3)
[0] book_2@1309141002@ ->
[0] child::_3@920138597@
[0] editor_3@1322915093@
[0] child::_2@1684157287@ ->
[1] child::_2@1684157287@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@1377751019@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@920138597@
[0] editor_3@1322915093@
[1] child::_2@1684157287@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
scott</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1322915093@[0]=scott}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1684157287@
[0] book_2@1309141002@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1684157287@ ->
[1] child::_2@1684157287@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1]]
| | |predicateHit: null
[0] book_2@1309141002@ ->
[0] child::_3@1020728318@
[0] price_3@1281468390@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1279866611@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1684157287@
[0] child::_3@1020728318@
[0] price_3@1281468390@
[0] child::_2@1279866611@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
10</price>
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1309141002@
[0] child::_2@1684157287@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[1]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[1]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book2'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@650389508@
[0] book_2@854581883@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@650389508@
[0] book_2@854581883@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<author>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@650389508@ ->
[1] child::_2@650389508@
contextStarted(author_3)
[0] book_2@854581883@ ->
[0] child::_3@1296566131@
[0] author_3@2090180513@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@346652520@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@650389508@
[0] child::_3@1296566131@
[0] author_3@2090180513@
[0] child::_2@346652520@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scott2</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@2090180513@[0]=scott2}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@854581883@
[0] child::_2@650389508@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<price>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1212298758@
[-3] descendant-or-self::_1@1255543553@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[2]/price[1]]
| | |predicateHit: null
[0] book_2@854581883@ ->
[0] child::_3@1364143063@
[0] price_3@617044469@
[0] child::_2@650389508@ ->
[1] child::_2@650389508@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@1212298758@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@1364143063@
[0] price_3@617044469@
[1] child::_2@650389508@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
20</price>
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@650389508@
[0] book_2@854581883@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@650389508@ ->
[1] child::_2@650389508@
contextStarted(editor_3)
[0] book_2@854581883@ ->
[0] child::_3@566695176@
[0] editor_3@1395706699@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@102759371@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@650389508@
[0] child::_3@566695176@
[0] editor_3@1395706699@
[0] child::_2@102759371@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scott2</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1395706699@[0]=scott2}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@854581883@
[0] child::_2@650389508@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott2
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott2
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[2]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[2]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1], /library[1]/book[2]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book3'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@2132827533@
[0] book_2@831577209@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@2132827533@
[0] book_2@831577209@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@2132827533@ ->
[1] child::_2@2132827533@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[3]/price[1]]
| | |predicateHit: null
[0] book_2@831577209@ ->
[0] child::_3@1174486488@
[0] price_3@2072204239@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@384298697@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@2132827533@
[0] child::_3@1174486488@
[0] price_3@2072204239@
[0] child::_2@384298697@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
30</price>
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@831577209@
[0] child::_2@2132827533@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<author>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1477205414@
[-3] descendant-or-self::_1@1255543553@
contextStarted(author_3)
[0] book_2@831577209@ ->
[0] child::_3@282303647@
[0] author_3@1704495238@
[0] child::_2@2132827533@ ->
[1] child::_2@2132827533@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@1477205414@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@282303647@
[0] author_3@1704495238@
[1] child::_2@2132827533@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
scott3</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1704495238@[0]=scott3}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@2132827533@
[0] book_2@831577209@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@2132827533@ ->
[1] child::_2@2132827533@
contextStarted(editor_3)
[0] book_2@831577209@ ->
[0] child::_3@1056163268@
[0] editor_3@341752521@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@875527422@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@2132827533@
[0] child::_3@1056163268@
[0] editor_3@341752521@
[0] child::_2@875527422@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scott3</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@341752521@[0]=scott3}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@831577209@
[0] child::_2@2132827533@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott3
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott3
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[3]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[3]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1], /library[1]/book[2]/price[1], /library[1]/book[3]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book4'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1335860346@
[0] book_2@1153873934@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1335860346@
[0] book_2@1153873934@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<author>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1335860346@ ->
[1] child::_2@1335860346@
contextStarted(author_3)
[0] book_2@1153873934@ ->
[0] child::_3@276008395@
[0] author_3@1157406334@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@499309271@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1335860346@
[0] child::_3@276008395@
[0] author_3@1157406334@
[0] child::_2@499309271@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scott</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1157406334@[0]=scott}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1153873934@
[0] child::_2@1335860346@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<editor>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1168645077@
[-3] descendant-or-self::_1@1255543553@
contextStarted(editor_3)
[0] book_2@1153873934@ ->
[0] child::_3@681095483@
[0] editor_3@2014821588@
[0] child::_2@1335860346@ ->
[1] child::_2@1335860346@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@1168645077@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@681095483@
[0] editor_3@2014821588@
[1] child::_2@1335860346@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
scottX</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@2014821588@[0]=scottX}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1335860346@
[0] book_2@1153873934@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1335860346@ ->
[1] child::_2@1335860346@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[4]/price[1]]
| | |predicateHit: null
[0] book_2@1153873934@ ->
[0] child::_3@1633798609@
[0] price_3@1527310921@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@762876629@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1335860346@
[0] child::_3@1633798609@
[0] price_3@1527310921@
[0] child::_2@762876629@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
40</price>
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1153873934@
[0] child::_2@1335860346@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| scottX
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | false
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | | |result
| | | | | null
|finishedEvaluation: strings_2(descendant::_4)
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book5'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@300139206@
[0] book_2@97575625@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@300139206@
[0] book_2@97575625@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<author>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@300139206@ ->
[1] child::_2@300139206@
contextStarted(author_3)
[0] book_2@97575625@ ->
[0] child::_3@1418911234@
[0] author_3@206339600@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@285018722@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@300139206@
[0] child::_3@1418911234@
[0] author_3@206339600@
[0] child::_2@285018722@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scott2</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@206339600@[0]=scott2}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@97575625@
[0] child::_2@300139206@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<price>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@229827661@
[-3] descendant-or-self::_1@1255543553@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[5]/price[1]]
| | |predicateHit: null
[0] book_2@97575625@ ->
[0] child::_3@1802245312@
[0] price_3@80117849@
[0] child::_2@300139206@ ->
[1] child::_2@300139206@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@229827661@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@1802245312@
[0] price_3@80117849@
[1] child::_2@300139206@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
50</price>
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@300139206@
[0] book_2@97575625@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@300139206@ ->
[1] child::_2@300139206@
contextStarted(editor_3)
[0] book_2@97575625@ ->
[0] child::_3@1863192245@
[0] editor_3@205025794@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1276705413@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@300139206@
[0] child::_3@1863192245@
[0] editor_3@205025794@
[0] child::_2@1276705413@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scottY</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@205025794@[0]=scottY}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@97575625@
[0] child::_2@300139206@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| scottY
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott2
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | false
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | | |result
| | | | | null
|finishedEvaluation: strings_2(descendant::_4)
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book6'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@184859875@
[0] book_2@2049281140@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@184859875@
[0] book_2@2049281140@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@184859875@ ->
[1] child::_2@184859875@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[6]/price[1]]
| | |predicateHit: null
[0] book_2@2049281140@ ->
[0] child::_3@1443971291@
[0] price_3@112793090@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1237880619@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@184859875@
[0] child::_3@1443971291@
[0] price_3@112793090@
[0] child::_2@1237880619@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
60</price>
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@2049281140@
[0] child::_2@184859875@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<author>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1926797196@
[-3] descendant-or-self::_1@1255543553@
contextStarted(author_3)
[0] book_2@2049281140@ ->
[0] child::_3@1986875184@
[0] author_3@189121556@
[0] child::_2@184859875@ ->
[1] child::_2@184859875@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@1926797196@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@1986875184@
[0] author_3@189121556@
[1] child::_2@184859875@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
scott3</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@189121556@[0]=scott3}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@184859875@
[0] book_2@2049281140@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@184859875@ ->
[1] child::_2@184859875@
contextStarted(editor_3)
[0] book_2@2049281140@ ->
[0] child::_3@1606987090@
[0] editor_3@1526730988@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1938552511@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@184859875@
[0] child::_3@1606987090@
[0] editor_3@1526730988@
[0] child::_2@1938552511@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
scottZ</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1526730988@[0]=scottZ}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@2049281140@
[0] child::_2@184859875@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| scottZ
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| scott3
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | false
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | | |result
| | | | | null
|finishedEvaluation: strings_2(descendant::_4)
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book7'>
[1] Document@163501009@ ->
[2] Document@163501009@
[0] child::_2@1441471922@ ->
[1] child::_2@1441471922@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-1] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1362120719@
[0] book_2@1074955072@
[-2] descendant-or-self::_1@1255543553@
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1362120719@
[0] book_2@1074955072@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/price[1]]
| | |predicateHit: null
[0] book_2@1074955072@ ->
[0] child::_3@1349374216@
[0] price_3@1505135992@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@520443435@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1349374216@
[0] price_3@1505135992@
[0] child::_2@520443435@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
70</price>
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@
[0] child::_2@1362120719@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<book title='book8'>
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@302276918@
[0] book_2@1385693684@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@ ->
[0] child::_3@683143888@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@302276918@
[0] book_2@1385693684@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@683143888@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<author>
[0] child::_2@302276918@ ->
[1] child::_2@302276918@
contextStarted(author_3)
[0] book_2@1385693684@ ->
[0] child::_3@95947162@
[0] author_3@1171357828@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@551278484@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@683143888@ ->
[1] child::_3@683143888@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[1] child::_2@302276918@
[0] child::_3@95947162@
[0] author_3@1171357828@
[0] child::_2@551278484@
[-4] descendant-or-self::_1@1255543553@
[1] child::_3@683143888@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
tiger1</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1171357828@[0]=tiger1}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@683143888@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1385693684@
[0] child::_2@302276918@
-----------------------------------------------------------------
<editor>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@683143888@ ->
[1] child::_3@683143888@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@314069021@
[-4] descendant-or-self::_1@1255543553@
contextStarted(editor_3)
[0] book_2@1385693684@ ->
[0] child::_3@39245519@
[0] editor_3@1726971252@
[0] child::_2@302276918@ ->
[1] child::_2@302276918@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@683143888@
[0] child::_2@314069021@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@39245519@
[0] editor_3@1726971252@
[1] child::_2@302276918@
-----------------------------------------------------------------
tiger1</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1726971252@[0]=tiger1}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[0] child::_2@302276918@
[0] book_2@1385693684@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@683143888@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<price>
[0] child::_2@302276918@ ->
[1] child::_2@302276918@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/book[1]/price[1]]
| | |predicateHit: null
[0] book_2@1385693684@ ->
[0] child::_3@1050517213@
[0] price_3@1579736904@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@430126690@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@683143888@ ->
[1] child::_3@683143888@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[1] child::_2@302276918@
[0] child::_3@1050517213@
[0] price_3@1579736904@
[0] child::_2@430126690@
[-4] descendant-or-self::_1@1255543553@
[1] child::_3@683143888@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
80</price>
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@683143888@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1385693684@
[0] child::_2@302276918@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger1
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger1
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[7]/book[1]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[7]/book[1]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1], /library[1]/book[2]/price[1], /library[1]/book[3]/price[1], /library[1]/book[7]/book[1]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@
[0] child::_2@1362120719@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<book title='book9'>
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@963914838@
[0] book_2@268231410@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@ ->
[0] child::_3@1313551855@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@963914838@
[0] book_2@268231410@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@1313551855@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<author>
[0] child::_2@963914838@ ->
[1] child::_2@963914838@
contextStarted(author_3)
[0] book_2@268231410@ ->
[0] child::_3@1869198958@
[0] author_3@1308738034@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1946071974@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@1313551855@ ->
[1] child::_3@1313551855@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[1] child::_2@963914838@
[0] child::_3@1869198958@
[0] author_3@1308738034@
[0] child::_2@1946071974@
[-4] descendant-or-self::_1@1255543553@
[1] child::_3@1313551855@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
tiger2</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1308738034@[0]=tiger2}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1313551855@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@268231410@
[0] child::_2@963914838@
-----------------------------------------------------------------
<price>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@1313551855@ ->
[1] child::_3@1313551855@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1004194603@
[-4] descendant-or-self::_1@1255543553@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/book[2]/price[1]]
| | |predicateHit: null
[0] book_2@268231410@ ->
[0] child::_3@1173231477@
[0] price_3@306587185@
[0] child::_2@963914838@ ->
[1] child::_2@963914838@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@1313551855@
[0] child::_2@1004194603@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@1173231477@
[0] price_3@306587185@
[1] child::_2@963914838@
-----------------------------------------------------------------
90</price>
newContext ->
[0] child::_2@963914838@
[0] book_2@268231410@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@1313551855@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<editor>
[0] child::_2@963914838@ ->
[1] child::_2@963914838@
contextStarted(editor_3)
[0] book_2@268231410@ ->
[0] child::_3@2114741906@
[0] editor_3@1272015198@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@520697505@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@1313551855@ ->
[1] child::_3@1313551855@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[1] child::_2@963914838@
[0] child::_3@2114741906@
[0] editor_3@1272015198@
[0] child::_2@520697505@
[-4] descendant-or-self::_1@1255543553@
[1] child::_3@1313551855@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
tiger2</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1272015198@[0]=tiger2}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1313551855@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@268231410@
[0] child::_2@963914838@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger2
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger2
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[7]/book[2]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[7]/book[2]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1], /library[1]/book[2]/price[1], /library[1]/book[3]/price[1], /library[1]/book[7]/book[1]/price[1], /library[1]/book[7]/book[2]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@
[0] child::_2@1362120719@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<book title='book10'>
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@986024692@
[0] book_2@1623236944@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@ ->
[0] child::_3@140828651@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@986024692@
[0] book_2@1623236944@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@140828651@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<price>
[0] child::_2@986024692@ ->
[1] child::_2@986024692@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/book[3]/price[1]]
| | |predicateHit: null
[0] book_2@1623236944@ ->
[0] child::_3@845438155@
[0] price_3@1527262533@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1083941172@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@140828651@ ->
[1] child::_3@140828651@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[1] child::_2@986024692@
[0] child::_3@845438155@
[0] price_3@1527262533@
[0] child::_2@1083941172@
[-4] descendant-or-self::_1@1255543553@
[1] child::_3@140828651@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
100</price>
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@140828651@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1623236944@
[0] child::_2@986024692@
-----------------------------------------------------------------
<author>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@140828651@ ->
[1] child::_3@140828651@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1853255363@
[-4] descendant-or-self::_1@1255543553@
contextStarted(author_3)
[0] book_2@1623236944@ ->
[0] child::_3@393689620@
[0] author_3@1562916902@
[0] child::_2@986024692@ ->
[1] child::_2@986024692@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@140828651@
[0] child::_2@1853255363@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@393689620@
[0] author_3@1562916902@
[1] child::_2@986024692@
-----------------------------------------------------------------
tiger3</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1562916902@[0]=tiger3}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[0] child::_2@986024692@
[0] book_2@1623236944@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@140828651@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<editor>
[0] child::_2@986024692@ ->
[1] child::_2@986024692@
contextStarted(editor_3)
[0] book_2@1623236944@ ->
[0] child::_3@558648009@
[0] editor_3@1224884654@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1791127681@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@140828651@ ->
[1] child::_3@140828651@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[1] child::_2@986024692@
[0] child::_3@558648009@
[0] editor_3@1224884654@
[0] child::_2@1791127681@
[-4] descendant-or-self::_1@1255543553@
[1] child::_3@140828651@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
tiger3</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1224884654@[0]=tiger3}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@140828651@
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1623236944@
[0] child::_2@986024692@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger3
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger3
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[7]/book[3]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[7]/book[3]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1], /library[1]/book[2]/price[1], /library[1]/book[3]/price[1], /library[1]/book[7]/book[1]/price[1], /library[1]/book[7]/book[2]/price[1], /library[1]/book[7]/book[3]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@
[0] child::_2@1362120719@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
<author>
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1382320624@
[-3] descendant-or-self::_1@1255543553@
contextStarted(author_3)
[0] book_2@1074955072@ ->
[0] child::_3@70862619@
[0] author_3@1018679012@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[2] Document@163501009@ ->
[3] Document@163501009@
newContext ->
[0] child::_2@1382320624@
[-3] descendant-or-self::_1@1255543553@
[0] child::_3@70862619@
[0] author_3@1018679012@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
tiger1</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1018679012@[0]=tiger1}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1362120719@
[0] book_2@1074955072@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book11'>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[0] book_2@1074955072@ ->
[0] child::_3@1246254326@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@652403318@
[0] book_2@1086395735@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1246254326@
[0] child::_2@652403318@
[0] book_2@1086395735@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<author>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@1246254326@ ->
[1] child::_3@1246254326@
[0] child::_2@652403318@ ->
[1] child::_2@652403318@
contextStarted(author_3)
[0] book_2@1086395735@ ->
[0] child::_3@1901677475@
[0] author_3@1518034104@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@447561888@
[-4] descendant-or-self::_1@1255543553@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@1246254326@
[1] child::_2@652403318@
[0] child::_3@1901677475@
[0] author_3@1518034104@
[0] child::_2@447561888@
[-4] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
tiger4</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1518034104@[0]=tiger4}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1086395735@
[0] child::_2@652403318@
[0] child::_3@1246254326@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<editor>
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@747757891@
[-4] descendant-or-self::_1@1255543553@
contextStarted(editor_3)
[0] book_2@1086395735@ ->
[0] child::_3@2061082442@
[0] editor_3@328422269@
[0] child::_2@652403318@ ->
[1] child::_2@652403318@
[0] child::_3@1246254326@ ->
[1] child::_3@1246254326@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[0] child::_2@747757891@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@2061082442@
[0] editor_3@328422269@
[1] child::_2@652403318@
[1] child::_3@1246254326@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
tigerX</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@328422269@[0]=tigerX}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1246254326@
[0] child::_2@652403318@
[0] book_2@1086395735@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@1246254326@ ->
[1] child::_3@1246254326@
[0] child::_2@652403318@ ->
[1] child::_2@652403318@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/book[4]/price[1]]
| | |predicateHit: null
[0] book_2@1086395735@ ->
[0] child::_3@906693722@
[0] price_3@257426542@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@2027275859@
[-4] descendant-or-self::_1@1255543553@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@1246254326@
[1] child::_2@652403318@
[0] child::_3@906693722@
[0] price_3@257426542@
[0] child::_2@2027275859@
[-4] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
110</price>
newContext ->
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1086395735@
[0] child::_2@652403318@
[0] child::_3@1246254326@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tigerX
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger4
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | false
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | | |result
| | | | | null
|finishedEvaluation: strings_2(descendant::_4)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1362120719@
[0] book_2@1074955072@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book12'>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[0] book_2@1074955072@ ->
[0] child::_3@510999586@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@357940514@
[0] book_2@610988429@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@510999586@
[0] child::_2@357940514@
[0] book_2@610988429@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<author>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@510999586@ ->
[1] child::_3@510999586@
[0] child::_2@357940514@ ->
[1] child::_2@357940514@
contextStarted(author_3)
[0] book_2@610988429@ ->
[0] child::_3@972792495@
[0] author_3@1029930309@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1317234793@
[-4] descendant-or-self::_1@1255543553@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@510999586@
[1] child::_2@357940514@
[0] child::_3@972792495@
[0] author_3@1029930309@
[0] child::_2@1317234793@
[-4] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
tiger5</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@1029930309@[0]=tiger5}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[-3] descendant-or-self::_1@1255543553@
[0] book_2@610988429@
[0] child::_2@357940514@
[0] child::_3@510999586@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<price>
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@835803672@
[-4] descendant-or-self::_1@1255543553@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/book[5]/price[1]]
| | |predicateHit: null
[0] book_2@610988429@ ->
[0] child::_3@1875508862@
[0] price_3@912472968@
[0] child::_2@357940514@ ->
[1] child::_2@357940514@
[0] child::_3@510999586@ ->
[1] child::_3@510999586@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[0] child::_2@835803672@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@1875508862@
[0] price_3@912472968@
[1] child::_2@357940514@
[1] child::_3@510999586@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
120</price>
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@510999586@
[0] child::_2@357940514@
[0] book_2@610988429@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@510999586@ ->
[1] child::_3@510999586@
[0] child::_2@357940514@ ->
[1] child::_2@357940514@
contextStarted(editor_3)
[0] book_2@610988429@ ->
[0] child::_3@78543735@
[0] editor_3@1063323972@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@410333247@
[-4] descendant-or-self::_1@1255543553@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@510999586@
[1] child::_2@357940514@
[0] child::_3@78543735@
[0] editor_3@1063323972@
[0] child::_2@410333247@
[-4] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
tigerY</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@1063323972@[0]=tigerY}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-3] descendant-or-self::_1@1255543553@
[0] book_2@610988429@
[0] child::_2@357940514@
[0] child::_3@510999586@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tigerY
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger5
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | false
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | | |result
| | | | | null
|finishedEvaluation: strings_2(descendant::_4)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1362120719@
[0] book_2@1074955072@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<book title='book13'>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
[0] book_2@1074955072@ ->
[0] child::_3@1056836841@
contextStarted(book_2)
|newEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|newEvaluation: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
|newEvaluation: strings_2(descendant::_4)
|newEvaluation: strings_2(descendant::_4)
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@164379562@
[0] book_2@1059463349@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1056836841@
[0] child::_2@164379562@
[0] book_2@1059463349@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<price>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@1056836841@ ->
[1] child::_3@1056836841@
[0] child::_2@164379562@ ->
[1] child::_2@164379562@
notifyListeners(price_3)
|onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| |Evaluation:
| | |cached: [/library[1]/book[7]/book[6]/price[1]]
| | |predicateHit: null
[0] book_2@1059463349@ ->
[0] child::_3@1301762172@
[0] price_3@153429168@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@849042581@
[-4] descendant-or-self::_1@1255543553@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@1056836841@
[1] child::_2@164379562@
[0] child::_3@1301762172@
[0] price_3@153429168@
[0] child::_2@849042581@
[-4] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
130</price>
newContext ->
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1059463349@
[0] child::_2@164379562@
[0] child::_3@1056836841@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
<author>
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@248458249@
[-4] descendant-or-self::_1@1255543553@
contextStarted(author_3)
[0] book_2@1059463349@ ->
[0] child::_3@1848947536@
[0] author_3@617742552@
[0] child::_2@164379562@ ->
[1] child::_2@164379562@
[0] child::_3@1056836841@ ->
[1] child::_3@1056836841@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[3] Document@163501009@ ->
[4] Document@163501009@
newContext ->
[0] child::_2@248458249@
[-4] descendant-or-self::_1@1255543553@
[0] child::_3@1848947536@
[0] author_3@617742552@
[1] child::_2@164379562@
[1] child::_3@1056836841@
[2] child::_2@1362120719@
[3] child::_2@1441471922@
[4] Document@163501009@
-----------------------------------------------------------------
tiger3</author>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] author_3@617742552@[0]=tiger3}
| | |cached: []
| | |predicateHit: true
contextEnded(author_3)
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1056836841@
[0] child::_2@164379562@
[0] book_2@1059463349@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[3] Document@163501009@ ->
[4] Document@163501009@
[2] child::_2@1441471922@ ->
[3] child::_2@1441471922@
[1] child::_2@1362120719@ ->
[2] child::_2@1362120719@
[0] child::_3@1056836841@ ->
[1] child::_3@1056836841@
[0] child::_2@164379562@ ->
[1] child::_2@164379562@
contextStarted(editor_3)
[0] book_2@1059463349@ ->
[0] child::_3@997643874@
[0] editor_3@527343967@
[-3] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1824654862@
[-4] descendant-or-self::_1@1255543553@
newContext ->
[4] Document@163501009@
[3] child::_2@1441471922@
[2] child::_2@1362120719@
[1] child::_3@1056836841@
[1] child::_2@164379562@
[0] child::_3@997643874@
[0] editor_3@527343967@
[0] child::_2@1824654862@
[-4] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
tigerZ</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@527343967@[0]=tigerZ}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-3] descendant-or-self::_1@1255543553@
[0] book_2@1059463349@
[0] child::_2@164379562@
[0] child::_3@1056836841@
[1] child::_2@1362120719@
[2] child::_2@1441471922@
[3] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tigerZ
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger3
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | false
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | | |result
| | | | | null
|finishedEvaluation: strings_2(descendant::_4)
newContext ->
[2] Document@163501009@
[1] child::_2@1441471922@
[0] child::_2@1362120719@
[0] book_2@1074955072@
[-2] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
<editor>
[2] Document@163501009@ ->
[3] Document@163501009@
[1] child::_2@1441471922@ ->
[2] child::_2@1441471922@
[0] child::_2@1362120719@ ->
[1] child::_2@1362120719@
contextStarted(editor_3)
[0] book_2@1074955072@ ->
[0] child::_3@1553639268@
[0] editor_3@510044439@
[-2] descendant-or-self::_1@1255543553@ ->
[0] child::_2@1443099511@
[-3] descendant-or-self::_1@1255543553@
newContext ->
[3] Document@163501009@
[2] child::_2@1441471922@
[1] child::_2@1362120719@
[0] child::_3@1553639268@
[0] editor_3@510044439@
[0] child::_2@1443099511@
[-3] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
tiger1</editor>
notifyListeners(descendant::_4)
|onNotification: strings_2(descendant::_4)
| |Evaluation:
| | |map: {[0] editor_3@510044439@[0]=tiger1}
| | |cached: []
| | |predicateHit: true
contextEnded(editor_3)
newContext ->
[-2] descendant-or-self::_1@1255543553@
[0] book_2@1074955072@
[0] child::_2@1362120719@
[1] child::_2@1441471922@
[2] Document@163501009@
-----------------------------------------------------------------
</book>
contextEnded(book_2)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger1
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: strings_2(descendant::_4)
|result
| tiger1
|onNotification: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| |Evaluation:
| | |evaluationFinished: =_2(strings_2(descendant::_4), strings_2(descendant::_4))
| | |result
| | | true
| | |onNotification: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
| | | |Evaluation:
| | | | |cached: [/library[1]/book[7]/price[1]]
| | | | |predicateHit: true
|finishedEvaluation: strings_2(descendant::_4)
|evaluationFinished: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
|result
| /library[1]/book[7]/price[1]
|onNotification: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
| |Evaluation:
| | |cached: [/library[1]/book[1]/price[1], /library[1]/book[2]/price[1], /library[1]/book[3]/price[1], /library[1]/book[7]/price[1], /library[1]/book[7]/book[1]/price[1], /library[1]/book[7]/book[2]/price[1], /library[1]/book[7]/book[3]/price[1]]
| | |predicateHit: true
|finishedEvaluation: nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4)))
newContext ->
[1] Document@163501009@
[0] child::_2@1441471922@
[-1] descendant-or-self::_1@1255543553@
-----------------------------------------------------------------
</library>
newContext ->
[0] descendant-or-self::_1@1255543553@
[0] Document@163501009@
-----------------------------------------------------------------
contextEnded(Document)
|evaluationFinished: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
|result
| /library[1]/book[1]/price[1]
| /library[1]/book[2]/price[1]
| /library[1]/book[3]/price[1]
| /library[1]/book[7]/price[1]
| /library[1]/book[7]/book[1]/price[1]
| /library[1]/book[7]/book[2]/price[1]
| /library[1]/book[7]/book[3]/price[1]
|finishedEvaluation: nodeSet_1(UserGiven, nodeSet_2(price_3, =_2(strings_2(descendant::_4), strings_2(descendant::_4))))
newContext ->
[0] Root@2038015135@
newContext ->
resetting xpaths...
Results:
XPath: //book[author = editor]/price
1: /library[1]/book[1]/price[1]
2: /library[1]/book[2]/price[1]
3: /library[1]/book[3]/price[1]
4: /library[1]/book[7]/price[1]
5: /library[1]/book[7]/book[1]/price[1]
6: /library[1]/book[7]/book[2]/price[1]
7: /library[1]/book[7]/book[3]/price[1]
Process finished with exit code 0
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]