The table below gives some examples of patterns, and explains their meaning:
Pattern |
Meaning |
XXX |
Matches any element whose name (tag) is XXX |
* |
Matches any element |
XXX/YYY |
Matches any YYY element whose parent is an XXX |
XXX//YYY |
Matches any YYY element that has an ancestor named XXX |
/*/XXX |
Matches any XXX element that is immediately below the top-level element in the document |
*[@NAME] |
Matches any element with a NAME attribute |
SECTION/PARA[1] |
Matches any PARA element that is the first PARA child of a SECTION element |
SECTION[TITLE="Contents"] |
Matches any SECTION element whose first TITLE child element has the value "Contents" |
A/TITLE | B/TITLE | C/TITLE |
Matches any TITLE element whose parent is of type A or B or C (Note that this cannot be written "(A|B|C)/TITLE", although that is a valid node-set expression.) |
/BOOK//* |
Matches any element in a document provided the top-level element in the document is named "BOOK" |
A/text() |
Matches the character content of an A element |
A/@* |
Matches any attribute of an A element |