At this point of the tutorial, you'll need to know the XPath standard to understand what follows.
The following macro is used to display in an external image viewer, the image referenced in the fileref
attribute of explicitly or implicitly selected DocBook elements graphic
or imagedata
.
The image viewer used by this macro is an external program called gimp. It is launched using command start.
<command name="startImageViewer"> <macro> <sequence> <get context="$implicitElement/@fileref" expression="uri-to-file-name(resolve-uri(.))" /> <command name="start" parameter='gimp "%_"' /> </sequence> </macro> </command>
The above macro shows how to use get at its best:
First the context
attribute, common to all XPath-based constructs get, set, test and match, is evaluated as a node set, using the document as a context node.
The expression
attribute, common to get, set and test, is evaluated as a string using the context node found in previous step.
If get, set, test or match have no context
attribute, the context node used to evaluate expression
is the document node itself (that is, XPath "/
").
The context
attribute contains "$implicitElement/@fileref
" which means attribute fileref
of explicitly or implicitly selected element, because implicitElement
is a predefined variable mapped to explicitly or implicitly selected element (more info. about this in next section).
The expression
attribute contains "uri-to-file-name(resolve-uri(.))
". ".
" is the fileref
attribute node. resolve-uri() in XMLmind XML Editor - Support of XPath 1.0 and uri-to-file-name() in XMLmind XML Editor - Support of XPath 1.0 are two non-standard XPath functions which are used to resolve a relative URL and then to convert this URL to a file name (xv will not work if passed an URL).