Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


SlogancpsPathJiraNotesPriority / When do we need this? 
1get (list element) by xpath/bookstore/categories[@code='01']

Jira
serverONAP JIRA
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-71

This is not really a query as code is the key attributes and this xpath is stored with the target fragmentAlready implemented
2filter list element by other (then key) leaf value/bookstore/categories[@name='SciFi']

Jira
serverONAP JIRA
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-231

Compare to #1, notice how from a cpsPath perspective it is not clear which is a get and which is a query. The customer might not know either! See issue #1Required for E2E Slicing see CPS-200 study
3xpath ending (with possible refernce to list key)

//book
//categories[@code=01]


Client ignore/does not care/does not know the preceding xpathInvestigate if needed for E2E Slicing. 
4xpath ending combined with leafvalue filter//categories[@name='SciFi']


5filter on leaf value without any path//*[@name='Chapters']
This will return anything with that name, might be useful when working with small models
6allow any element from list ie. find something under any possible list entry/bookstore/categories/books/book[@name='Chapters']
Not obvious but since /categories is not indexed  (no key defined using [@...] notation)  it will return a book from any categories
7partial xpath, wildcard in the middle of the path . Could be seen as combination of starts-with and end-with/bookstore/categories//book[@name='Chapters']
using // in the middle of a path is like a wildcard for any containers or lists between /categories and /book
8

combining several leaf values (and, or etc.)

Can bee seen too for composite list-keys and does work in scenario #1 above (but is order dependent)

[@id1 =  x and @id2 = y]
just for illustration purposes
9(string) leave value contains something[contains()]
just for illustration purposes
10get direct ancestor

//*[child::book[@name='Chapters']]

//book[@name="Chapters"]/..




11get ancestor by type

<query>/ancestor::bookstore

e.g //book[@name="Chapters"]/ancestor::bookstore


Required for end to end API call #1


Note 1. All cpsPath queries can be fulfilled by just 1 REST endpoint and Java API method (as agreed earlier). We just need to document the capabilities (xpath functions) support by our cpsPath...

...