[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: I have implemented SAX based XPath Engine
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] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|