XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] 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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS