xpath to select all parents and all children
You always have a context node that you define as being an element with a specific attribute value, e.g. "add-user"
or "security-admin"
:
//*[@key = "string"]
As this gives you a nodeset the expression for the context node needs to exclude all non-single elements of such a kind:
//*[@key = "string" and count(//*[@key = "string"]) = 1]
This solves the needs for your context node. You can then represent that contextnode with either the .
or write it in there verbatim.
Select all parents, grandparents, grand-grandparents and so on of the context element (that is the ancestor axis):
./ancestor::*//*[@key = "string" and count(//*[@key = "string"]) = 1]/ancestor::*
Select all children (that is the descendant axis):
./descendant::*.//*//*[@key = "string" and count(//*[@key = "string"]) = 1]/descendant::*//*[@key = "string" and count(//*[@key = "string"]) = 1]//*