Wiki source for CommandXpath

Show raw source

======Command xpath======

**xpath** evaluate an XPATH expression and print the result

xpath [ [[SerializationOptions serialization options]] ] [options] [xpath-expr]

||-f,-file xpath-file|| read xpath expression from file||
||-i,-input context||(depreciated) use context as the source xml document, otherwise stdin if context is an XML expression which is an item then use it directly as the context item.||
||-c,-context context||Use context as a literal context||
||-cf,-context-file file||Use file as the name of an XML file for the context, or "-" for stdin||
||-n|| do not use a source context||
||-q,-query xpath-expr||xpath expression||
||-v|| Read remaining pairs of arguments as name/value pairs to assign as xpath variables||
||-nons|| Do not import global namespace declarations from the shell environment||
||-ns prefix=uri|| Add a predeclared namespace delcaration||
||-s,-string||Convert the result to a string if it is an attribute or element||
||-b,-bool||Do not print anything. Treat the result as a boolean and exit with 0 if the value is true otherwise 1||
||-e,-exists||Execute xpath but do not print anything. The exit status is 0 if there was any selected values otherwise 1||

Supports the standard [ [[SerializationOptions serialization options]] ]

Note that the "-q" is optional. It is only required if you need to specify both -n and -v
xpath-n -q expr -v variable some-value

If the result (or any node of the result if a sequence) is an Attribute the it is converted to a string.

-i is depreciated. It is a convenience option that does the following
- If context is an atomic value then treat as a filename to be loaded as the context item
- Otherwise treat as the literal context for the context item

-c or -cf are suggested which explicitly indicate if to use the expression literally or as a filename

xls | xpath '//file[1]/@name/string()'

Simplified example, you don't need to use /string()
xls | xpath '//file[1]/@name'

Namespace example using xmlsh [[Namespaces]] support
declare namespace y=foo
echo "<x:a xmlns:x='foo' />" | xpath /y:a

Namespace example using a renamed prefix for a namespace
echo "<x:a xmlns:x='foo' />" | xpath -nons -ns y=foo /y:a
<x:a xmlns:x="foo"/>

====Return Value====
Returns 0 if the the xpath expression executed successfully and a non-empty result is returned. otherwise 1

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki