File Coverage

blib/lib/XML/XSH2/Help.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             # This file was automatically generated from src/xsh_grammar.xml on
2             # Sat Jan 30 02:50:03 2021
3              
4             package XML::XSH2::Help;
5 8     8   52 use strict;
  8         14  
  8         251  
6 8     8   39 use vars qw($HELP %HELP $Apropos);
  8         10  
  8         52109  
7              
8              
9             $HELP=<<'END';
10              
11             Welcome to XSH help
12             -------------------
13              
14             In this help:
15             [topic] is a cross reference that can be followed using 'help topic'
16              
17             XSH2 acts as a command interpreter. Individual commands must be separated
18             with a semicolon. In the interactive shell, backslash may be used at the
19             end of a line to indicate that a command continues on the next line.
20             Output redirection can be used to pipe output of some XSH [command] to
21             some external program, or to capture the output to a variable. See
22             [Redirection] for more info.
23              
24             XSH2 command [help] provides a complete reference, instantly from the
25             command-line:
26              
27             'help command' gives a list of all XSH2 [commands].
28              
29             'help type' gives a list of all argument types.
30              
31             'help topic' followed by documentation chapter gives more information on
32             a given topic.
33              
34             'help toc' displays the table of contents.
35              
36              
37              
38             Within the interactive shell, press for auto-completion.
39             END
40              
41             $HELP{'toc'}=[<<'END'];
42              
43             Help items:
44             -----------
45              
46             toc - this page
47              
48             XSH Language Topics:
49              
50             Argtypes - Argument Types
51             Configuration - Global settings
52             Documents - Files/Documents
53             Flow - Flow control
54             Information - Retrieving more information
55             Manipulation - Tree modification
56             Namespaces - Namespaces in XML and XPath
57             Navigation - Tree navigation
58             Perl_shell - Interacting with Perl and Shell
59             Prompt - Prompt in the interactive shell
60             Redirection - Command output redirection
61             Variables - Variables
62             xsh2delta - Changes since XSH 1.x
63              
64             XSH Commands:
65              
66             apropos, assign, backups, call, canonical, catalog, cd,
67             change-ns-prefix, change-ns-uri, clone, close, copy, count, create,
68             debug, declare-ns, def, defs, do, doc-info, documents, dtd, edit,
69             edit-string, empty-tags, enc, encoding, eval, exec, exit, fold,
70             foreach, get, hash, help, if, ifinclude, include, indent, index,
71             insert, iterate, keep-blanks, last, lcd, lineno, load-ext-dtd, local,
72             locate, ls, map, move, my, namespaces, next, nobackups, nodebug,
73             normalize, open, parser-completes-attributes, parser-expands-entities,
74             parser-expands-xinclude, pedantic-parser, perl, prev, print,
75             process-xinclude, pwd, query-encoding, quiet, recovering, redo,
76             register-function, register-namespace, register-xhtml-namespace,
77             register-xsh-namespace, remove, rename, return, run-mode, save, set,
78             set-dtd, set-enc, set-ns, set-standalone, set_filename, settings,
79             skip-dtd, sort, stream, strip-whitespace, switch-to-new-documents,
80             test-mode, throw, try, undef, unfold, unless, unregister-function,
81             unregister-namespace, validate, validation, variables, verbose,
82             version, while, wrap, wrap-span, xcopy, xinsert, xmove,
83             xpath-axis-completion, xpath-completion, xpath-extensions, xslt,
84             xupdate
85              
86             XSH Argument Types:
87              
88             $variable, block, command, document, encoding, expression, filename,
89             location, node-type, nodename, perl-code, subroutine, xpath
90              
91             XPath Extension Functions:
92              
93             xsh:base-uri, xsh:context, xsh:current, xsh:doc, xsh:document,
94             xsh:document-uri, xsh:documents, xsh:evaluate, xsh:filename, xsh:grep,
95             xsh:id2, xsh:if, xsh:join, xsh:lc, xsh:lcfirst, xsh:lineno, xsh:lookup,
96             xsh:map, xsh:match, xsh:matches, xsh:max, xsh:min, xsh:new-attribute,
97             xsh:new-cdata, xsh:new-chunk, xsh:new-comment, xsh:new-element,
98             xsh:new-element-ns, xsh:new-pi, xsh:new-text, xsh:parse, xsh:path,
99             xsh:resolve-uri, xsh:reverse, xsh:same, xsh:serialize, xsh:span,
100             xsh:split, xsh:sprintf, xsh:strmax, xsh:strmin, xsh:subst, xsh:substr,
101             xsh:sum, xsh:times, xsh:uc, xsh:ucfirst, xsh:var
102              
103             END
104              
105             $HELP{'command'}=[<<'END'];
106             command
107              
108             description:
109             XSH2 command consists of a command name and possibly command
110             parameters separated by whitespace. Individual [XSH2 commands]
111             are separated with a semicolon. A command may optionally be
112             followed by an output redirection directive (see
113             [binding_shell] for output redirection to a command and
114             [Variables] for output redirection to variable). Most commands
115             have aliases, so for example [remove] command may also be
116             invoked as 'del' or 'rm'.
117              
118             XSH2 recognizes the following commands (not including
119             aliases): apropos, assign, backups, call, canonical, catalog,
120             cd, change-ns-prefix, change-ns-uri, clone, close, copy,
121             count, create, debug, declare-ns, def, defs, do, doc-info,
122             documents, dtd, edit, edit-string, empty-tags, enc, encoding,
123             eval, exec, exit, fold, foreach, get, hash, help, if,
124             ifinclude, include, indent, index, insert, iterate,
125             keep-blanks, last, lcd, lineno, load-ext-dtd, local, locate,
126             ls, map, move, my, namespaces, next, nobackups, nodebug,
127             normalize, open, parser-completes-attributes,
128             parser-expands-entities, parser-expands-xinclude,
129             pedantic-parser, perl, prev, print, process-xinclude, pwd,
130             query-encoding, quiet, recovering, redo, register-function,
131             register-namespace, register-xhtml-namespace,
132             register-xsh-namespace, remove, rename, return, run-mode,
133             save, set, set-dtd, set-enc, set-ns, set-standalone,
134             set_filename, settings, skip-dtd, sort, stream,
135             strip-whitespace, switch-to-new-documents, test-mode, throw,
136             try, undef, unfold, unless, unregister-function,
137             unregister-namespace, validate, validation, variables,
138             verbose, version, while, wrap, wrap-span, xcopy, xinsert,
139             xmove, xpath-axis-completion, xpath-completion,
140             xpath-extensions, xslt, xupdate
141              
142             see also: block
143              
144             END
145              
146              
147             $HELP{'block'}=[<<'END'];
148             block argument type
149              
150             description:
151             a block of semicolon-separated XSH2 commands enclosed within
152             braces.
153              
154             Example: Count paragraphs in each chapter
155              
156             $i=0;
157             foreach //chapter {
158             $c=count(./para);
159             $i=$i+1;
160             print "$c paragraphs in chapter no.$i";
161             }
162              
163             END
164              
165              
166             $HELP{'type'}=[<<'END'];
167             List of command argument types
168              
169             description:
170             $variable, block, command, document, encoding, expression,
171             filename, location, node-type, nodename, perl-code,
172             subroutine, xpath
173              
174             END
175              
176              
177             $HELP{'encoding'}=[<<'END'];
178             enc_string argument type
179              
180             description:
181             An [expression] which evaluates to a valid encoding name, e.g.
182             to utf-8, utf-16, iso-8859-1, iso-8859-2, windows-1250 etc. As
183             with [filename], as long as the expression doesn't contain
184             special characters like braces, brackets, quotes, '$', nor
185             '@', it is taken as a literal and evaluates to itself.
186              
187             END
188              
189              
190             $HELP{'$variable'}=[<<'END'];
191             variable name
192              
193             description:
194             Variable names start with a dollar-sign ('$') followed by an
195             identifier. The identifier must match the following regular
196             expression '[a-zA-Z_][a-zA-Z0-9_]*', i.e., it must be at least
197             one character long, must beginning with a letter or
198             underscore, and may only containing letters, underscores, and
199             digits.
200              
201             see also: Variables assign my local
202              
203             END
204              
205              
206             $HELP{'subroutine'}=[<<'END'];
207             sub-routine name
208              
209             description:
210             A sub-routine name is an identifier matching the following
211             regular expression '[a-zA-Z_][a-zA-Z0-9_]*', i.e., it must be
212             at least one character long, must beginning with a letter or
213             underscore, and may only containing letters, underscores, and
214             digits.
215              
216             END
217              
218              
219             $HELP{'document'}=[<<'END'];
220             document
221              
222             description:
223             A document is specified by arbitrary [expression] which
224             evaluates to a non-empty node-list. From this node-list, the
225             first node is taken and its owner document is used.
226              
227             see also: Variables assign my local
228              
229             END
230              
231              
232             $HELP{'filename'}=[<<'END'];
233             Filename argument type
234              
235             description:
236             An [expression] which evaluates to a valid filename or URL. As
237             long as the expression contains no whitespace, no brackets of
238             any type, quotes, double-quotes, '$' character nor '@'
239             character, it is treated as a literal token which evaluates to
240             itself.
241              
242             END
243              
244              
245             $HELP{'nodename'}=[<<'END'];
246             Node-name argument type
247              
248             description:
249             An [expression] which evaluates to a valid name of an element,
250             attribute or processing-instruction node. As long as the
251             expression contains no whitespace, no brackets of any type,
252             quotes, double-quotes, '$' character, nor '@' character, it is
253             treated as a literal token which evaluates to itself.
254              
255             END
256              
257              
258             $HELP{'xpath'}=[<<'END'];
259             XPath argument type
260              
261             description:
262             XSH2 can evaluate XPath expressions as defined in W3C
263             recommendation at http://www.w3.org/TR/xpath with only a
264             little limitation on use of syntactically ignorable
265             whitespace. (Nice interactive XPath tutorials and references
266             can be found at http://www.zvon.org.)
267              
268             In order to allow XSH2 to use white-space as a command
269             argument delimiter (which is far more convenient to type than,
270             say, commas), the use of white-space in XPath is slightly
271             restricted. Thus, in XSH2, white-space can only occur in those
272             parts of an XPath expression, that are surrounded by either
273             brackets, square brackets, single or double quotes. So, for
274             example, otherwise valid XPath expression like
275              
276             / foo / bar [ @baz = "bar" ]
277             should in XSH2 be written as either of
278              
279             /foo/bar[ @baz = "bar" ]
280             avoiding any white-space outside the square brackets, or
281             completely enclosed in brackets as in
282              
283             ( / foo / bar [ @baz = "bar" ] ).
284             XSH2 provides a number of powerful XPath extension functions,
285             listed below and described in separate sections. XPath
286             extension functions by default belong to XSH2 namespace
287             'http://xsh.sourceforge.net/xsh/' with a namespace prefix set
288             to 'xsh'. A program may however call the [xpath-extensions]
289             command to map XSH2 XPath extension functions into the default
290             namespace, so that they may be used directly without any
291             prefix.
292              
293             XPath extension functions defined in XSH2: xsh:base-uri,
294             xsh:context, xsh:current, xsh:doc, xsh:document,
295             xsh:document-uri, xsh:documents, xsh:evaluate, xsh:filename,
296             xsh:grep, xsh:id2, xsh:if, xsh:join, xsh:lc, xsh:lcfirst,
297             xsh:lineno, xsh:lookup, xsh:map, xsh:match, xsh:matches,
298             xsh:max, xsh:min, xsh:new-attribute, xsh:new-cdata,
299             xsh:new-chunk, xsh:new-comment, xsh:new-element,
300             xsh:new-element-ns, xsh:new-pi, xsh:new-text, xsh:parse,
301             xsh:path, xsh:resolve-uri, xsh:reverse, xsh:same,
302             xsh:serialize, xsh:span, xsh:split, xsh:sprintf, xsh:strmax,
303             xsh:strmin, xsh:subst, xsh:substr, xsh:sum, xsh:times, xsh:uc,
304             xsh:ucfirst, xsh:var
305              
306             Example: Open a document and count all sections containing a subsection
307              
308             xsh $scratch/> $v := open mydocument1.xml;
309             xsh $v/> $k := open mydocument2.xml;
310             xsh $k/> count //section[subsection]; # searches k
311             xsh $k/> count $v//section[subsection]; # searches v
312              
313             END
314              
315              
316             $HELP{'expression'}=[<<'END'];
317             expression
318              
319             description:
320             An XSH2 expression can be one of the following constructs:
321              
322             1. XPath 1.0 expression with the following restriction:
323             whitespace is only allowed within parts the expression
324             enclosed in quotes (literal strings) or brackets (XPath has
325             two types of brackets - plain and square). Thus, while '/
326             foo / bar' is a valid XPath expression matching element
327             named bar under root element foo, in XSH2 this expression
328             must be written as '/foo/bar' or '(/ foo / bar)' or
329             '(/foo/bar)' etc. The reason for this restriction is simple:
330             XSH2, like most shell languages, uses whitespace as argument
331             delimiter so it must be able to determine expression
332             boundaries (otherwise, '/ bar / foo' could be anything
333             between one and four expressions).
334              
335             2. In certain contexts, usually when a filename or a node
336             name is expected as an argument, bareword (otherwise XPath)
337             expressions are evaluated in a non-standard way: as long as
338             the expression contains no whitespace, no brackets of any
339             kind, quotes, double-quotes, '$' character, nor '@'
340             character, it is treated as a literal token which evaluates
341             to itself. This usually happens if a file name or element
342             name is expected, but some other commands, like [print],
343             evaluate its arguments in this way. In order to force an
344             XPath evaluation in such situations, the entire expression
345             should be enclosed with brackets '(...)'. For example, with
346             [open] command, 'open file' or 'open "file"' both open a
347             file whose name is 'file' (literally) whereas 'open (file)'
348             or 'open @file' compute the file name by evaluating '(file)'
349             or '@file' respectively, as XPath expressions.
350              
351             3. Perl blocks. These are enclosed in braces like: '{
352             perl-code }'. Perl expressions can be used to evaluate more
353             complicated things, like complex string expressions, regexp
354             matches, perl commands, etc. In short, arbitrary perl. Of
355             course, things like '{`ls`}' work too, and that's why we
356             don't need to define shell-like backticks in XSH2 itself.
357              
358             4. Result of one XSH2 command can be directly passed as an
359             argument to another. This is done using &{ xsh-code }
360             expressions. Most XSH2 commands always return 'undef' or 1,
361             but some do return a value, usually a node-list. Examples of
362             such commands are [open], [copy], [move], [wrap], [edit], or
363             [xslt].
364              
365             5. Large blocks of literal data can be passed to commands
366             via "here document" expressions '<
367             <<"EOF"'', where 'EOF' is an arbitrary 'ID' string. '<
368             and '<<"EOF"' are equivalent, and are subject to
369             interpolation of '${...}' constructs, where as '<<'EOF''
370             does not. The result of evaluation of these three is the
371             literal content (with '${...}' possibly interpolated) of the
372             script starting at the following line and ending at a line
373             containing just 'EOF'. '<<{EOF}' and '<<(EOF)' are
374             implemented too, but I'm not sure they are of any use since
375             putting the expression in ( ) or { } has the same effect.
376              
377             XPath expressions (and their filename variant) are subject to
378             interpolation of substrings of the form '${...}' (called
379             interpolators), where '...' can be of several different forms,
380             described below. The interpolation can be suppressed by
381             preceding the '$' sign with a backslash.
382              
383             Substrings of the form '${id}' or '${$id}' are interpolated
384             with the value of the variable named '$id'.
385              
386             Interpolators of the form '${{' and '}}' evaluate their
387             contents as a Perl expression (in very much the same way as
388             the [perl] command) and interpolate to the resulting value.
389              
390             Interpolators of the form '${(' and ')}' evaluate their
391             contents as an XPath expression and interpolates to a string
392             value of the result.
393              
394             Substrings of the form '\${' interpolate to '${' (as a means
395             for escaping '${...}' in an expression).
396              
397             Expressions are evaluated by XSH2 commands themselves, so the
398             exact value an expression evaluates to, is also
399             command-dependent. There are commands that can handle all data
400             types, but some commands expect their arguments to evaluate
401             only to specific kinds of values. As already mentioned above,
402             commands expecting a filename or a node name usually evaluate
403             simple expressions not containing any special characters as
404             literal strings, whereas commands expecting strings evaluate
405             all expressions so that they get a string value (e.g. by
406             converting a node-set to its text content). Similarly,
407             commands expecting a node-set usually convert strings to a
408             small XML fragments, while commands expecting a single
409             document node usually convert node-sets to a document node by
410             taking the owner document of the first element in the
411             node-set.
412              
413             Example:
414             $a = "bar"; # $a contains: bar
415             $b = $a; # $b contains: bar
416             $b = "$a"; # $b contains: $a
417             $b = "${a}"; # $b contains: bar
418             $b = {$a}; # $b contains: bar
419             $b = //creature; # $b contains a node-set
420             ls $b; # prints the node-set as XML in document order
421             count $b; # prints number of nodes in the node-set
422             echo count($b); # the same
423             $c = string($b[1]/@name) # $c contains string value of //creature[1]/@name (e.g. Bilbo)
424             echo //creature # prints: //creature
425             echo (//creature) # evaluates (//creature) as XPath and prints the
426             # text content of the resulting node-set
427            
428             echo { join(",",split(//,$a)) } # prints: b,a,r
429             echo ${{ join(",",split(//,$a)) }} # the same
430             echo "${{ join(",",split(//,$a)) }}" # the same
431             echo "${(//creature[1]/@name)}" # prints e.g.: Bilbo
432             echo ${(//creature[1]/@name)} # the same
433             echo //creature[1]/@name # the same
434             echo string(//creature[1]/@name) # the same
435             echo (//creature[1]/@name) # the same
436              
437             Example: In-line documents
438              
439             $a="bar"
440             echo foo <
441             xx ${a} yy
442             END
443             # prints foo xx bar yy baz
444             echo foo <<"END" baz;
445             xx ${a} yy
446             END
447             # same as above
448             echo foo <<'END' baz;
449             xx ${a} yy
450             END
451             # prints foo xx $a yy baz
452              
453             Example: Expressions returning result of a XSH2 command
454              
455             copy &{ sort --key @best_score --numeric //player } into .;
456              
457             END
458              
459              
460             $HELP{'try'}=[<<'END'];
461             usage: try [block] catch [[local|my] [$variable]] [block]
462            
463             description:
464             Execute the [block] following the 'try' keyword. If an error
465             or exception occurs during the evaluation, execute the 'catch'
466             [block]. If the 'catch' keyword is followed by a variable
467             (possibly localized for the following block using [my] or
468             [local]) and the 'try' block fails with an exception, the
469             error message of the exception is stored to the variable
470             before the 'catch' block is executed.
471              
472             The [throw] command as well as an equivalent Perl construction
473             'perl { die "error message" }' allow user to throw custom
474             exceptions.
475              
476             Unless exception is raised or error occurs, this command
477             returns the return value of the 'try' block; otherwise it
478             returns the return value of the 'catch' block.
479              
480             Example: Handle parse errors
481              
482             try {
483             $doc:=open --format xml $input;
484             } catch {
485             try {
486             echo "XML parser failed, trying HTML";
487             $doc := open --format html $input;
488             } catch my $error {
489             echo "Stopping due to errors: $error";
490             exit 1;
491             }
492             }
493              
494             see also: throw
495              
496             END
497              
498              
499             $HELP{'if'}=[<<'END'];
500             usage: if [expression] [command]
501             if [expression]
502             [block] [ elsif [block] ]* [ else [block] ]
503            
504             description:
505             Executes [command] or [block] if a given [expression]
506             expression evaluates to a non-emtpty node-list, true
507             boolean-value, non-zero number or non-empty literal. If the
508             first expression fails, then 'elsif' conditions are tested (if
509             any) and the [block] corresponding to the first one of them
510             which is true is executed. If none of the conditions is
511             satisfied, an optional 'else' [block] is executed.
512              
513             Example: Display node type
514              
515             def node_type %n {
516             foreach (%n) {
517             if ( . = self::* ) { # XPath trick to check if . is an element
518             echo 'element';
519             } elsif ( . = ../@* ) { # XPath trick to check if . is an attribute
520             echo 'attribute';
521             } elsif ( . = ../processing-instruction() ) {
522             echo 'pi';
523             } elsif ( . = ../text() ) {
524             echo 'text';
525             } elsif ( . = ../comment() ) {
526             echo 'comment'
527             } else { # well, this should not happen, but anyway, ...
528             echo 'unknown-type';
529             }
530             }
531             }
532              
533             Example: Check a environment variable
534              
535             if { defined($ENV{HOME}) } lcd { $ENV{HOME} }
536              
537             END
538              
539              
540             $HELP{'unless'}=[<<'END'];
541             usage: unless [expression]
542             [command]
543             unless [expression]
544             [block] [ else [block] ]
545            
546             description:
547             Like if but negating the result of the expression. Also,
548             unlike if, 'unless' has no 'elsif' block.
549              
550             see also: if
551              
552             END
553              
554              
555             $HELP{'while'}=[<<'END'];
556             usage: while [expression] [block]
557            
558             description:
559             Execute the [command] or [block] as long as the given
560             [expression] evaluates to a non-emtpty node-list, true
561             boolean-value, non-zero number or non-empty literal.
562              
563             Example: The commands in this example do the same thing
564              
565             xsh> while /table/row remove /table/row[1];
566             xsh> remove /table/row;
567              
568             END
569              
570              
571             $HELP{'do'}=[<<'END'];
572             usage: do [block]
573            
574             description:
575             Execute [block]. This command is probably only useful when one
576             wants to redirect output of more than one command.
577              
578             see also: block
579              
580             END
581              
582              
583             $HELP{'eval'}=[<<'END'];
584             usage: eval [expression]
585            
586             description:
587             NOTE: This command has very different behavior from XSH1,
588             where it used to be an alias for [perl].
589              
590             This command first evaluates a given [expression] to obtain a
591             string, then evaluates this string as XSH2 code in the current
592             context, returning the return value of the last evaluated
593             command. This command raises an exception if either
594             [expression] evaluates to invalid XSH2 code or if evaluating
595             the code raises an exception.
596              
597             Example: Evaluate "in-line" XSH snippets within a XML document
598              
599             foreach //inline-xsh eval .;
600              
601             END
602              
603              
604             $HELP{'foreach'}=[<<'END'];
605             usage: foreach [expression]
606             [command]|[block]
607             foreach [my|local] [$variable] in [expression]
608             [command]|[block]
609            
610             aliases: for
611              
612             description:
613             Evaluate given [expression] to a node-list and for each
614             resulting node execute given [command] or [block]. If used
615             without a loop [$variable], the loop temporarily sets current
616             node to the node being processed. Otherwise, the processed
617             node is assigned to the loop variable.
618              
619             The [expression] may be [xpath] as well as a [perl-code]. In
620             the latter case, if used without a loop variable, the loop
621             automatically converts Perl objects to nodes. No conversion is
622             performed when a loop variable is used.
623              
624             Example: Move all employee sub-elements in a company element into the
625             first staff subelement of the same company
626              
627             xsh> foreach //company xmove employee into staff[1];
628              
629             Example: List content of all XML files in current directory
630              
631             xsh> foreach my $filename in { glob('*.xml') } {
632             $f := open $filename;
633             do_something $f;
634             }
635              
636             END
637              
638             $HELP{'for'}=$HELP{'foreach'};
639              
640             $HELP{'undef'}=[<<'END'];
641             usage: undef [[subroutine] | [$variable]]
642            
643             aliases: undefine
644              
645             description:
646             This command can be used to undefine previously defined XSH2
647             subroutines and variables.
648              
649             see also: close def
650              
651             END
652              
653             $HELP{'undefine'}=$HELP{'undef'};
654              
655             $HELP{'def'}=[<<'END'];
656             usage: def [subroutine] [[$variable] ...] [block]
657            
658             aliases: define
659              
660             description:
661             Define a new XSH2 sub-routine named [subroutine]. The
662             subroutine may require zero or more parameters. These are
663             declared as a whitespace-separated list of parametric
664             variables. The body of the subroutine is specified as a
665             [block].
666              
667             A sub-routine can be invoked directly by its name followed by
668             its arguments just as any XSH2 command, or indirectly using
669             the [call] command followed by an expression evaluating to the
670             routine name and sub-routine arguments. Sub-routine arguments
671             can be arbitrary expressions. These expressions are evaluated
672             prior the sub-routine's code execution and are assigned to the
673             sub-routine's parametric variables in the respective order.
674             The number of parameter variables in a sub-routine definition
675             and the number of arguments in a call to it must match.
676             Calling a sub-routine with less or more arguments than
677             declared is a run-time error.
678              
679             Parametric variables are lexical variables within the
680             sub-routine body as if they were declared with [my].
681              
682             Note that a subroutine has to be defined before it is first
683             called (in terms of execution -- depending on the structure of
684             the program, the actual definition of the sub-routine must not
685             necessarily precede all references to it).
686              
687             Example:
688             def l3 $nodes {
689             ls --depth 3 $nodes; # list given nodes upto depth 3
690             }
691             l3 //chapter; # direct call
692             $subref = 'l3';
693             call $subref //chapter; # in-direct call
694              
695             Example: Commenting and un-commenting pieces of document
696              
697             def comment
698             $n # nodes to move to comments
699             $mark # maybe some handy mark to recognize such comments
700             {
701             foreach $n {
702             if ( . = ../@* ) {
703             echo "Warning: attribute nodes are not supported!";
704             } else {
705             echo "Commenting out:";
706             ls --depth 0 .;
707             add comment concat($mark,xsh:serialize(.)) replace .;
708             }
709             }
710             }
711            
712             def uncomment $n $mark {
713             foreach $n {
714             if (. = ../comment()) { # is this node a comment node
715             local $string = substring-after(.,"$mark");
716             add chunk $string replace .;
717             } else {
718             echo "Warning: Ignoring non-comment node:";
719             ls --depth 0 .;
720             }
721             }
722             }
723            
724             # comment out all chapters with no paragraphs
725             comment //chapter[not(para)] "COMMENT-NOPARA";
726            
727             # uncomment all comments stamped with COMMENT-NOPARA
728             $mark="COMMENT-NOPARA";
729             uncomment //comment()[starts-with(.,"$mark")] $mark;
730              
731             see also: call return my local
732              
733             END
734              
735             $HELP{'define'}=$HELP{'def'};
736              
737             $HELP{'assign'}=[<<'END'];
738             usage: [assign] [$variable] = [expression]
739             [assign] [$variable] := [command]
740             [assign] [$variable] [-= | += | *= | /= | %= | x= | .= | ||= | &&= ] [expression]
741             [assign] [$variable] [-:= | +:= | *:= | /:= | %:= | x:= | .:= | ||:= | &&:= ] [command]
742            
743             description:
744             Evaluate the expression (= assignment) or command (:=
745             assignment) on the right side of the assignment and store the
746             result in a given variable. Optionally a Perl operator (-
747             subtraction, + addition, * multiplication, / division, %
748             modulo, x repeat string n-times, . concatenation, || logical
749             OR, && logical AND) can precede the assignment, in which case
750             the variable is assigned the result of applying given operator
751             on its previous value and the value of the right side of the
752             assignment.
753              
754             Example: Assign XPath (node-set, string), or Perl results
755              
756             xsh> $a=chapter/title;
757             xsh> $b="hallo world";
758             xsh> $c={ `uname` };
759             xsh> ls $a;
760              
761             Example: Arithmetic expressions (XPath)
762              
763             xsh> $a=5*100 # assign 500 to $a
764             xsh> $a += 20 # add 20 to $a
765             xsh> $a = (($a+5) div 10)
766              
767             Example: Arithmetic expressions (Perl)
768              
769             xsh> $a={ 5*100 }
770             xsh> $a = { join ';', split //,"hallo" } # assigns "h;a;l;l;o" to $a
771              
772             Example: Command result assignment
773              
774             xsh> $doc := open "file.xml" # open a document
775             xsh> $copies := xcopy //foo into //bar # copy elements and store the copies
776             xsh> $wrappers := wrap "wrapper" $copies # wrap each node from $copies to a new element "wrapper" and store the wrapping elements
777              
778             see also: variables
779              
780             END
781              
782              
783             $HELP{'my'}=[<<'END'];
784             usage: my [$variable] [$var2 ...];
785             my [$variable] = [expression];
786            
787             description:
788             Same as in Perl: a "my" declares the listed variables to be
789             local (lexically) to the enclosing block, or sub-routine.
790              
791             see also: local
792              
793             END
794              
795              
796             $HELP{'local'}=[<<'END'];
797             usage: local [$variable] = [xpath]
798             local [$variable] [ [$variable] ... ]
799            
800             description:
801             This command acts in a very similar way as [assign] does,
802             except that the variable assignment is done temporarily and
803             lasts only for the rest of its enclosing [block] or
804             subroutine. At the end of the enclosing block or subroutine,
805             the original value is restored. This also reverts any later
806             usual assignments to the variable done occurring before the
807             end of the block. This command may also be used without the
808             assignment part.
809              
810             Note, that the variable itself remains global in the sense
811             that it is still visible to any subroutine called subsequently
812             from the same block. Unlike [my] declaration, it does not
813             create a new lexically scoped variable.
814              
815             Hint for Perl programmers: 'local' in XSH2 works exactly as
816             'local' in Perl.
817              
818             see also: assign my def
819              
820             END
821              
822              
823             $HELP{'settings'}=[<<'END'];
824             usage: settings
825            
826             description:
827             List current values of all XSH2 settings (such as validation
828             flag or query-encoding).
829              
830             '--variables' or ':v' flag enforces syntax which makes use of
831             variable assignments. Otherwise, settings are listed in the
832             form of XSH commands.
833              
834             Example: Store current settings in your .xsh2rc
835              
836             xsh> settings | cat > ~/.xsh2rc
837              
838             END
839              
840              
841             $HELP{'defs'}=[<<'END'];
842             usage: defs
843            
844             description:
845             List names and parametric variables for all user-defined XSH2
846             subroutines.
847              
848             see also: def variables
849              
850             END
851              
852              
853             $HELP{'ifinclude'}=[<<'END'];
854             usage: ifinclude [--encoding|:e [encoding]] [filename]
855            
856             description:
857             Unless the file [filename] has already been included using
858             either [include] of [ifinclude], load the file and execute it
859             as a XSH2 script.
860              
861             Use '--encoding' or ':e' parameter to specify character
862             encoding used in the included file.
863              
864             see also: include
865              
866             END
867              
868              
869             $HELP{'include'}=[<<'END'];
870             usage: include [--encoding|:e [encoding]] [filename]
871            
872             aliases: .
873              
874             description:
875             Load a file named [filename] and execute it as a XSH2 script.
876              
877             Use '--encoding' or ':e' parameter to specify character
878             encoding used in the included file.
879              
880             see also: ifinclude
881              
882             END
883              
884             $HELP{'.'}=$HELP{'include'};
885              
886             $HELP{'apropos'}=[<<'END'];
887             usage: apropos [--fulltext] [--regexp] [expression]
888            
889             description:
890             Print all help topics containing given expression in their
891             short description. The '--fulltext' flag forces the search to
892             be performed over the full text of help. '--regexp' indicates,
893             that the given [expression] is a regular expression instead of
894             a literal string.
895              
896             END
897              
898              
899             $HELP{'help'}=[<<'END'];
900             usage: help [command]|argument-type|xsh:xpath-function
901            
902             description:
903             Print help on a given command, argument type or XPath
904             extension function (use 'xsh:' as a prefix to XPath extensions
905             function names, e.g 'help xsh:id2').
906              
907             END
908              
909              
910             $HELP{'exec'}=[<<'END'];
911             usage: exec [expression] [[expression] ...]
912            
913             aliases: system
914              
915             description:
916             This command executes given [expression](s) as a system
917             command and returns the exit code.
918              
919             Example: Count words in "hallo wold" string, then print name of your
920             machine's operating system.
921              
922             exec echo hallo world; # prints hallo world
923             exec "echo hallo word" | wc; # counts words in hallo world
924             exec uname; # prints operating system name
925              
926             END
927              
928             $HELP{'system'}=$HELP{'exec'};
929              
930             $HELP{'xslt'}=[<<'END'];
931             usage: $result := xslt [--doc|:d | --precompiled|:p] [--string] [expression] [[document] name=[xpath] [name=[xpath] ...]]
932             $pre_compiled := xslt [--compile|:c] [expression]
933            
934             aliases: transform xsl xsltproc process
935              
936             description:
937             This function compiles a given XSLT stylesheet and/or
938             transforms a given document with XSLT.
939              
940             A XSLT stylesheet is specified in the first argument either as
941             a file name (default), or as a document ('--doc' or ':d'), or
942             as a precompiled XSLT stylesheet object ('--precompiled' or
943             ':p' - see '--compile' above).
944              
945             If '--compile' or ':c' is used, compile a given XSLT
946             stylesheet and return a compiled XSLT stylesheet object. This
947             object can be later passed as a XSLT stylesheet to 'xslt
948             --precompiled'.
949              
950             Without '--compile' or ':c', transform a given [document] (or
951             - if used with only the stylesheet argument - the current
952             document) using a given XSLT stylesheet and return the result.
953              
954             All arguments following the second (document) argument are
955             considered to be stylesheet parameters and (after expanding
956             '${...}' interpolators) are directly passed to the XSLT engine
957             without being evaluated by XSH2. All stylesheet parameters
958             should be of the form 'name=[xpath]' (possibly in brackets).
959              
960             Example: Process current document with XSLT
961              
962             $result := xslt stylesheet.xsl . font='14pt' color='red'
963              
964             Example: Same for several documents, reusing the XSLT stylesheet
965              
966             $xslt := xslt --compile stylesheet.xsl;
967             foreach my $file in {qw(f1.xml f2.xml f3.xml)} {
968             save --file {"out_$file"} &{xslt --precompiled $xslt &{ open $file } font='14pt' color='red'};
969             }
970              
971             END
972              
973             $HELP{'transform'}=$HELP{'xslt'};
974             $HELP{'xsl'}=$HELP{'xslt'};
975             $HELP{'xsltproc'}=$HELP{'xslt'};
976             $HELP{'process'}=$HELP{'xslt'};
977              
978             $HELP{'documents'}=[<<'END'];
979             usage: documents
980            
981             aliases: files docs
982              
983             description:
984             Try to identify open documents and list their URIs and
985             variables that contain them.
986              
987             see also: open close
988              
989             END
990              
991             $HELP{'files'}=$HELP{'documents'};
992             $HELP{'docs'}=$HELP{'documents'};
993              
994             $HELP{'set_filename'}=[<<'END'];
995             usage: set_filename [expression] [[document]]
996            
997             description:
998             Changes filename or URL associated with a given document (or
999             the current document, if only one argument is specified).
1000             Document filename is initialized by the [open] command and
1001             used e.g. by [save]. It can be queried in XPath expressions
1002             using the [xsh:filename] function.
1003              
1004             see also: open save xsh:filename
1005              
1006             END
1007              
1008              
1009             $HELP{'variables'}=[<<'END'];
1010             usage: variables
1011            
1012             aliases: vars var
1013              
1014             description:
1015             List all global variables and their current values.
1016              
1017             see also: documents defs
1018              
1019             END
1020              
1021             $HELP{'vars'}=$HELP{'variables'};
1022             $HELP{'var'}=$HELP{'variables'};
1023              
1024             $HELP{'copy'}=[<<'END'];
1025             usage: copy [--respective|:r] [expression] [location] [expression]
1026             $results := copy [--respective|:r] [expression] [location] [expression]
1027            
1028             aliases: cp
1029              
1030             description:
1031             Copies nodes in the first node-list [expression] (source
1032             nodes) to the destinations determined by the the [location]
1033             directive applied to nodes in the second node-list
1034             [expression] (target nodes). If the source node-list contains
1035             more than one node, than N'th node in the source node-list is
1036             copied to the location relative to the N'th node in the target
1037             node-list.
1038              
1039             If '--respective|:r' option is used, then the target node-list
1040             [expression] is evaluated in the context of the source node
1041             being copied.
1042              
1043             Possible values for [location] are: 'after', 'before', 'into',
1044             'replace', 'append' and 'prepend'. The first three location
1045             directives cause making a copy of the source nodes after,
1046             before, and within (as the last child-node) the target nodes,
1047             respectively. If 'replace' location directive is used, source
1048             node are copied before the respective target nodes and target
1049             nodes are removed. The 'append' and 'prepend' location
1050             directives allow, depending on the destination node type,
1051             either inserting copies of the source nodes as the first or
1052             last child nodes of a destination element or
1053             appending/prepending destination node data in case of
1054             non-element destination nodes. See [location] argument type
1055             for more detail.
1056              
1057             The command returns a node-list consisting of the copies of
1058             all source nodes created by the command.
1059              
1060             Despite the fact the command is named "copy", nodes resulting
1061             from copying the source nodes may pass through certain type
1062             conversion before they are inserted at the appointed
1063             destinations. This, however, only happens in cases where the
1064             types of the source and target nodes are not compatible with
1065             the location directive. See [location] argument type for more
1066             detail.
1067              
1068             Note that XSH2 refuses to create multiple top-level elements
1069             using 'copy', [move] and similar commands.
1070              
1071             Example: Replace living-thing elements in the document b with copies of
1072             the corresponding creature elements from the document $a.
1073              
1074             xsh> copy $a//creature replace $b//living-thing
1075              
1076             Example: Copy every element into itself
1077              
1078             xsh> copy --respective $a//* into .
1079             xsh> copy $a//* into $a//* #same as
1080             above
1081              
1082             see also: xcopy move xmove insert xinsert
1083              
1084             END
1085              
1086             $HELP{'cp'}=$HELP{'copy'};
1087              
1088             $HELP{'xcopy'}=[<<'END'];
1089             usage: xcopy [--respective|:r] [--preserve-order|:p] [expression] [location] [expression]
1090            
1091             aliases: xcp
1092              
1093             description:
1094             xcopy is similar to [copy], but copies all nodes in the first
1095             node-list [expression] to all destinations determined by the
1096             [location] directive relative to the second node-list
1097             [expression]. See [copy] for detailed description of 'xcopy'
1098             arguments.
1099              
1100             If '--respective|:r' option is used, then the target node-list
1101             [expression] is evaluated in the context of the source node
1102             being copied.
1103              
1104             The '--preserve-order|:p' option can be used to ensure that
1105             the copied nodes are in the same relative order as the
1106             corresponding source nodes. Otherwise, if [location] is
1107             'after' or 'prepend', the relative order of the copied nodes
1108             will be reversed, because source nodes are placed to the
1109             target location one by one.
1110              
1111             Example: Copy all middle-earth creatures within the document $a into
1112             every world of the document $b.
1113              
1114             xsh> xcopy $a/middle-earth/creature into $b//world
1115              
1116             see also: copy move xmove insert xinsert
1117              
1118             END
1119              
1120             $HELP{'xcp'}=$HELP{'xcopy'};
1121              
1122             $HELP{'lcd'}=[<<'END'];
1123             usage: lcd [expression]
1124            
1125             aliases: chdir
1126              
1127             description:
1128             Changes the filesystem working directory to [expression], if
1129             possible. If [expression] is omitted, changes to the directory
1130             specified in HOME environment variable, if set; if not,
1131             changes to the directory specified by LOGDIR environment
1132             variable.
1133              
1134             END
1135              
1136             $HELP{'chdir'}=$HELP{'lcd'};
1137              
1138             $HELP{'insert'}=[<<'END'];
1139             usage: insert [--namespace|:n [expression]] [node-type] [expression] [location] [xpath]
1140            
1141             aliases: add
1142              
1143             description:
1144             Works just like [xinsert], except that the new node is
1145             attached only the first node matched.
1146              
1147             see also: xinsert move xmove
1148              
1149             END
1150              
1151             $HELP{'add'}=$HELP{'insert'};
1152              
1153             $HELP{'wrap'}=[<<'END'];
1154             usage: wrap [--namespace [expression]]
1155             [ [--inner] | [--while|:W [expression]] [--until|:U [expression]]
1156             [--skip-whitespace|:w] [--skip-comments|:c] [--skip-pi|:p] ]
1157             [expression] [xpath]
1158            
1159             description:
1160             For each node matching the [xpath] argument, this command
1161             creates a new element node according to a given [expression]
1162             (in the same way as [xinsert] does) which replaces the
1163             matching node, and moves the matching node into this newly
1164             created element. If namespace [expression] is given, the
1165             namespace is applied on the created element. The command
1166             returns a node-list consisting of the elements created.
1167              
1168             With '--inner' (or ':i') flag the command wraps children nodes
1169             of the matching node rather than the node it self the
1170             following sense: for each matching node a new element node is
1171             created, but this time it is placed into the matching node and
1172             all previous children of the matching node are moved into the
1173             newly created node. In this mode, all non-element matching
1174             nodes are ignored. This flag cannot be used together with
1175             '--while' and '--until', which we describe next.
1176              
1177             '--while' (':W') and/or '--until' (':U') arguments can be
1178             provided in order to move a sequence of adjacent siblings
1179             following the matching node into the newly created element. In
1180             this way the newly created element wraps not just the matching
1181             node itself but a range of nodes starting at the matching node
1182             and ending either before a first following node matching the
1183             expression of '--until', or before a first following node not
1184             matching the expression of '--while', or at the last sibling
1185             if neither of the prior apply. Both these expressions are
1186             evaluated in the context of the currently tested sibling and
1187             prior to the creation of the wrapping element. The context
1188             position for these expressions is 1 at the first sibling
1189             following the matching node and increases with each tested
1190             sibling; the context size is the number of all siblings
1191             following the matching node. It is important to mention that
1192             siblings wrapped in this way are excluded from further
1193             processing by [wrap] even if included in the node-list
1194             produced by the [xpath] argument. This allows to easily wrap
1195             certain adjacent elements without worrying about some elements
1196             being wrapped multiple times (for example, 'wrap :W x y //x'
1197             wraps each sequence of adjacent elements '' in a '').
1198              
1199             '--skip-whitespace' (':w'), '--skip-comments' (':c'), and
1200             '--skip-pi' (':p') can be used in combination with '--while'
1201             (':W') and/or '--until' (':U') to skip testing the expressions
1202             on white-space text nodes, comments, and/or processing
1203             instruction, respectively. Such nodes are only included in the
1204             wrapped range if followed by a sibling that is to be wrapped.
1205              
1206             Example:
1207             $scratch/> ls /;
1208            
1209            
1210            
1211             $scratch/> wrap 'foo' *;
1212             $scratch/> insert attribute 'bar=baz' into /foo;
1213             $scratch/> insert text 'some text' into //scratch;
1214             $scratch/> wrap --namespace 'http://foo/bar' 'a:A' //@*;
1215             $scratch/> $wrapper := wrap 'text aaa="bbb"' //text();
1216             $scratch/> wrap '' //*;
1217             $scratch/> ls /;
1218            
1219            
1220            
1221            
1222            
1223            
1224             some text
1225            
1226            
1227            
1228            
1229            
1230            
1231            
1232            
1233            
1234             $scratch/> ls $wrapper;
1235             some text
1236            
1237            
1238             $scratch/> wrap --inner bar //foo
1239             $scratch/> ls /;
1240            
1241            
1242            
1243            
1244            
1245            
1246            
1247             some text
1248            
1249            
1250            
1251            
1252            
1253            
1254            
1255            
1256            
1257              
1258             Example: Wrapping a range of adjacent nodes
1259              
1260             # prepare the test document
1261             $scratch/> rm /scratch/node(); # cleanup the document
1262             $scratch/> set /scratch/li[5]; # create 5
  • elements
  • 1263             $scratch/> set /scratch/li[3]/following-sibling::li; # add
    after the 3rd
  • 1264             $scratch/> for //li set . position(); # number the
  • elements
  • 1265             $scratch/> ls /
    1266            
    1267            
    1268            
  • 1
  • 1269            
  • 2
  • 1270            
  • 3
  • 1271            
    1272            
  • 4
  • 1273            
  • 5
  • 1274            
    1275             # wrap adjacent elements
  • into an
  • 1276             $scratch/> wrap --skip-whitespace --while self::li ol //li;
    1277             $scratch/> ls /
    1278            
    1279            
    1280            
    1281            
  • 1
  • 1282            
  • 2
  • 1283            
  • 3
  • 1284            
    1285            
    1286            
    1287            
  • 4
  • 1288            
  • 5
  • 1289            
    1290            
    1291              
    1292             see also: xinsert insert move xmove
    1293              
    1294             END
    1295              
    1296              
    1297             $HELP{'wrap-span'}=[<<'END'];
    1298             usage: wrap-span [--namespace [expression]] [expression] [expression] [expression]
    1299            
    1300             aliases: wrap_span
    1301              
    1302             description:
    1303             This command is very similar to [wrap] command, except that it
    1304             works on spans of nodes. It wraps spans (i.e. sequence of
    1305             adjacent nodes between (and including) a start node and an end
    1306             node) with a new element whose name is specified as the first
    1307             argument. Nodes within each span must have the same parent
    1308             node. The spans to be wrapped are defined by a pair of
    1309             node-lists in the second and third argument. The first
    1310             node-list specifies the start node of one or more spans, while
    1311             the second node-list should contain the corresponding end
    1312             nodes. The two node-lists must evaluate to the exactly same
    1313             number of nodes, otherwise a runtime error is reported. The
    1314             N'th span is then defined as a span starting on the N'th node
    1315             in the start node-list and ending at the N'th node in the end
    1316             node-list.
    1317              
    1318             All nodes within the spans are removed from the document and
    1319             placed into the newly generated elements. The wrapping
    1320             elements are put back into the document tree at the positions
    1321             previously occupied by the node-spans.
    1322              
    1323             The command returns a node-list containing the newly created
    1324             wrapping elements.
    1325              
    1326             Example:
    1327             xsh $scratch/> $foo := create { "\n\n\n\n" };
    1328             xsh $foo/> wrap-span 'span' //a //b;
    1329             xsh $foo/> ls /;
    1330            
    1331            
    1332            
    1333            
    1334            
    1335            
    1336              
    1337             see also: xinsert insert move xmove
    1338              
    1339             END
    1340              
    1341             $HELP{'wrap_span'}=$HELP{'wrap-span'};
    1342              
    1343             $HELP{'xinsert'}=[<<'END'];
    1344             usage: xinsert [--namespace [expression]] [node-type] [expression] [location] [xpath]
    1345            
    1346             aliases: xadd
    1347              
    1348             description:
    1349             Create new nodes of the [node-type] given in the 1st argument
    1350             of name specified in the 2nd argument and insert them to
    1351             [location]s relative to nodes in the node-list specified in
    1352             the 4th argument.
    1353              
    1354             For element nodes, the the 2nd argument [expression] should
    1355             evaluate to something like "
    1356             ...>". The '<' and '>' characters are optional. If no
    1357             attributes are used, the expression may simply consist the
    1358             element name. Note, that in the first case, the quotes are
    1359             required since the expression contains spaces.
    1360              
    1361             Attribute nodes use the following syntax: "att-name='attvalue'
    1362             [...]".
    1363              
    1364             For the other types of nodes (text, cdata, comments) the
    1365             expression should contain the node's literal content. Again,
    1366             it is necessary to quote all whitespace and special characters
    1367             as in any expression argument.
    1368              
    1369             The [location] argument should be one of: 'after', 'before',
    1370             'into', 'replace', 'append' or 'prepend'. See documentation of
    1371             the [location] argument type for more detail.
    1372              
    1373             Optionally, for element and attribute nodes, a namespace may
    1374             be specified with '--namespace' or ':n'. If used, the
    1375             expression should evaluate to the desired namespace URI and
    1376             the name of the element or attribute being inserted must have
    1377             a prefix.
    1378              
    1379             The command returns a node-list consisting of nodes it
    1380             created.
    1381              
    1382             Note, that instead of 'xinsert', you can alternatively use one
    1383             of [xsh:new-attribute], [xsh:new-cdata], [xsh:new-chunk],
    1384             [xsh:new-comment], [xsh:new-element], [xsh:new-element-ns],
    1385             [xsh:new-pi], and [xsh:new-text] together with the command
    1386             [xcopy].
    1387              
    1388             Example: Give each chapter a provisional title element.
    1389              
    1390             xsh> my $new_titles := xinsert element "" \ </td> </tr> <tr> <td class="h" > <a name="1391">1391</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> into /book/chapter </td> </tr> <tr> <td class="h" > <a name="1392">1392</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> xinsert text "Change me!" into $new_titles; </td> </tr> <tr> <td class="h" > <a name="1393">1393</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1394">1394</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Same as above, using xcopy and xsh:new-... instead of xinsert </td> </tr> <tr> <td class="h" > <a name="1395">1395</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1396">1396</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> my $new_titles := xcopy xsh:new-element("title","font-size","large","underline","yes") \ </td> </tr> <tr> <td class="h" > <a name="1397">1397</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> into /book/chapter </td> </tr> <tr> <td class="h" > <a name="1398">1398</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> xcopy xsh:new-text("Change me!") into $new_titles; </td> </tr> <tr> <td class="h" > <a name="1399">1399</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1400">1400</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: insert move xmove </td> </tr> <tr> <td class="h" > <a name="1401">1401</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1402">1402</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1403">1403</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1404">1404</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'xadd'}=$HELP{'xinsert'}; </td> </tr> <tr> <td class="h" > <a name="1405">1405</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1406">1406</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'node-type'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1407">1407</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Node-type argument type </td> </tr> <tr> <td class="h" > <a name="1408">1408</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1409">1409</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1410">1410</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> One of: element, attribute, text, cdata, comment, chunk and </td> </tr> <tr> <td class="h" > <a name="1411">1411</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (EXPERIMENTALLY!) entity_reference. A chunk is a character </td> </tr> <tr> <td class="h" > <a name="1412">1412</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> string which forms a well-balanced piece of XML. </td> </tr> <tr> <td class="h" > <a name="1413">1413</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1414">1414</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="1415">1415</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> add element hobbit into //middle-earth/creatures; </td> </tr> <tr> <td class="h" > <a name="1416">1416</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> add attribute 'name="Bilbo"' into //middle-earth/creatures/hobbit[last()]; </td> </tr> <tr> <td class="h" > <a name="1417">1417</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> add chunk '<hobbit name="Frodo">A small guy from <place>Shire</place>.</hobbit>' </td> </tr> <tr> <td class="h" > <a name="1418">1418</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> into //middle-earth/creatures; </td> </tr> <tr> <td class="h" > <a name="1419">1419</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1420">1420</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1421">1421</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1422">1422</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1423">1423</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'location'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1424">1424</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Location argument type </td> </tr> <tr> <td class="h" > <a name="1425">1425</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1426">1426</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1427">1427</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> One of: 'after', 'before', 'into', 'append', 'prepend', </td> </tr> <tr> <td class="h" > <a name="1428">1428</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'replace'. </td> </tr> <tr> <td class="h" > <a name="1429">1429</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1430">1430</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This argument is required by all commands that insert nodes to </td> </tr> <tr> <td class="h" > <a name="1431">1431</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a document in some way to a destination described by an XPath </td> </tr> <tr> <td class="h" > <a name="1432">1432</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expression. The meaning of the values listed above is supposed </td> </tr> <tr> <td class="h" > <a name="1433">1433</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> be obvious in most cases, however the exact semantics for </td> </tr> <tr> <td class="h" > <a name="1434">1434</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> location argument values depends on types of both the source </td> </tr> <tr> <td class="h" > <a name="1435">1435</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node and the target node. </td> </tr> <tr> <td class="h" > <a name="1436">1436</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1437">1437</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'after/before' place the node right after/before the </td> </tr> <tr> <td class="h" > <a name="1438">1438</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> destination node, except for when the destination node is a </td> </tr> <tr> <td class="h" > <a name="1439">1439</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document node or one of the source nodes is an attribute: If </td> </tr> <tr> <td class="h" > <a name="1440">1440</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the destination node is a document node, the source node is </td> </tr> <tr> <td class="h" > <a name="1441">1441</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> attached to the end/beginning of the document (remember: there </td> </tr> <tr> <td class="h" > <a name="1442">1442</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> is no "after/before a document"). If both the source and </td> </tr> <tr> <td class="h" > <a name="1443">1443</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> destination nodes are attributes, then the source node is </td> </tr> <tr> <td class="h" > <a name="1444">1444</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> simply attached to the element containing the destination node </td> </tr> <tr> <td class="h" > <a name="1445">1445</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (remember: there is no order on attribute nodes). If the </td> </tr> <tr> <td class="h" > <a name="1446">1446</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> destination node is an attribute but the source node is of a </td> </tr> <tr> <td class="h" > <a name="1447">1447</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> different type, then the textual content of the source node is </td> </tr> <tr> <td class="h" > <a name="1448">1448</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> appended to the value of the destination attribute (i.e. in </td> </tr> <tr> <td class="h" > <a name="1449">1449</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> this case after/before act just as append/prepend). </td> </tr> <tr> <td class="h" > <a name="1450">1450</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1451">1451</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'append/prepend' appends/prepends the source node to the </td> </tr> <tr> <td class="h" > <a name="1452">1452</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> destination node. If the destination node can contain other </td> </tr> <tr> <td class="h" > <a name="1453">1453</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodes (i.e. it is an element or a document node) then the </td> </tr> <tr> <td class="h" > <a name="1454">1454</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> entire source node is attached to it. In case of other </td> </tr> <tr> <td class="h" > <a name="1455">1455</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> destination node types, the textual content of the source node </td> </tr> <tr> <td class="h" > <a name="1456">1456</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> is appended/prepended to the content of the destination node. </td> </tr> <tr> <td class="h" > <a name="1457">1457</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1458">1458</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'into' can also be used to place the source node to the end of </td> </tr> <tr> <td class="h" > <a name="1459">1459</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> an element (in the same way as 'append'), to attach an </td> </tr> <tr> <td class="h" > <a name="1460">1460</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> attribute to an element, or, if the destination node is a text </td> </tr> <tr> <td class="h" > <a name="1461">1461</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node, cdata section, processing-instruction, attribute or </td> </tr> <tr> <td class="h" > <a name="1462">1462</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> comment, to replace its textual content with the textual </td> </tr> <tr> <td class="h" > <a name="1463">1463</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> content of the source node. </td> </tr> <tr> <td class="h" > <a name="1464">1464</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1465">1465</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'replace' replaces the entire destination node with the source </td> </tr> <tr> <td class="h" > <a name="1466">1466</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node except for the case when the destination node is an </td> </tr> <tr> <td class="h" > <a name="1467">1467</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> attribute and the source node is not. In such a case only the </td> </tr> <tr> <td class="h" > <a name="1468">1468</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> value of the destination attribute is replaced with the </td> </tr> <tr> <td class="h" > <a name="1469">1469</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> textual content of the source node. Note also that document </td> </tr> <tr> <td class="h" > <a name="1470">1470</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node can never be replaced. </td> </tr> <tr> <td class="h" > <a name="1471">1471</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1472">1472</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1473">1473</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1474">1474</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1475">1475</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'move'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1476">1476</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: move [xpath] [location] [xpath] </td> </tr> <tr> <td class="h" > <a name="1477">1477</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1478">1478</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: mv </td> </tr> <tr> <td class="h" > <a name="1479">1479</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1480">1480</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1481">1481</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'move' command acts exactly like [copy], except that it </td> </tr> <tr> <td class="h" > <a name="1482">1482</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> removes the source nodes after a successful copy. Remember </td> </tr> <tr> <td class="h" > <a name="1483">1483</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> that the moved nodes are actually different nodes from the </td> </tr> <tr> <td class="h" > <a name="1484">1484</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> original ones (which may not be obvious when moving nodes </td> </tr> <tr> <td class="h" > <a name="1485">1485</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> within a single document into locations that do not require </td> </tr> <tr> <td class="h" > <a name="1486">1486</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> type conversion). So, after the move, the original nodes don't </td> </tr> <tr> <td class="h" > <a name="1487">1487</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> belong to any document and are automatically destroyed unless </td> </tr> <tr> <td class="h" > <a name="1488">1488</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> some variable still contains to them. </td> </tr> <tr> <td class="h" > <a name="1489">1489</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1490">1490</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command returns a node-list consisting of nodes it </td> </tr> <tr> <td class="h" > <a name="1491">1491</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> created on the target locations. </td> </tr> <tr> <td class="h" > <a name="1492">1492</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1493">1493</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> See [copy] for more details on how the copies of the moved </td> </tr> <tr> <td class="h" > <a name="1494">1494</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodes are created. </td> </tr> <tr> <td class="h" > <a name="1495">1495</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1496">1496</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: xmove copy xcopy insert xinsert </td> </tr> <tr> <td class="h" > <a name="1497">1497</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1498">1498</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1499">1499</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1500">1500</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'mv'}=$HELP{'move'}; </td> </tr> <tr> <td class="h" > <a name="1501">1501</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1502">1502</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'xmove'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1503">1503</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: xmove [--respective|:r] [--preserve-order|:p] [xpath] [location] [xpath] </td> </tr> <tr> <td class="h" > <a name="1504">1504</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1505">1505</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: xmv </td> </tr> <tr> <td class="h" > <a name="1506">1506</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1507">1507</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1508">1508</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Like [xcopy], except that 'xmove' removes the source nodes </td> </tr> <tr> <td class="h" > <a name="1509">1509</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> after a successful copy. Remember that the moved nodes are </td> </tr> <tr> <td class="h" > <a name="1510">1510</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> actually different nodes from the original ones (which may not </td> </tr> <tr> <td class="h" > <a name="1511">1511</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> be obvious when moving nodes within a single document into </td> </tr> <tr> <td class="h" > <a name="1512">1512</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> locations that do not require type conversion). So, after the </td> </tr> <tr> <td class="h" > <a name="1513">1513</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> move, the original nodes don't belong to any document and are </td> </tr> <tr> <td class="h" > <a name="1514">1514</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> automatically destroyed unless still contained in some </td> </tr> <tr> <td class="h" > <a name="1515">1515</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="1516">1516</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1517">1517</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command returns a node-list consisting of all nodes it </td> </tr> <tr> <td class="h" > <a name="1518">1518</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> created on the target locations. </td> </tr> <tr> <td class="h" > <a name="1519">1519</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1520">1520</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If '--respective|:r' option is used, then the target node-list </td> </tr> <tr> <td class="h" > <a name="1521">1521</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] is evaluated in the context of the source node </td> </tr> <tr> <td class="h" > <a name="1522">1522</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> being copied. </td> </tr> <tr> <td class="h" > <a name="1523">1523</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1524">1524</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The '--preserve-order|:p' option can be used to ensure that </td> </tr> <tr> <td class="h" > <a name="1525">1525</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the copied nodes are in the same relative order as the </td> </tr> <tr> <td class="h" > <a name="1526">1526</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> corresponding source nodes. Otherwise, if [location] is </td> </tr> <tr> <td class="h" > <a name="1527">1527</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'after' or 'prepend', the relative order of the copied nodes </td> </tr> <tr> <td class="h" > <a name="1528">1528</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> will be reversed, because source nodes are placed to the </td> </tr> <tr> <td class="h" > <a name="1529">1529</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> target location one by one. </td> </tr> <tr> <td class="h" > <a name="1530">1530</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1531">1531</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> See [xcopy] for more details on how the copies of the moved </td> </tr> <tr> <td class="h" > <a name="1532">1532</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodes are created. </td> </tr> <tr> <td class="h" > <a name="1533">1533</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1534">1534</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The following example demonstrates how 'xmove' can be used to </td> </tr> <tr> <td class="h" > <a name="1535">1535</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> get rid of HTML '<font>' elements while preserving their </td> </tr> <tr> <td class="h" > <a name="1536">1536</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> content. As an exercise, try to figure out why simple 'foreach </td> </tr> <tr> <td class="h" > <a name="1537">1537</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> //font { xmove node() replace . }' would not work here. </td> </tr> <tr> <td class="h" > <a name="1538">1538</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1539">1539</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Get rid of all <font> tags </td> </tr> <tr> <td class="h" > <a name="1540">1540</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1541">1541</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> while //font { </td> </tr> <tr> <td class="h" > <a name="1542">1542</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> foreach //font { </td> </tr> <tr> <td class="h" > <a name="1543">1543</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xmove node() replace .; </td> </tr> <tr> <td class="h" > <a name="1544">1544</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1545">1545</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="1546">1546</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1547">1547</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: move copy xcopy insert xinsert </td> </tr> <tr> <td class="h" > <a name="1548">1548</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1549">1549</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1550">1550</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1551">1551</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'xmv'}=$HELP{'xmove'}; </td> </tr> <tr> <td class="h" > <a name="1552">1552</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1553">1553</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'clone'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1554">1554</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: $doc := clone [document] </td> </tr> <tr> <td class="h" > <a name="1555">1555</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1556">1556</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: dup </td> </tr> <tr> <td class="h" > <a name="1557">1557</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1558">1558</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1559">1559</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Create and return a copy of a given [document]. Unless </td> </tr> <tr> <td class="h" > <a name="1560">1560</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [switch-to-new-documents] configuration flag is turned off, </td> </tr> <tr> <td class="h" > <a name="1561">1561</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the root node of the new document becomes the current node. </td> </tr> <tr> <td class="h" > <a name="1562">1562</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1563">1563</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Calling this command only makes sense if either </td> </tr> <tr> <td class="h" > <a name="1564">1564</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [switch-to-new-documents] is set, or if the result is assigned </td> </tr> <tr> <td class="h" > <a name="1565">1565</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to a variable or passed to another XSH2 command using the </td> </tr> <tr> <td class="h" > <a name="1566">1566</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '&{...}' syntax, since otherwise the newly created copy of the </td> </tr> <tr> <td class="h" > <a name="1567">1567</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document is automatically garbage-collected and destroyed. </td> </tr> <tr> <td class="h" > <a name="1568">1568</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1569">1569</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: open close enc documents </td> </tr> <tr> <td class="h" > <a name="1570">1570</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1571">1571</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1572">1572</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1573">1573</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'dup'}=$HELP{'clone'}; </td> </tr> <tr> <td class="h" > <a name="1574">1574</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1575">1575</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'normalize'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1576">1576</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: normalize [expression] </td> </tr> <tr> <td class="h" > <a name="1577">1577</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1578">1578</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1579">1579</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'normalize' evaluates given [expression] to a node-list and </td> </tr> <tr> <td class="h" > <a name="1580">1580</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> puts all text nodes in the full depth of the sub-tree </td> </tr> <tr> <td class="h" > <a name="1581">1581</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> underneath each node in the node-list into a "normal" form </td> </tr> <tr> <td class="h" > <a name="1582">1582</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> where only structure (e.g., elements, comments, processing </td> </tr> <tr> <td class="h" > <a name="1583">1583</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> instructions, CDATA sections, and entity references) separates </td> </tr> <tr> <td class="h" > <a name="1584">1584</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> text nodes, i.e., there are neither adjacent text nodes nor </td> </tr> <tr> <td class="h" > <a name="1585">1585</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> empty text nodes. </td> </tr> <tr> <td class="h" > <a name="1586">1586</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1587">1587</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note, that most XSH2 commands automatically join adjacent text </td> </tr> <tr> <td class="h" > <a name="1588">1588</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodes. </td> </tr> <tr> <td class="h" > <a name="1589">1589</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1590">1590</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1591">1591</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1592">1592</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1593">1593</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'strip-whitespace'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1594">1594</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: strip-whitespace [expression] </td> </tr> <tr> <td class="h" > <a name="1595">1595</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1596">1596</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: strip_whitespace </td> </tr> <tr> <td class="h" > <a name="1597">1597</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1598">1598</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1599">1599</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'strip-whitespace' removes all leading and trailing whitespace </td> </tr> <tr> <td class="h" > <a name="1600">1600</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> from given nodes. If applied to an element node, it removes </td> </tr> <tr> <td class="h" > <a name="1601">1601</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> all leading and trailing child whitespace-only text nodes and </td> </tr> <tr> <td class="h" > <a name="1602">1602</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> CDATA sections. </td> </tr> <tr> <td class="h" > <a name="1603">1603</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1604">1604</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1605">1605</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1606">1606</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'strip_whitespace'}=$HELP{'strip-whitespace'}; </td> </tr> <tr> <td class="h" > <a name="1607">1607</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1608">1608</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'ls'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1609">1609</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: ls [--fold|:f] [--fold-attrs|:A] [--indent|:i | --no-indent|:I] </td> </tr> <tr> <td class="h" > <a name="1610">1610</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--depth|:d [expression]] [[expression]] </td> </tr> <tr> <td class="h" > <a name="1611">1611</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1612">1612</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: list </td> </tr> <tr> <td class="h" > <a name="1613">1613</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1614">1614</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1615">1615</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Print XML representation of a given [expression], in </td> </tr> <tr> <td class="h" > <a name="1616">1616</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> particular, if used with an [xpath], list parts of the </td> </tr> <tr> <td class="h" > <a name="1617">1617</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document matching given expression. </td> </tr> <tr> <td class="h" > <a name="1618">1618</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1619">1619</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If used without an argument, current node is listed to the </td> </tr> <tr> <td class="h" > <a name="1620">1620</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> depth 1 (see below). </td> </tr> <tr> <td class="h" > <a name="1621">1621</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1622">1622</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--depth' or ':d' argument may be used to specify depth of the </td> </tr> <tr> <td class="h" > <a name="1623">1623</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XML listing. If negative, the listing depth is unlimited. All </td> </tr> <tr> <td class="h" > <a name="1624">1624</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> content below the specified depth is replaced with an ellipsis </td> </tr> <tr> <td class="h" > <a name="1625">1625</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ('...'). </td> </tr> <tr> <td class="h" > <a name="1626">1626</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1627">1627</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--fold' or ':f' option makes the listing fold elements marked </td> </tr> <tr> <td class="h" > <a name="1628">1628</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> using the [fold] command are folded, i.e. listed only to the </td> </tr> <tr> <td class="h" > <a name="1629">1629</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> depth specified in the folding mark. </td> </tr> <tr> <td class="h" > <a name="1630">1630</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1631">1631</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--fold-attrs' or ':A' option avoids listing of attributes of </td> </tr> <tr> <td class="h" > <a name="1632">1632</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the folded elements (i.e. elements on the lowest level of </td> </tr> <tr> <td class="h" > <a name="1633">1633</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> listing). Folded attributes are replaced with ellipsis </td> </tr> <tr> <td class="h" > <a name="1634">1634</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ('...'). </td> </tr> <tr> <td class="h" > <a name="1635">1635</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1636">1636</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--indent' (':i') and '--no-indent' (':I') may be used to </td> </tr> <tr> <td class="h" > <a name="1637">1637</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> enforce/suppress indentation, overriding current setting (see </td> </tr> <tr> <td class="h" > <a name="1638">1638</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command [indent]). </td> </tr> <tr> <td class="h" > <a name="1639">1639</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1640">1640</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Unless in [quiet] mode, this command also prints the number of </td> </tr> <tr> <td class="h" > <a name="1641">1641</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (top-level) nodes listed. </td> </tr> <tr> <td class="h" > <a name="1642">1642</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1643">1643</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: count fold unfold </td> </tr> <tr> <td class="h" > <a name="1644">1644</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1645">1645</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1646">1646</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1647">1647</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'list'}=$HELP{'ls'}; </td> </tr> <tr> <td class="h" > <a name="1648">1648</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1649">1649</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'canonical'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1650">1650</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: canonical [--comments|:c] [--filter|:f [xpath]] [[expression]] </td> </tr> <tr> <td class="h" > <a name="1651">1651</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1652">1652</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1653">1653</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This commands prints a canonical XML representing nodes </td> </tr> <tr> <td class="h" > <a name="1654">1654</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> specified by its argument (or current node, if no argument is </td> </tr> <tr> <td class="h" > <a name="1655">1655</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> given). </td> </tr> <tr> <td class="h" > <a name="1656">1656</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1657">1657</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--comments' or ':c' removes comments from the resulting XML. </td> </tr> <tr> <td class="h" > <a name="1658">1658</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1659">1659</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--filter' or ':f' can be used to filter the resulting XML so </td> </tr> <tr> <td class="h" > <a name="1660">1660</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> that it only contains nodes explicitly included in the given </td> </tr> <tr> <td class="h" > <a name="1661">1661</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node-set. </td> </tr> <tr> <td class="h" > <a name="1662">1662</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1663">1663</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> For details see "Canonical XML" or "Exclusive XML </td> </tr> <tr> <td class="h" > <a name="1664">1664</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Canonicalization" W3C recommendations. </td> </tr> <tr> <td class="h" > <a name="1665">1665</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1666">1666</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: ls </td> </tr> <tr> <td class="h" > <a name="1667">1667</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1668">1668</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1669">1669</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1670">1670</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1671">1671</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'count'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1672">1672</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: count [--quiet|:q] [xpath] </td> </tr> <tr> <td class="h" > <a name="1673">1673</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1674">1674</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1675">1675</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Calculates a given [expression] expression. If the result is a </td> </tr> <tr> <td class="h" > <a name="1676">1676</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node-list, print number of nodes in the node-list. If the </td> </tr> <tr> <td class="h" > <a name="1677">1677</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] results in a boolean, numeric or literal value, </td> </tr> <tr> <td class="h" > <a name="1678">1678</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> print the value. </td> </tr> <tr> <td class="h" > <a name="1679">1679</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1680">1680</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If '--quiet' or ':q' option is used, output is suppressed and </td> </tr> <tr> <td class="h" > <a name="1681">1681</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the value is returned. </td> </tr> <tr> <td class="h" > <a name="1682">1682</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1683">1683</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: get </td> </tr> <tr> <td class="h" > <a name="1684">1684</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1685">1685</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1686">1686</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1687">1687</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1688">1688</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'change-ns-uri'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1689">1689</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: change-ns-uri [expression] [[expression]] </td> </tr> <tr> <td class="h" > <a name="1690">1690</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1691">1691</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1692">1692</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command takes one or two arguments. The first argument is </td> </tr> <tr> <td class="h" > <a name="1693">1693</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a new namespace URI and the second, optional, argument is a </td> </tr> <tr> <td class="h" > <a name="1694">1694</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> namespace prefix. It changes the URI value of a namespace </td> </tr> <tr> <td class="h" > <a name="1695">1695</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declaration of the context node to the new value. If no prefix </td> </tr> <tr> <td class="h" > <a name="1696">1696</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> is given, the change applies to a declaration on the context </td> </tr> <tr> <td class="h" > <a name="1697">1697</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node whose prefix equals to the prefix of the context node, </td> </tr> <tr> <td class="h" > <a name="1698">1698</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> otherwise the change applies to a declaration with the given </td> </tr> <tr> <td class="h" > <a name="1699">1699</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> prefix. </td> </tr> <tr> <td class="h" > <a name="1700">1700</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1701">1701</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: change-ns-prefix set-ns declare-ns namespaces </td> </tr> <tr> <td class="h" > <a name="1702">1702</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1703">1703</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1704">1704</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1705">1705</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1706">1706</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'change-ns-prefix'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1707">1707</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: change-ns-prefix [expression] [[expression]] </td> </tr> <tr> <td class="h" > <a name="1708">1708</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1709">1709</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1710">1710</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command takes one or two arguments. The first argument is </td> </tr> <tr> <td class="h" > <a name="1711">1711</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a new prefix and the second, optional, argument is an old </td> </tr> <tr> <td class="h" > <a name="1712">1712</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> namespace prefix. It changes the prefix of a namespace </td> </tr> <tr> <td class="h" > <a name="1713">1713</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declaration of the context node to the new value. If no old </td> </tr> <tr> <td class="h" > <a name="1714">1714</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> prefix is given, the change applies to a declaration on the </td> </tr> <tr> <td class="h" > <a name="1715">1715</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> context node whose prefix equals to the prefix of the context </td> </tr> <tr> <td class="h" > <a name="1716">1716</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node, otherwise the command changes the declaration with the </td> </tr> <tr> <td class="h" > <a name="1717">1717</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> given old prefix. </td> </tr> <tr> <td class="h" > <a name="1718">1718</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1719">1719</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The command throws an exception if the new prefix is already </td> </tr> <tr> <td class="h" > <a name="1720">1720</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> taken by some other declaration in the scope. </td> </tr> <tr> <td class="h" > <a name="1721">1721</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1722">1722</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: change-ns-uri set-ns declare-ns namespaces </td> </tr> <tr> <td class="h" > <a name="1723">1723</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1724">1724</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1725">1725</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1726">1726</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1727">1727</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'set-ns'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1728">1728</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: set-ns [:p|--prefix [expression]] [expression] </td> </tr> <tr> <td class="h" > <a name="1729">1729</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1730">1730</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1731">1731</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command takes one argument, the namespace URI, possibly </td> </tr> <tr> <td class="h" > <a name="1732">1732</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> accompanied by a prefix provided in the option '--prefix' </td> </tr> <tr> <td class="h" > <a name="1733">1733</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ':p'; both these expressions are evaluated as names. The </td> </tr> <tr> <td class="h" > <a name="1734">1734</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command changes the namespace of the current element to a </td> </tr> <tr> <td class="h" > <a name="1735">1735</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> given namespace URI. The current node must be in the scope of </td> </tr> <tr> <td class="h" > <a name="1736">1736</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a namespace declaration associating the namespace URI with a </td> </tr> <tr> <td class="h" > <a name="1737">1737</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> prefix; if prefix option is given, then one of such </td> </tr> <tr> <td class="h" > <a name="1738">1738</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declarations must associate the particular given prefix with </td> </tr> <tr> <td class="h" > <a name="1739">1739</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the namespace URI. If this condition is not met or the current </td> </tr> <tr> <td class="h" > <a name="1740">1740</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node is neither element nor attribute, an error is issued. The </td> </tr> <tr> <td class="h" > <a name="1741">1741</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command also changes the prefix of the current element </td> </tr> <tr> <td class="h" > <a name="1742">1742</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> accordingly. </td> </tr> <tr> <td class="h" > <a name="1743">1743</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1744">1744</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: declare-ns change-ns-uri change-ns-prefix namespaces </td> </tr> <tr> <td class="h" > <a name="1745">1745</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1746">1746</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1747">1747</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1748">1748</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1749">1749</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'declare-ns'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1750">1750</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: declare-ns [expression] [expression] </td> </tr> <tr> <td class="h" > <a name="1751">1751</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1752">1752</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1753">1753</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command takes one or two arguments: prefix and URI, both </td> </tr> <tr> <td class="h" > <a name="1754">1754</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> evaluated as names. It creates a namespace declaration of the </td> </tr> <tr> <td class="h" > <a name="1755">1755</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> form 'xmlns:prefix="URI"' on the current node. The command </td> </tr> <tr> <td class="h" > <a name="1756">1756</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> produces an error if the prefix is already declared in the </td> </tr> <tr> <td class="h" > <a name="1757">1757</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> scope of the current node with a different namespace URI. </td> </tr> <tr> <td class="h" > <a name="1758">1758</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1759">1759</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: set-ns change-ns-uri change-ns-prefix namespaces </td> </tr> <tr> <td class="h" > <a name="1760">1760</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1761">1761</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1762">1762</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1763">1763</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1764">1764</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'set'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1765">1765</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: set [xpath] [[xpath]] </td> </tr> <tr> <td class="h" > <a name="1766">1766</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1767">1767</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1768">1768</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command provides very easy way to create or modify </td> </tr> <tr> <td class="h" > <a name="1769">1769</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> content of a document. It takes two XPath expressions. The </td> </tr> <tr> <td class="h" > <a name="1770">1770</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> first one should be a node location path which specifies the </td> </tr> <tr> <td class="h" > <a name="1771">1771</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> target node, the second is optional and provides new content </td> </tr> <tr> <td class="h" > <a name="1772">1772</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> for the target node. If a node matches the first XPath </td> </tr> <tr> <td class="h" > <a name="1773">1773</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expression, then its content is replaced with the given value. </td> </tr> <tr> <td class="h" > <a name="1774">1774</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If no node matches, then XSH2 tries to magically extend the </td> </tr> <tr> <td class="h" > <a name="1775">1775</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> current document by adding nodes in order to add missing steps </td> </tr> <tr> <td class="h" > <a name="1776">1776</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> of the location path so as to make the expression match a </td> </tr> <tr> <td class="h" > <a name="1777">1777</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node. This node is then populated with a copy of the content </td> </tr> <tr> <td class="h" > <a name="1778">1778</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> value (either text or, if the content [xpath] results in a </td> </tr> <tr> <td class="h" > <a name="1779">1779</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node-list and the target node is an element, nodes). </td> </tr> <tr> <td class="h" > <a name="1780">1780</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1781">1781</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Try the following on an empty scratch document </td> </tr> <tr> <td class="h" > <a name="1782">1782</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1783">1783</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $scratch/> ls / </td> </tr> <tr> <td class="h" > <a name="1784">1784</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <scratch/> </td> </tr> <tr> <td class="h" > <a name="1785">1785</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $scratch/> set scratch/@say "hallo world" </td> </tr> <tr> <td class="h" > <a name="1786">1786</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <scratch say="hello world"/> </td> </tr> <tr> <td class="h" > <a name="1787">1787</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1788">1788</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $scratch/> set scratch/foo[2]/../foo[1]/following-sibling::bar/baz[3] "HALLO" </td> </tr> <tr> <td class="h" > <a name="1789">1789</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $scratch/> ls / </td> </tr> <tr> <td class="h" > <a name="1790">1790</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="utf-8"?> </td> </tr> <tr> <td class="h" > <a name="1791">1791</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <scratch say="hello world"> </td> </tr> <tr> <td class="h" > <a name="1792">1792</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <foo/> </td> </tr> <tr> <td class="h" > <a name="1793">1793</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <bar> </td> </tr> <tr> <td class="h" > <a name="1794">1794</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <baz/> </td> </tr> <tr> <td class="h" > <a name="1795">1795</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <baz/> </td> </tr> <tr> <td class="h" > <a name="1796">1796</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <baz>HALLO</baz> </td> </tr> <tr> <td class="h" > <a name="1797">1797</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </bar> </td> </tr> <tr> <td class="h" > <a name="1798">1798</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <foo/> </td> </tr> <tr> <td class="h" > <a name="1799">1799</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <scratch/> </td> </tr> <tr> <td class="h" > <a name="1800">1800</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1801">1801</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Only a limited subset of XPath is currently supported by this </td> </tr> <tr> <td class="h" > <a name="1802">1802</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command. Namely, the XPath expression must be a location path </td> </tr> <tr> <td class="h" > <a name="1803">1803</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> consisting of a /-separated sequence of one or more location </td> </tr> <tr> <td class="h" > <a name="1804">1804</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> steps and new nodes can only be magically created along the </td> </tr> <tr> <td class="h" > <a name="1805">1805</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> child, sibling, or attribute axes. The node-test part of the </td> </tr> <tr> <td class="h" > <a name="1806">1806</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expression can neither be a wildcard ('*', '@*', 'prefix:*', </td> </tr> <tr> <td class="h" > <a name="1807">1807</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ...), nor the 'node()' function. If a namespace prefix is </td> </tr> <tr> <td class="h" > <a name="1808">1808</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> used, then either the namespace must already be declared in </td> </tr> <tr> <td class="h" > <a name="1809">1809</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the document or registered with XSH. </td> </tr> <tr> <td class="h" > <a name="1810">1810</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1811">1811</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Location steps may contain arbitrary predicates (filters), </td> </tr> <tr> <td class="h" > <a name="1812">1812</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> however, only a limited subset is supported for magically </td> </tr> <tr> <td class="h" > <a name="1813">1813</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> created nodes. In particular, if a filter predicate of a </td> </tr> <tr> <td class="h" > <a name="1814">1814</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> location step specifies a position of a node (e.g. with '[4]', </td> </tr> <tr> <td class="h" > <a name="1815">1815</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or '[position()>3]', etc), then the parser tries to </td> </tr> <tr> <td class="h" > <a name="1816">1816</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> automatically create empty siblings nodes until it finally </td> </tr> <tr> <td class="h" > <a name="1817">1817</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> creates one with for which the predicate is true. </td> </tr> <tr> <td class="h" > <a name="1818">1818</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1819">1819</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note, that this command only processes one location step at a </td> </tr> <tr> <td class="h" > <a name="1820">1820</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> time and always picks the first matching node. So, expressions </td> </tr> <tr> <td class="h" > <a name="1821">1821</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> like '/root/a/b' are treated as '/root/a[1]/b[1]'. This means </td> </tr> <tr> <td class="h" > <a name="1822">1822</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> that an expression '/root/a/b' will magically create element </td> </tr> <tr> <td class="h" > <a name="1823">1823</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '<b>' in a first matching '<a>' even if some following '<a>' </td> </tr> <tr> <td class="h" > <a name="1824">1824</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> already contains a '<b>'. </td> </tr> <tr> <td class="h" > <a name="1825">1825</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1826">1826</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> To prevent this, either explicitly state that 'b' must exist </td> </tr> <tr> <td class="h" > <a name="1827">1827</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> with e.g. '/root/a[b]/b' or make the corresponding element </td> </tr> <tr> <td class="h" > <a name="1828">1828</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '<a>' the context node and use a relative location path: </td> </tr> <tr> <td class="h" > <a name="1829">1829</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1830">1830</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="1831">1831</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> for /root/a/b set b 'foo' </td> </tr> <tr> <td class="h" > <a name="1832">1832</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1833">1833</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1834">1834</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1835">1835</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1836">1836</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'get'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1837">1837</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: get [expression] </td> </tr> <tr> <td class="h" > <a name="1838">1838</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1839">1839</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: exp expr </td> </tr> <tr> <td class="h" > <a name="1840">1840</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1841">1841</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1842">1842</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Calculate a given [expression] and return the value. </td> </tr> <tr> <td class="h" > <a name="1843">1843</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1844">1844</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: count </td> </tr> <tr> <td class="h" > <a name="1845">1845</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1846">1846</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1847">1847</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1848">1848</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'exp'}=$HELP{'get'}; </td> </tr> <tr> <td class="h" > <a name="1849">1849</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'expr'}=$HELP{'get'}; </td> </tr> <tr> <td class="h" > <a name="1850">1850</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1851">1851</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'perl-code'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1852">1852</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Perl-code argument type </td> </tr> <tr> <td class="h" > <a name="1853">1853</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1854">1854</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1855">1855</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> A block of Perl code enclosed in braces. All XSH2 variables </td> </tr> <tr> <td class="h" > <a name="1856">1856</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> are transparently accessible from the Perl code as well. </td> </tr> <tr> <td class="h" > <a name="1857">1857</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1858">1858</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> For more information about embedded Perl code in XSH2, </td> </tr> <tr> <td class="h" > <a name="1859">1859</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> predefined functions etc., see [Perl_shell]. </td> </tr> <tr> <td class="h" > <a name="1860">1860</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1861">1861</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="1862">1862</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> $i={ "foo" }; </td> </tr> <tr> <td class="h" > <a name="1863">1863</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> perl { echo "$i-bar\n"; } # prints foo-bar </td> </tr> <tr> <td class="h" > <a name="1864">1864</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> echo { "$i-bar" } # very much the same as above </td> </tr> <tr> <td class="h" > <a name="1865">1865</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1866">1866</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1867">1867</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1868">1868</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1869">1869</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'perl'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1870">1870</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: perl [perl-code] </td> </tr> <tr> <td class="h" > <a name="1871">1871</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1872">1872</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1873">1873</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Evaluate a given perl expression and return the result. </td> </tr> <tr> <td class="h" > <a name="1874">1874</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1875">1875</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: count </td> </tr> <tr> <td class="h" > <a name="1876">1876</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1877">1877</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1878">1878</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1879">1879</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1880">1880</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'remove'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1881">1881</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: remove [expression] </td> </tr> <tr> <td class="h" > <a name="1882">1882</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1883">1883</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: rm prune delete del </td> </tr> <tr> <td class="h" > <a name="1884">1884</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1885">1885</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1886">1886</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Unlink all nodes in a given node-list from their respective </td> </tr> <tr> <td class="h" > <a name="1887">1887</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> documents. Nodes, which are neither attached to a document or </td> </tr> <tr> <td class="h" > <a name="1888">1888</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> stored in a variable are automatically garbage-collected. </td> </tr> <tr> <td class="h" > <a name="1889">1889</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1890">1890</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns a number of nodes removed. </td> </tr> <tr> <td class="h" > <a name="1891">1891</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1892">1892</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Get rid of all evil creatures. </td> </tr> <tr> <td class="h" > <a name="1893">1893</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1894">1894</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> del //creature[@manner='evil'] </td> </tr> <tr> <td class="h" > <a name="1895">1895</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1896">1896</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1897">1897</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1898">1898</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'rm'}=$HELP{'remove'}; </td> </tr> <tr> <td class="h" > <a name="1899">1899</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'prune'}=$HELP{'remove'}; </td> </tr> <tr> <td class="h" > <a name="1900">1900</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'delete'}=$HELP{'remove'}; </td> </tr> <tr> <td class="h" > <a name="1901">1901</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'del'}=$HELP{'remove'}; </td> </tr> <tr> <td class="h" > <a name="1902">1902</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1903">1903</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'print'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1904">1904</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: print [--nonl|:n] [--nospace|:s] [--stderr|:e] [expression] [[expression] ...] </td> </tr> <tr> <td class="h" > <a name="1905">1905</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1906">1906</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: echo </td> </tr> <tr> <td class="h" > <a name="1907">1907</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1908">1908</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1909">1909</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Evaluate given expression(s) and print the results (separated </td> </tr> <tr> <td class="h" > <a name="1910">1910</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> by a single space character). Expressions not containing any </td> </tr> <tr> <td class="h" > <a name="1911">1911</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> special characters, such as brackets, quotes, $, or @ are </td> </tr> <tr> <td class="h" > <a name="1912">1912</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> considered as bare words and evaluate to themselves. </td> </tr> <tr> <td class="h" > <a name="1913">1913</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1914">1914</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--nonl' or ':n' can be used to avoid printing a trailing </td> </tr> <tr> <td class="h" > <a name="1915">1915</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> new-line. </td> </tr> <tr> <td class="h" > <a name="1916">1916</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1917">1917</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--nospace' or ':s' suppresses printing additional spaces </td> </tr> <tr> <td class="h" > <a name="1918">1918</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> between individual arguments. </td> </tr> <tr> <td class="h" > <a name="1919">1919</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1920">1920</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--stderr' or ':e' causes the command to print on standard </td> </tr> <tr> <td class="h" > <a name="1921">1921</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> error output. </td> </tr> <tr> <td class="h" > <a name="1922">1922</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1923">1923</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="1924">1924</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> print foo bar; # prints "foo bar" </td> </tr> <tr> <td class="h" > <a name="1925">1925</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> print "foo bar"; # prints "foo bar" </td> </tr> <tr> <td class="h" > <a name="1926">1926</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1927">1927</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1928">1928</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1929">1929</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'echo'}=$HELP{'print'}; </td> </tr> <tr> <td class="h" > <a name="1930">1930</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1931">1931</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'sort'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1932">1932</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: $result := sort [ --key|:k [expression] ] </td> </tr> <tr> <td class="h" > <a name="1933">1933</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> --compare|:c [perl-code] [expression] </td> </tr> <tr> <td class="h" > <a name="1934">1934</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $result := sort [ --key|:k [expression] ] </td> </tr> <tr> <td class="h" > <a name="1935">1935</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [ --numeric|:n ] [ --descending|:d ] [ --locale|:l] [expression] </td> </tr> <tr> <td class="h" > <a name="1936">1936</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1937">1937</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1938">1938</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command sorts a given node-list, returning a node-list </td> </tr> <tr> <td class="h" > <a name="1939">1939</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ordered according to a given key and ordering function. </td> </tr> <tr> <td class="h" > <a name="1940">1940</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1941">1941</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--key|:k' followed by an expression specifies the key to be </td> </tr> <tr> <td class="h" > <a name="1942">1942</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> computed for each member of the node-list and the result used </td> </tr> <tr> <td class="h" > <a name="1943">1943</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> as the sorting key. If omitted, keys are created by converting </td> </tr> <tr> <td class="h" > <a name="1944">1944</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the nodes to string as if XPath expression 'string(.)' was </td> </tr> <tr> <td class="h" > <a name="1945">1945</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> used. </td> </tr> <tr> <td class="h" > <a name="1946">1946</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1947">1947</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--numeric|:n' specifies, that keys should be compared by </td> </tr> <tr> <td class="h" > <a name="1948">1948</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> their numerical values (the default is string comparison). </td> </tr> <tr> <td class="h" > <a name="1949">1949</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1950">1950</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--descending|:d' specifies, that the result should be ordered </td> </tr> <tr> <td class="h" > <a name="1951">1951</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> in descending order (default is ascending). </td> </tr> <tr> <td class="h" > <a name="1952">1952</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1953">1953</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--locale|:l' forces using current locale settings for string </td> </tr> <tr> <td class="h" > <a name="1954">1954</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> comparison (default is no locale). </td> </tr> <tr> <td class="h" > <a name="1955">1955</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1956">1956</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--compare' argument followed by a [perl-code] allows to </td> </tr> <tr> <td class="h" > <a name="1957">1957</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> define a custom comparison method in a similar way to Perl </td> </tr> <tr> <td class="h" > <a name="1958">1958</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'sort' command. The keys to be compared are passed to the code </td> </tr> <tr> <td class="h" > <a name="1959">1959</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> in variables '$a' and '$b'. The code is supposed to return 1 </td> </tr> <tr> <td class="h" > <a name="1960">1960</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if the key in '$a' is greater than '$b', 0 if the keys are </td> </tr> <tr> <td class="h" > <a name="1961">1961</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> equal and '-1' if '$a' is less than '$b', depending on how the </td> </tr> <tr> <td class="h" > <a name="1962">1962</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> corresponding elements are to be ordered. It is a run-time </td> </tr> <tr> <td class="h" > <a name="1963">1963</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> error to use '--compare' together with either '--numeric' or </td> </tr> <tr> <td class="h" > <a name="1964">1964</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--descending'. </td> </tr> <tr> <td class="h" > <a name="1965">1965</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1966">1966</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Case-insensitive sort of a given node-list </td> </tr> <tr> <td class="h" > <a name="1967">1967</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1968">1968</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $ordered := sort --key xsh:lc(.) $unordered; </td> </tr> <tr> <td class="h" > <a name="1969">1969</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1970">1970</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Reorder creature elements by name attribute in ascending order </td> </tr> <tr> <td class="h" > <a name="1971">1971</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> using Czech locale settings </td> </tr> <tr> <td class="h" > <a name="1972">1972</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1973">1973</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> perl { </td> </tr> <tr> <td class="h" > <a name="1974">1974</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # setup locale collating function </td> </tr> <tr> <td class="h" > <a name="1975">1975</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # Note, that the collating function must be UTF8 aware. </td> </tr> <tr> <td class="h" > <a name="1976">1976</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> use POSIX qw(locale_h); </td> </tr> <tr> <td class="h" > <a name="1977">1977</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> setlocale(LC_COLLATE,'cs_CZ.UTF-8'); </td> </tr> <tr> <td class="h" > <a name="1978">1978</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> }; </td> </tr> <tr> <td class="h" > <a name="1979">1979</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1980">1980</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xmove &{ sort :k@name :l * } into /middle-earth[1]/creatures; </td> </tr> <tr> <td class="h" > <a name="1981">1981</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1982">1982</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Sort a node-list by a pre-computed score (Perl-based sort) </td> </tr> <tr> <td class="h" > <a name="1983">1983</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1984">1984</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $results := sort --numeric --descending --key { $scores{literal('@name')} } $players; </td> </tr> <tr> <td class="h" > <a name="1985">1985</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1986">1986</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="1987">1987</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1988">1988</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1989">1989</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'map'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="1990">1990</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: map [expression] [expression] </td> </tr> <tr> <td class="h" > <a name="1991">1991</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="1992">1992</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="1993">1993</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> NOTE: THE SEMANTICS OF COMMAND HAS CHANGED IN 2.1.0 </td> </tr> <tr> <td class="h" > <a name="1994">1994</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1995">1995</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command provides an easy way to transform node's data </td> </tr> <tr> <td class="h" > <a name="1996">1996</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (content) using arbitrary expression. It takes two arguments: </td> </tr> <tr> <td class="h" > <a name="1997">1997</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a mapping expression and a node-list. </td> </tr> <tr> <td class="h" > <a name="1998">1998</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="1999">1999</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> First the second argument is evaluated to a node-list. For </td> </tr> <tr> <td class="h" > <a name="2000">2000</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> each of the nodes, the mapping expression is evaluated and the </td> </tr> <tr> <td class="h" > <a name="2001">2001</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> result is used to replace the original content of the node. </td> </tr> <tr> <td class="h" > <a name="2002">2002</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The node is made the context node for the time of evaluation </td> </tr> <tr> <td class="h" > <a name="2003">2003</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> of the mapping expression. Moreover, if the expression is a </td> </tr> <tr> <td class="h" > <a name="2004">2004</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Perl code, it gets the original text content in the variable </td> </tr> <tr> <td class="h" > <a name="2005">2005</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '$_'. </td> </tr> <tr> <td class="h" > <a name="2006">2006</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2007">2007</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note that if the processed node is an element than the mapping </td> </tr> <tr> <td class="h" > <a name="2008">2008</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expression may even produce nodes which are then copied into </td> </tr> <tr> <td class="h" > <a name="2009">2009</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the element discarding any previous content of the element. </td> </tr> <tr> <td class="h" > <a name="2010">2010</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2011">2011</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the mapping expression returns an undefined value for a </td> </tr> <tr> <td class="h" > <a name="2012">2012</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node, then its content is kept untouched. </td> </tr> <tr> <td class="h" > <a name="2013">2013</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2014">2014</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--in-place' (':i') flag: if the expression is a Perl code, </td> </tr> <tr> <td class="h" > <a name="2015">2015</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> then it is sometimes convenient to change the value in place. </td> </tr> <tr> <td class="h" > <a name="2016">2016</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> In that case use this flag to indicate that the result should </td> </tr> <tr> <td class="h" > <a name="2017">2017</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to be taken from the '$_' variable rather than from the value </td> </tr> <tr> <td class="h" > <a name="2018">2018</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> of the expression itself. Without this flag, '$_' is </td> </tr> <tr> <td class="h" > <a name="2019">2019</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> read-only. </td> </tr> <tr> <td class="h" > <a name="2020">2020</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2021">2021</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--reverse' (':r') flag instruct the map to process the </td> </tr> <tr> <td class="h" > <a name="2022">2022</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodelist in reversed order. </td> </tr> <tr> <td class="h" > <a name="2023">2023</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2024">2024</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Capitalizes all hobbit names </td> </tr> <tr> <td class="h" > <a name="2025">2025</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2026">2026</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map { ucfirst($_) } //hobbit/@name; </td> </tr> <tr> <td class="h" > <a name="2027">2027</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2028">2028</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Changes Goblins to Orcs in all hobbit tales (\b matches word </td> </tr> <tr> <td class="h" > <a name="2029">2029</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> boundary). </td> </tr> <tr> <td class="h" > <a name="2030">2030</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2031">2031</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map :i { s/\bgoblin\b/orc/gi } //hobbit/tale/text(); </td> </tr> <tr> <td class="h" > <a name="2032">2032</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2033">2033</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Recompute column sums in the last row of row-oriented table </td> </tr> <tr> <td class="h" > <a name="2034">2034</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2035">2035</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map sum(/table/row[position()<last()]/ </td> </tr> <tr> <td class="h" > <a name="2036">2036</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> cell[count(xsh:current()/preceding-sibling::cell)+1]) </td> </tr> <tr> <td class="h" > <a name="2037">2037</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> /table/row[last()]/cell; </td> </tr> <tr> <td class="h" > <a name="2038">2038</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2039">2039</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: The following commands do all about the same: </td> </tr> <tr> <td class="h" > <a name="2040">2040</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2041">2041</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> wrap --inner Z //*; </td> </tr> <tr> <td class="h" > <a name="2042">2042</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map --reverse xsh:parse(concat("<Z>",xsh:serialize(node()),"</Z>")) //*; </td> </tr> <tr> <td class="h" > <a name="2043">2043</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> map xsh:parse(concat("<Z>",xsh:serialize(node()),"</Z>")) { reverse xpath('//*') }; </td> </tr> <tr> <td class="h" > <a name="2044">2044</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2045">2045</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note that in the last example we use ':r' (or Perl 'reverse' </td> </tr> <tr> <td class="h" > <a name="2046">2046</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> function) to reverse the node list order so that child nodes </td> </tr> <tr> <td class="h" > <a name="2047">2047</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> get processed before their parents. Otherwise, the child nodes </td> </tr> <tr> <td class="h" > <a name="2048">2048</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> would be replaced by parent's new content before the </td> </tr> <tr> <td class="h" > <a name="2049">2049</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> processing could reach them. </td> </tr> <tr> <td class="h" > <a name="2050">2050</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2051">2051</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: rename </td> </tr> <tr> <td class="h" > <a name="2052">2052</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2053">2053</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2054">2054</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2055">2055</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2056">2056</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'rename'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2057">2057</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: rename [nodename] [expression] </td> </tr> <tr> <td class="h" > <a name="2058">2058</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2059">2059</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2060">2060</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> NOTE: THE SEMANTICS OF COMMAND HAS CHANGED IN 2.1.0 </td> </tr> <tr> <td class="h" > <a name="2061">2061</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2062">2062</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is very similar to the [map] command, except that </td> </tr> <tr> <td class="h" > <a name="2063">2063</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> it operates on nodes' names rather than their content. It </td> </tr> <tr> <td class="h" > <a name="2064">2064</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> changes name of every element, attribute or </td> </tr> <tr> <td class="h" > <a name="2065">2065</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> processing-instruction contained in the node-list specified in </td> </tr> <tr> <td class="h" > <a name="2066">2066</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the second argument [expression], according to the value of </td> </tr> <tr> <td class="h" > <a name="2067">2067</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the [nodename] expression, which is evaluated in the context </td> </tr> <tr> <td class="h" > <a name="2068">2068</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> of each node in turn. </td> </tr> <tr> <td class="h" > <a name="2069">2069</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2070">2070</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the [nodename] is a Perl expression, then the name of the </td> </tr> <tr> <td class="h" > <a name="2071">2071</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> node is also stored into Perl's '$_' variable prior to </td> </tr> <tr> <td class="h" > <a name="2072">2072</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> evaluation. </td> </tr> <tr> <td class="h" > <a name="2073">2073</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2074">2074</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The flag '--in-place' (':i') can be used to indicate that the </td> </tr> <tr> <td class="h" > <a name="2075">2075</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> new name should be collected from the '$_' variable rather </td> </tr> <tr> <td class="h" > <a name="2076">2076</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> than from the result of the expression itself. </td> </tr> <tr> <td class="h" > <a name="2077">2077</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2078">2078</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The '--namespace' (':n') argument may be used to provide </td> </tr> <tr> <td class="h" > <a name="2079">2079</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> namespace for the renamed nodes. </td> </tr> <tr> <td class="h" > <a name="2080">2080</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2081">2081</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--reverse' (':r') flag instruct the map to process the </td> </tr> <tr> <td class="h" > <a name="2082">2082</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> nodelist in reversed order. </td> </tr> <tr> <td class="h" > <a name="2083">2083</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2084">2084</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note: if the expression [nodename] returns an undefined value </td> </tr> <tr> <td class="h" > <a name="2085">2085</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> for a particular node, the node's original name and namespace </td> </tr> <tr> <td class="h" > <a name="2086">2086</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> are preserved. </td> </tr> <tr> <td class="h" > <a name="2087">2087</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2088">2088</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Renames all Hobbits to Halflings </td> </tr> <tr> <td class="h" > <a name="2089">2089</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2090">2090</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> rename halfling //hobbit </td> </tr> <tr> <td class="h" > <a name="2091">2091</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2092">2092</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Make all elements and attributes uppercase (yack!) </td> </tr> <tr> <td class="h" > <a name="2093">2093</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2094">2094</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> rename { uc } (//*|//@*) </td> </tr> <tr> <td class="h" > <a name="2095">2095</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2096">2096</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Substitute dashes with underscores in all node names </td> </tr> <tr> <td class="h" > <a name="2097">2097</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2098">2098</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> rename :i { s/-/_/g } (//*|//@*) </td> </tr> <tr> <td class="h" > <a name="2099">2099</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2100">2100</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Make all elements start with the name of their parents </td> </tr> <tr> <td class="h" > <a name="2101">2101</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2102">2102</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> rename concat(local-name(parent::*),'.',local-name(.)) //*[parent::*] </td> </tr> <tr> <td class="h" > <a name="2103">2103</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2104">2104</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: map </td> </tr> <tr> <td class="h" > <a name="2105">2105</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2106">2106</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2107">2107</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2108">2108</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2109">2109</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'hash'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2110">2110</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: $hash := hash [expression] [expression] </td> </tr> <tr> <td class="h" > <a name="2111">2111</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2112">2112</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2113">2113</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command takes two arguments: an expression computing a </td> </tr> <tr> <td class="h" > <a name="2114">2114</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> key from a given node (1st argument) and a node-set (2nd </td> </tr> <tr> <td class="h" > <a name="2115">2115</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> argument). For each node in the node-set, the key value is </td> </tr> <tr> <td class="h" > <a name="2116">2116</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> computed and the node is stored under the given key in the </td> </tr> <tr> <td class="h" > <a name="2117">2117</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> resulting hash. For a given key, the value stored in the hash </td> </tr> <tr> <td class="h" > <a name="2118">2118</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> table is a node-list consisting of all nodes for which the 1st </td> </tr> <tr> <td class="h" > <a name="2119">2119</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expression evaluated to an object string-wise equal to the </td> </tr> <tr> <td class="h" > <a name="2120">2120</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> key. It is therefore possible to index more than one node </td> </tr> <tr> <td class="h" > <a name="2121">2121</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> under the same key. </td> </tr> <tr> <td class="h" > <a name="2122">2122</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2123">2123</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The XPath function 'xsh:lookup(varname,key)' can be used to </td> </tr> <tr> <td class="h" > <a name="2124">2124</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> retrieve values from hashes in XPath expressions. </td> </tr> <tr> <td class="h" > <a name="2125">2125</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2126">2126</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Index books by author </td> </tr> <tr> <td class="h" > <a name="2127">2127</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2128">2128</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> my $books_by_author := hash concat(author/firstname," ",author/surname) //book; </td> </tr> <tr> <td class="h" > <a name="2129">2129</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2130">2130</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Lookup books by Jack London. </td> </tr> <tr> <td class="h" > <a name="2131">2131</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2132">2132</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ls { $books_by_author->{'Jack London'} }; </td> </tr> <tr> <td class="h" > <a name="2133">2133</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ls xsh:lookup('books_by_author','Jack London'); </td> </tr> <tr> <td class="h" > <a name="2134">2134</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2135">2135</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: xsh:lookup </td> </tr> <tr> <td class="h" > <a name="2136">2136</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2137">2137</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2138">2138</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2139">2139</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2140">2140</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'close'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2141">2141</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: close [[document]] </td> </tr> <tr> <td class="h" > <a name="2142">2142</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2143">2143</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2144">2144</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Close a given [document] (or, if called with no argument, the </td> </tr> <tr> <td class="h" > <a name="2145">2145</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> current document) by trying to remove all references from XSH2 </td> </tr> <tr> <td class="h" > <a name="2146">2146</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variables to nodes belonging to the document. If no references </td> </tr> <tr> <td class="h" > <a name="2147">2147</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to the document are left, the garbage-collector destroys the </td> </tr> <tr> <td class="h" > <a name="2148">2148</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> DOM tree and frees the memory it occupied for later reuse </td> </tr> <tr> <td class="h" > <a name="2149">2149</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (depending on architecture, this may or may not give the </td> </tr> <tr> <td class="h" > <a name="2150">2150</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> allocated memory back to the system). </td> </tr> <tr> <td class="h" > <a name="2151">2151</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2152">2152</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2153">2153</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2154">2154</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2155">2155</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'index'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2156">2156</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: index [[document]] </td> </tr> <tr> <td class="h" > <a name="2157">2157</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2158">2158</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2159">2159</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command makes 'libxml2' library to remember </td> </tr> <tr> <td class="h" > <a name="2160">2160</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document-order position of every element node in the </td> </tr> <tr> <td class="h" > <a name="2161">2161</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [document]. Such indexation makes XPath queries considerably </td> </tr> <tr> <td class="h" > <a name="2162">2162</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> faster on large documents (with thousands of nodes). The </td> </tr> <tr> <td class="h" > <a name="2163">2163</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command should only be used on documents which don't change; </td> </tr> <tr> <td class="h" > <a name="2164">2164</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> modifying an indexed document might possibly lead to </td> </tr> <tr> <td class="h" > <a name="2165">2165</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> non-conformant behavior of later XPath queries on the </td> </tr> <tr> <td class="h" > <a name="2166">2166</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document. </td> </tr> <tr> <td class="h" > <a name="2167">2167</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2168">2168</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2169">2169</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2170">2170</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2171">2171</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'open'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2172">2172</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: $doc := open [--format|:F html|xml|docbook] </td> </tr> <tr> <td class="h" > <a name="2173">2173</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--file|:f | --pipe|:p | --string|:s] </td> </tr> <tr> <td class="h" > <a name="2174">2174</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--switch-to|:w | --no-switch-to|:W] </td> </tr> <tr> <td class="h" > <a name="2175">2175</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--validate|:v | --no-validate|:V] </td> </tr> <tr> <td class="h" > <a name="2176">2176</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--recover|:r | --no-recover|:R] </td> </tr> <tr> <td class="h" > <a name="2177">2177</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--expand-entities|:e | --no-expand-entities|:E] </td> </tr> <tr> <td class="h" > <a name="2178">2178</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--xinclude|:x | --no-xinclude|:X] </td> </tr> <tr> <td class="h" > <a name="2179">2179</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--keep-blanks|:b | --no-keep-blanks|:B] </td> </tr> <tr> <td class="h" > <a name="2180">2180</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--pedantic|:n | --no-pedantic|:N] </td> </tr> <tr> <td class="h" > <a name="2181">2181</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--load-ext-dtd|:d | --no-load-ext-dtd|:D] </td> </tr> <tr> <td class="h" > <a name="2182">2182</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--complete-attributes|:a | --no-complete-attributes|:A] </td> </tr> <tr> <td class="h" > <a name="2183">2183</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] </td> </tr> <tr> <td class="h" > <a name="2184">2184</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2185">2185</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2186">2186</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Parse a XML, HTML or SGML DOCBOOK document from a file or URL, </td> </tr> <tr> <td class="h" > <a name="2187">2187</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command output or string and return a node-set consisting of </td> </tr> <tr> <td class="h" > <a name="2188">2188</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the root of the resulting DOM tree. </td> </tr> <tr> <td class="h" > <a name="2189">2189</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2190">2190</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--format' (':F') option may be used to specify file format. </td> </tr> <tr> <td class="h" > <a name="2191">2191</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Possible values are 'xml' (default), 'html', and 'docbook'. </td> </tr> <tr> <td class="h" > <a name="2192">2192</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note, however, that the support for parsing 'DocBook' SGML </td> </tr> <tr> <td class="h" > <a name="2193">2193</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> files has been deprecated in recent 'libxml2' versions. </td> </tr> <tr> <td class="h" > <a name="2194">2194</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2195">2195</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--file' (':f') instructs the parser to consider a given </td> </tr> <tr> <td class="h" > <a name="2196">2196</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] as a file name or URL. </td> </tr> <tr> <td class="h" > <a name="2197">2197</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2198">2198</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--pipe' (':p') instructs the parser to consider a given </td> </tr> <tr> <td class="h" > <a name="2199">2199</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] as a system command and parse its output. </td> </tr> <tr> <td class="h" > <a name="2200">2200</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2201">2201</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--string' (':s') instructs the parser to consider a given </td> </tr> <tr> <td class="h" > <a name="2202">2202</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] as a string of XML or HTML to parse. </td> </tr> <tr> <td class="h" > <a name="2203">2203</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2204">2204</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--switch-to' (':w') and '--no-switch-to' (':W') control </td> </tr> <tr> <td class="h" > <a name="2205">2205</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> whether the new document's root should become current node. </td> </tr> <tr> <td class="h" > <a name="2206">2206</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> These option override current global setting of </td> </tr> <tr> <td class="h" > <a name="2207">2207</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [switch-to-new-documents]. </td> </tr> <tr> <td class="h" > <a name="2208">2208</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2209">2209</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--validate' (':v') and '--no-validate' (':V') turn on/off </td> </tr> <tr> <td class="h" > <a name="2210">2210</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> DTD-validation of the parsed document. These option override </td> </tr> <tr> <td class="h" > <a name="2211">2211</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> current global setting of [validation]. </td> </tr> <tr> <td class="h" > <a name="2212">2212</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2213">2213</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--recover' (':r') and '--no-recover' (':R') turn on/off </td> </tr> <tr> <td class="h" > <a name="2214">2214</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> parser's ability to recover from non-fatal errors. These </td> </tr> <tr> <td class="h" > <a name="2215">2215</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> option override current global setting of [recovering]. </td> </tr> <tr> <td class="h" > <a name="2216">2216</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2217">2217</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--expand-entities' (':e') and '--no-expand-entities' (':E') </td> </tr> <tr> <td class="h" > <a name="2218">2218</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> turn on/off entity expansion, overriding current global </td> </tr> <tr> <td class="h" > <a name="2219">2219</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> setting of [parser-expands-entities]. </td> </tr> <tr> <td class="h" > <a name="2220">2220</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2221">2221</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--xinclude' (':x') and '--no-xinclude' (':X') turn on/off </td> </tr> <tr> <td class="h" > <a name="2222">2222</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XInclude processing, overriding current global settings of </td> </tr> <tr> <td class="h" > <a name="2223">2223</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [parser-expands-xinclude]. </td> </tr> <tr> <td class="h" > <a name="2224">2224</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2225">2225</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--keep-blanks' (':b') and '--no-keep-blanks' (':B') control </td> </tr> <tr> <td class="h" > <a name="2226">2226</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> whether the parser should preserve so called ignorable </td> </tr> <tr> <td class="h" > <a name="2227">2227</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> whitespace. These option override current global setting of </td> </tr> <tr> <td class="h" > <a name="2228">2228</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [keep-blanks]. </td> </tr> <tr> <td class="h" > <a name="2229">2229</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2230">2230</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--pedantic' (':n') and '--no-pedantic' (':N') turn on/off </td> </tr> <tr> <td class="h" > <a name="2231">2231</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> pedantic parser flag. </td> </tr> <tr> <td class="h" > <a name="2232">2232</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2233">2233</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--load-ext-dtd' (':d') and '--no-load-ext-dtd' (':D') control </td> </tr> <tr> <td class="h" > <a name="2234">2234</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> whether the external DTD subset should be loaded with the </td> </tr> <tr> <td class="h" > <a name="2235">2235</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document. These option override current global setting of </td> </tr> <tr> <td class="h" > <a name="2236">2236</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [load-ext-dtd]. </td> </tr> <tr> <td class="h" > <a name="2237">2237</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2238">2238</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--complete-attributes' (':a') and '--no-complete-attributes' </td> </tr> <tr> <td class="h" > <a name="2239">2239</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (':A') turn on/off parse-time default attribute completion </td> </tr> <tr> <td class="h" > <a name="2240">2240</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> based on default values specified in the DTD. These option </td> </tr> <tr> <td class="h" > <a name="2241">2241</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> override current global setting of </td> </tr> <tr> <td class="h" > <a name="2242">2242</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [parser-completes-attributes]. </td> </tr> <tr> <td class="h" > <a name="2243">2243</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2244">2244</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="2245">2245</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $scratch/> $x := open mydoc.xml # open an XML document </td> </tr> <tr> <td class="h" > <a name="2246">2246</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2247">2247</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # open a HTML document from the Internet </td> </tr> <tr> <td class="h" > <a name="2248">2248</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $h:=open --format html "http://www.google.com/?q=xsh" </td> </tr> <tr> <td class="h" > <a name="2249">2249</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # quote file name if it contains whitespace </td> </tr> <tr> <td class="h" > <a name="2250">2250</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $y := open "document with a long name with spaces.xml" </td> </tr> <tr> <td class="h" > <a name="2251">2251</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2252">2252</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # use --format html or --format docbook to load these types </td> </tr> <tr> <td class="h" > <a name="2253">2253</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $z := open --format html index.htm </td> </tr> <tr> <td class="h" > <a name="2254">2254</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2255">2255</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # use --pipe flag to read output of a command </td> </tr> <tr> <td class="h" > <a name="2256">2256</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $z := open --format html --pipe 'wget -O - xsh.sourceforge.net/index.html' </td> </tr> <tr> <td class="h" > <a name="2257">2257</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2258">2258</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # use document variable to restrict XPath search to a </td> </tr> <tr> <td class="h" > <a name="2259">2259</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # given document </td> </tr> <tr> <td class="h" > <a name="2260">2260</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ls $z//chapter/title </td> </tr> <tr> <td class="h" > <a name="2261">2261</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2262">2262</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2263">2263</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2264">2264</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2265">2265</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'create'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2266">2266</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: $doc := create [nodename]|[expression] </td> </tr> <tr> <td class="h" > <a name="2267">2267</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2268">2268</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: new </td> </tr> <tr> <td class="h" > <a name="2269">2269</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2270">2270</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2271">2271</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Returns a new document object. The argument must evaluate </td> </tr> <tr> <td class="h" > <a name="2272">2272</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> either to a valid element name (possibly followed by some </td> </tr> <tr> <td class="h" > <a name="2273">2273</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> attribute declarations) to be used for the document element, </td> </tr> <tr> <td class="h" > <a name="2274">2274</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or to a well-formed XML string. </td> </tr> <tr> <td class="h" > <a name="2275">2275</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2276">2276</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Unless [switch-to-new-documents] option is turned off, this </td> </tr> <tr> <td class="h" > <a name="2277">2277</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command also changes current node to the new document. </td> </tr> <tr> <td class="h" > <a name="2278">2278</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2279">2279</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="2280">2280</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $scratch/> $t1 := create root </td> </tr> <tr> <td class="h" > <a name="2281">2281</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $t1> ls $t1 </td> </tr> <tr> <td class="h" > <a name="2282">2282</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="utf-8"?> </td> </tr> <tr> <td class="h" > <a name="2283">2283</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <root/> </td> </tr> <tr> <td class="h" > <a name="2284">2284</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2285">2285</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $t1> $t2 := create "root id='r1'" </td> </tr> <tr> <td class="h" > <a name="2286">2286</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $t2> ls $t2 </td> </tr> <tr> <td class="h" > <a name="2287">2287</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="utf-8"?> </td> </tr> <tr> <td class="h" > <a name="2288">2288</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <root id="r1"/> </td> </tr> <tr> <td class="h" > <a name="2289">2289</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2290">2290</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $t2> create "<root id='r0'>Just a <b>test</b></root>" </td> </tr> <tr> <td class="h" > <a name="2291">2291</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> /> ls / </td> </tr> <tr> <td class="h" > <a name="2292">2292</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="utf-8"?> </td> </tr> <tr> <td class="h" > <a name="2293">2293</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <root id='r0'>Just a <b>test</b></root> </td> </tr> <tr> <td class="h" > <a name="2294">2294</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2295">2295</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: open clone </td> </tr> <tr> <td class="h" > <a name="2296">2296</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2297">2297</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2298">2298</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2299">2299</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'new'}=$HELP{'create'}; </td> </tr> <tr> <td class="h" > <a name="2300">2300</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2301">2301</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'save'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2302">2302</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: save [--format|:F html|xml] [--xinclude|:x] </td> </tr> <tr> <td class="h" > <a name="2303">2303</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--file|:f [filename] | </td> </tr> <tr> <td class="h" > <a name="2304">2304</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> --pipe|:p [filename] | </td> </tr> <tr> <td class="h" > <a name="2305">2305</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> --string|:s | </td> </tr> <tr> <td class="h" > <a name="2306">2306</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> --print|:r ] </td> </tr> <tr> <td class="h" > <a name="2307">2307</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--subtree|:S] </td> </tr> <tr> <td class="h" > <a name="2308">2308</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--indent|:i | --no-indent|:I] </td> </tr> <tr> <td class="h" > <a name="2309">2309</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--skip-dtd|:d | --no-skip-dtd|:D] </td> </tr> <tr> <td class="h" > <a name="2310">2310</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--skip-empty-tags|:t | --no-skip-empty-tags|:T] </td> </tr> <tr> <td class="h" > <a name="2311">2311</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--skip-xmldecl|:x] </td> </tr> <tr> <td class="h" > <a name="2312">2312</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--encoding|:e [encoding]] </td> </tr> <tr> <td class="h" > <a name="2313">2313</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [document] </td> </tr> <tr> <td class="h" > <a name="2314">2314</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2315">2315</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2316">2316</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This takes a given [document], serializes it to XML or HTML </td> </tr> <tr> <td class="h" > <a name="2317">2317</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and either saves the result to its original file or another </td> </tr> <tr> <td class="h" > <a name="2318">2318</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> file (default), pipes it to an external command, prints it on </td> </tr> <tr> <td class="h" > <a name="2319">2319</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> standard output, or simply returns it. Without arguments it </td> </tr> <tr> <td class="h" > <a name="2320">2320</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> simply saves current document to its original file. </td> </tr> <tr> <td class="h" > <a name="2321">2321</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2322">2322</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--file|:f' option may be used to specify an output file-name. </td> </tr> <tr> <td class="h" > <a name="2323">2323</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> By default, the original document's file-name is used. </td> </tr> <tr> <td class="h" > <a name="2324">2324</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2325">2325</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--pipe|:p' option specifies, that the output should be piped </td> </tr> <tr> <td class="h" > <a name="2326">2326</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to an external command specified as the option's argument. </td> </tr> <tr> <td class="h" > <a name="2327">2327</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2328">2328</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--print|:r' option specifies, that the output should be </td> </tr> <tr> <td class="h" > <a name="2329">2329</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> printed on standard output. </td> </tr> <tr> <td class="h" > <a name="2330">2330</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2331">2331</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--string|:s' option specifies, that the output should be </td> </tr> <tr> <td class="h" > <a name="2332">2332</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> returned by the command as a string. In this case, the result </td> </tr> <tr> <td class="h" > <a name="2333">2333</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> is always in UTF8, regardless on which encoding is specified </td> </tr> <tr> <td class="h" > <a name="2334">2334</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> in the document or using '--encoding' option. </td> </tr> <tr> <td class="h" > <a name="2335">2335</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2336">2336</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The above four options are mutually exclusive. </td> </tr> <tr> <td class="h" > <a name="2337">2337</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2338">2338</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--format' option may be used to specify the output format. </td> </tr> <tr> <td class="h" > <a name="2339">2339</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> It's argument should be either 'xml', 'html' or an expression </td> </tr> <tr> <td class="h" > <a name="2340">2340</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> evaluating to one of these. If not specified, XML output is </td> </tr> <tr> <td class="h" > <a name="2341">2341</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> assumed. Note, that a document should be saved as HTML only if </td> </tr> <tr> <td class="h" > <a name="2342">2342</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> it actually is a HTML document, otherwise the result would be </td> </tr> <tr> <td class="h" > <a name="2343">2343</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> an invalid XML instance. Note also, that the optional encoding </td> </tr> <tr> <td class="h" > <a name="2344">2344</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> parameter only forces character conversion; it is up to the </td> </tr> <tr> <td class="h" > <a name="2345">2345</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> user to declare the document encoding in the appropriate HTML </td> </tr> <tr> <td class="h" > <a name="2346">2346</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <META> tag, if needed. </td> </tr> <tr> <td class="h" > <a name="2347">2347</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2348">2348</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--xinclude' automatically implies XML format and can be used </td> </tr> <tr> <td class="h" > <a name="2349">2349</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to force XSH2 to save all already expanded XInclude sections </td> </tr> <tr> <td class="h" > <a name="2350">2350</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> back to their original files while replacing them with </td> </tr> <tr> <td class="h" > <a name="2351">2351</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <xi:include> tags in the main XML file. Moreover, all material </td> </tr> <tr> <td class="h" > <a name="2352">2352</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> included within <include> elements from the </td> </tr> <tr> <td class="h" > <a name="2353">2353</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> http://www.w3.org/2001/XInclude namespace is saved to separate </td> </tr> <tr> <td class="h" > <a name="2354">2354</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> files too according to the 'href' attribute, leaving only </td> </tr> <tr> <td class="h" > <a name="2355">2355</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> empty <include> element in the root file. This feature may be </td> </tr> <tr> <td class="h" > <a name="2356">2356</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> used to split the document to a new set of XInclude fragments. </td> </tr> <tr> <td class="h" > <a name="2357">2357</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2358">2358</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the '--subtree' (':S') flag is used, only the subtree of </td> </tr> <tr> <td class="h" > <a name="2359">2359</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the specified node is saved instead of the complete document </td> </tr> <tr> <td class="h" > <a name="2360">2360</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (this flag cannot be used with '--html' format). </td> </tr> <tr> <td class="h" > <a name="2361">2361</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2362">2362</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--indent' (':i') and '--no-indent' (':I') may be used to </td> </tr> <tr> <td class="h" > <a name="2363">2363</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> enforce/suppress indentation, overriding current global </td> </tr> <tr> <td class="h" > <a name="2364">2364</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> setting of [indent]. </td> </tr> <tr> <td class="h" > <a name="2365">2365</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2366">2366</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--skip-dtd' (':d') and '--no-skip-dtd' (':D') may be used to </td> </tr> <tr> <td class="h" > <a name="2367">2367</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> enforce/suppress skipping DTD declaration and internal subset </td> </tr> <tr> <td class="h" > <a name="2368">2368</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> on output, overriding current global setting of [skip-dtd]. </td> </tr> <tr> <td class="h" > <a name="2369">2369</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2370">2370</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--empty-tags' (':t') and '--no-empty-tags' (':T') may be used </td> </tr> <tr> <td class="h" > <a name="2371">2371</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to override current global setting of [empty-tags]. </td> </tr> <tr> <td class="h" > <a name="2372">2372</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--no-empty-tags' instructs XSH2 to serialize elements with no </td> </tr> <tr> <td class="h" > <a name="2373">2373</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> child nodes as start-tag/end-tag pair '<element></element>' </td> </tr> <tr> <td class="h" > <a name="2374">2374</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> instead of using a short empty-tag form '<element/>'. </td> </tr> <tr> <td class="h" > <a name="2375">2375</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2376">2376</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--skip-xmldecl' (':x') instructs XSH2 to omit the XML </td> </tr> <tr> <td class="h" > <a name="2377">2377</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declaration from the saved document. Note however, that XML </td> </tr> <tr> <td class="h" > <a name="2378">2378</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declaration is obligatory for XML documents. It usually looks </td> </tr> <tr> <td class="h" > <a name="2379">2379</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> like '<?xml version="1.0" ...?>'. </td> </tr> <tr> <td class="h" > <a name="2380">2380</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2381">2381</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--backup' (':b') and '--no-backup' (':B') can be used to </td> </tr> <tr> <td class="h" > <a name="2382">2382</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> enforce/suppress creation of a backup file if target file </td> </tr> <tr> <td class="h" > <a name="2383">2383</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> already exists. Using these options overrides current global </td> </tr> <tr> <td class="h" > <a name="2384">2384</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> setting of [backups]. </td> </tr> <tr> <td class="h" > <a name="2385">2385</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2386">2386</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--encoding' followed by a [encoding] instructs XSH2 to save </td> </tr> <tr> <td class="h" > <a name="2387">2387</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the document in the specified encoding. In case of XML output, </td> </tr> <tr> <td class="h" > <a name="2388">2388</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the <?xml?> declaration is automatically changed accordingly. </td> </tr> <tr> <td class="h" > <a name="2389">2389</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2390">2390</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: Use save to preview current HTML document in Lynx </td> </tr> <tr> <td class="h" > <a name="2391">2391</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2392">2392</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> save --format html --pipe 'lynx -stdin' </td> </tr> <tr> <td class="h" > <a name="2393">2393</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2394">2394</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: open close enc documents </td> </tr> <tr> <td class="h" > <a name="2395">2395</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2396">2396</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2397">2397</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2398">2398</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2399">2399</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'set-dtd'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2400">2400</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: set-dtd [--internal] [--name|:n [expression]] </td> </tr> <tr> <td class="h" > <a name="2401">2401</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--public|:p [expression]] </td> </tr> <tr> <td class="h" > <a name="2402">2402</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [--system|:s [expression]] </td> </tr> <tr> <td class="h" > <a name="2403">2403</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [[document]] </td> </tr> <tr> <td class="h" > <a name="2404">2404</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2405">2405</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: set_dtd </td> </tr> <tr> <td class="h" > <a name="2406">2406</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2407">2407</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2408">2408</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Set external (default) or internal DTD for a given document. </td> </tr> <tr> <td class="h" > <a name="2409">2409</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If no [document] is given, the current document is used. At </td> </tr> <tr> <td class="h" > <a name="2410">2410</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> least one of '--public' and '--system' options should be used </td> </tr> <tr> <td class="h" > <a name="2411">2411</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to specify the PUBLIC and SYSTEM identifiers of the DTD. If </td> </tr> <tr> <td class="h" > <a name="2412">2412</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--name' parameter is not provided, name of the document root </td> </tr> <tr> <td class="h" > <a name="2413">2413</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> element is used as DTD name. </td> </tr> <tr> <td class="h" > <a name="2414">2414</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2415">2415</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: dtd validate </td> </tr> <tr> <td class="h" > <a name="2416">2416</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2417">2417</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2418">2418</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2419">2419</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'set_dtd'}=$HELP{'set-dtd'}; </td> </tr> <tr> <td class="h" > <a name="2420">2420</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2421">2421</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'dtd'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2422">2422</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: dtd [[document]] </td> </tr> <tr> <td class="h" > <a name="2423">2423</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2424">2424</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2425">2425</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Print external or internal DTD for a given document. If used </td> </tr> <tr> <td class="h" > <a name="2426">2426</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> without arguments prints DTD of the current document. </td> </tr> <tr> <td class="h" > <a name="2427">2427</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2428">2428</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: set-dtd validate </td> </tr> <tr> <td class="h" > <a name="2429">2429</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2430">2430</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2431">2431</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2432">2432</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2433">2433</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'set-enc'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2434">2434</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: set-enc [encoding] [[document]] </td> </tr> <tr> <td class="h" > <a name="2435">2435</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2436">2436</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2437">2437</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Changes character encoding of a given document. If no </td> </tr> <tr> <td class="h" > <a name="2438">2438</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [document] is given, the command applies to the current </td> </tr> <tr> <td class="h" > <a name="2439">2439</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> document. This has two effects: changing the XMLDecl encoding </td> </tr> <tr> <td class="h" > <a name="2440">2440</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declaration in the document prolog to display the new encoding </td> </tr> <tr> <td class="h" > <a name="2441">2441</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and making all future [save] operations on the document </td> </tr> <tr> <td class="h" > <a name="2442">2442</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> default to the given charset. </td> </tr> <tr> <td class="h" > <a name="2443">2443</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2444">2444</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="2445">2445</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> ls </td> </tr> <tr> <td class="h" > <a name="2446">2446</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="iso-8859-1"?> </td> </tr> <tr> <td class="h" > <a name="2447">2447</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <foo>...</foo> </td> </tr> <tr> <td class="h" > <a name="2448">2448</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> set-enc "utf-8" </td> </tr> <tr> <td class="h" > <a name="2449">2449</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> ls </td> </tr> <tr> <td class="h" > <a name="2450">2450</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <?xml version="1.0" encoding="utf-8"?> </td> </tr> <tr> <td class="h" > <a name="2451">2451</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <foo>...</foo> </td> </tr> <tr> <td class="h" > <a name="2452">2452</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> save # saves the file in UTF-8 encoding </td> </tr> <tr> <td class="h" > <a name="2453">2453</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2454">2454</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: enc doc-info </td> </tr> <tr> <td class="h" > <a name="2455">2455</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2456">2456</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2457">2457</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2458">2458</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2459">2459</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'set-standalone'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2460">2460</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: set-standalone [expression] [[document]] </td> </tr> <tr> <td class="h" > <a name="2461">2461</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2462">2462</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2463">2463</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Changes the value of 'standalone' declaration in the XMLDecl </td> </tr> <tr> <td class="h" > <a name="2464">2464</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> prolog of a document. The [expression] should evaluate to </td> </tr> <tr> <td class="h" > <a name="2465">2465</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> either 1 or 0 or ''yes'' or ''no''. The result of applying the </td> </tr> <tr> <td class="h" > <a name="2466">2466</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> command on other values is not specified. If no [document] is </td> </tr> <tr> <td class="h" > <a name="2467">2467</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> given, the command applies to the current document. </td> </tr> <tr> <td class="h" > <a name="2468">2468</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2469">2469</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: doc-info </td> </tr> <tr> <td class="h" > <a name="2470">2470</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2471">2471</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2472">2472</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2473">2473</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2474">2474</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'enc'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2475">2475</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: enc [[document]] </td> </tr> <tr> <td class="h" > <a name="2476">2476</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2477">2477</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2478">2478</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Print the original document encoding string. If no [document] </td> </tr> <tr> <td class="h" > <a name="2479">2479</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> is given, the current document is used. </td> </tr> <tr> <td class="h" > <a name="2480">2480</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2481">2481</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: set-enc </td> </tr> <tr> <td class="h" > <a name="2482">2482</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2483">2483</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2484">2484</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2485">2485</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2486">2486</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'validate'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2487">2487</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: validate [--yesno|:q] [[document]] </td> </tr> <tr> <td class="h" > <a name="2488">2488</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate [--yesno|:q] [--dtd|:D | --relaxng|:R | --schema|:S] --file|:f [filename]] [[document]] </td> </tr> <tr> <td class="h" > <a name="2489">2489</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate [--yesno|:q] [--dtd|:D | --relaxng|:R | --schema|:S] --string|:s [expression]] [[document]] </td> </tr> <tr> <td class="h" > <a name="2490">2490</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate [--yesno|:q] [--dtd|:D | --relaxng|:R | --schema|:S] --doc|:d [document]] [[document]] </td> </tr> <tr> <td class="h" > <a name="2491">2491</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate [--yesno|:q] [--dtd|:d] --public|:p [expression] [--file|:f [expression]] [[document]] </td> </tr> <tr> <td class="h" > <a name="2492">2492</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2493">2493</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2494">2494</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command validates the current document or a document </td> </tr> <tr> <td class="h" > <a name="2495">2495</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> specified in the argument against a DTD, RelaxNG or XSD </td> </tr> <tr> <td class="h" > <a name="2496">2496</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> schema. If '--yesno' or ':q' is specified, only prints 'yes' </td> </tr> <tr> <td class="h" > <a name="2497">2497</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and returns 1 if the document validates or 'no' and returns 0 </td> </tr> <tr> <td class="h" > <a name="2498">2498</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> if it does not. Without '--yesno', it throws an exception with </td> </tr> <tr> <td class="h" > <a name="2499">2499</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a complete validation error message if the document doesn't </td> </tr> <tr> <td class="h" > <a name="2500">2500</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate. </td> </tr> <tr> <td class="h" > <a name="2501">2501</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2502">2502</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--dtd' or ':D' forces DTD validation (default). </td> </tr> <tr> <td class="h" > <a name="2503">2503</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2504">2504</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--relaxng' or ':R' forces RelaxNG validation. Only XML </td> </tr> <tr> <td class="h" > <a name="2505">2505</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> RelaxNG grammars are supported. </td> </tr> <tr> <td class="h" > <a name="2506">2506</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2507">2507</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--schema' or ':S' forces W3C XML Schema validation (XSD). </td> </tr> <tr> <td class="h" > <a name="2508">2508</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Support for schema validation may still be incomplete (see </td> </tr> <tr> <td class="h" > <a name="2509">2509</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> libxml2 home page for more details). </td> </tr> <tr> <td class="h" > <a name="2510">2510</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2511">2511</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> A DTD subset can be specified by its PUBLIC identifier (with </td> </tr> <tr> <td class="h" > <a name="2512">2512</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '--public'), by its SYSTEM identifier (with '--file'), or as a </td> </tr> <tr> <td class="h" > <a name="2513">2513</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> string (with '--string'). If none of these options is used, </td> </tr> <tr> <td class="h" > <a name="2514">2514</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validation is performed against the internal or external DTD </td> </tr> <tr> <td class="h" > <a name="2515">2515</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> subset of the document being validated. </td> </tr> <tr> <td class="h" > <a name="2516">2516</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2517">2517</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> RelaxNG grammars and XML Schemas can either be specified </td> </tr> <tr> <td class="h" > <a name="2518">2518</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> either as a filename or url (with '--file'), as a string </td> </tr> <tr> <td class="h" > <a name="2519">2519</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> containing (with '--string'), or as a document currently open </td> </tr> <tr> <td class="h" > <a name="2520">2520</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> in XSH2 (with '--doc'). </td> </tr> <tr> <td class="h" > <a name="2521">2521</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2522">2522</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="2523">2523</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $mydoc := open "test.xml" </td> </tr> <tr> <td class="h" > <a name="2524">2524</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> # in all examples below, mydoc can be omitted </td> </tr> <tr> <td class="h" > <a name="2525">2525</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --yesno $mydoc; # validate against the document's DOCTYPE </td> </tr> <tr> <td class="h" > <a name="2526">2526</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --public "-//OASIS//DTD DocBook XML V4.1.2//EN" $mydoc </td> </tr> <tr> <td class="h" > <a name="2527">2527</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --file "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" $mydoc </td> </tr> <tr> <td class="h" > <a name="2528">2528</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2529">2529</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="2530">2530</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --relaxng --file "test.rng" $mydoc </td> </tr> <tr> <td class="h" > <a name="2531">2531</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --relaxng --string $relaxschema $mydoc </td> </tr> <tr> <td class="h" > <a name="2532">2532</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $rng := open "test.rng" </td> </tr> <tr> <td class="h" > <a name="2533">2533</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --relaxng --doc $rng $mydoc </td> </tr> <tr> <td class="h" > <a name="2534">2534</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2535">2535</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="2536">2536</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --schema --file "test.xsd" $mydoc </td> </tr> <tr> <td class="h" > <a name="2537">2537</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --schema --string $xsdschema $mydoc </td> </tr> <tr> <td class="h" > <a name="2538">2538</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $xsd := open "test.xsd" </td> </tr> <tr> <td class="h" > <a name="2539">2539</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> validate --schema --doc $xsd $mydoc </td> </tr> <tr> <td class="h" > <a name="2540">2540</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2541">2541</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: dtd </td> </tr> <tr> <td class="h" > <a name="2542">2542</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2543">2543</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2544">2544</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2545">2545</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2546">2546</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'exit'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2547">2547</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: exit [[expression]] </td> </tr> <tr> <td class="h" > <a name="2548">2548</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2549">2549</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: quit </td> </tr> <tr> <td class="h" > <a name="2550">2550</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2551">2551</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2552">2552</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Exit xsh, optionally with an exit-code resulting from </td> </tr> <tr> <td class="h" > <a name="2553">2553</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> evaluation of a given [expression]. </td> </tr> <tr> <td class="h" > <a name="2554">2554</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2555">2555</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> WARNING: No files are saved on exit. </td> </tr> <tr> <td class="h" > <a name="2556">2556</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2557">2557</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2558">2558</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2559">2559</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'quit'}=$HELP{'exit'}; </td> </tr> <tr> <td class="h" > <a name="2560">2560</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2561">2561</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'process-xinclude'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2562">2562</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: process-xinclude [[document]] </td> </tr> <tr> <td class="h" > <a name="2563">2563</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2564">2564</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: process_xinclude process-xincludes process_xincludes xinclude xincludes load_xincludes load-xincludes load_xinclude load-xinclude </td> </tr> <tr> <td class="h" > <a name="2565">2565</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2566">2566</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2567">2567</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Replace any xinclude tags in a given [document] with the </td> </tr> <tr> <td class="h" > <a name="2568">2568</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> corresponding content. See http://www.w3.org/TR/xinclude/ to </td> </tr> <tr> <td class="h" > <a name="2569">2569</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> find out more about XInclude technology. </td> </tr> <tr> <td class="h" > <a name="2570">2570</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2571">2571</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: parser-expands-xinclude </td> </tr> <tr> <td class="h" > <a name="2572">2572</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2573">2573</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2574">2574</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2575">2575</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'process_xinclude'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2576">2576</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'process-xincludes'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2577">2577</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'process_xincludes'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2578">2578</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'xinclude'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2579">2579</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'xincludes'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2580">2580</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'load_xincludes'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2581">2581</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'load-xincludes'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2582">2582</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'load_xinclude'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2583">2583</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'load-xinclude'}=$HELP{'process-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2584">2584</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2585">2585</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'cd'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2586">2586</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: cd [[expression]] </td> </tr> <tr> <td class="h" > <a name="2587">2587</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2588">2588</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: chxpath </td> </tr> <tr> <td class="h" > <a name="2589">2589</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2590">2590</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2591">2591</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Evaluate given [expression] to a node-list and change current </td> </tr> <tr> <td class="h" > <a name="2592">2592</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> context node to the first node in it. </td> </tr> <tr> <td class="h" > <a name="2593">2593</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2594">2594</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2595">2595</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2596">2596</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'chxpath'}=$HELP{'cd'}; </td> </tr> <tr> <td class="h" > <a name="2597">2597</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2598">2598</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'pwd'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2599">2599</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: pwd [--id|:i] </td> </tr> <tr> <td class="h" > <a name="2600">2600</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2601">2601</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2602">2602</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Print XPath leading to the current context node (equivalent to </td> </tr> <tr> <td class="h" > <a name="2603">2603</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'locate .'). </td> </tr> <tr> <td class="h" > <a name="2604">2604</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2605">2605</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If flag '--id' (':i') is used then ID-based shortcut is </td> </tr> <tr> <td class="h" > <a name="2606">2606</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> allowed in the resulting location path. That means that if the </td> </tr> <tr> <td class="h" > <a name="2607">2607</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> current node or some of its ancestors has an ID attribute </td> </tr> <tr> <td class="h" > <a name="2608">2608</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> (either 'xml:id' or one specified in a DTD) then the </td> </tr> <tr> <td class="h" > <a name="2609">2609</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> corresponding segment of the canonical location path is </td> </tr> <tr> <td class="h" > <a name="2610">2610</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> replaced by the 'id()' function which jumps directly to an </td> </tr> <tr> <td class="h" > <a name="2611">2611</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> element based on its ID. </td> </tr> <tr> <td class="h" > <a name="2612">2612</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2613">2613</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: locate xsh:path </td> </tr> <tr> <td class="h" > <a name="2614">2614</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2615">2615</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2616">2616</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2617">2617</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2618">2618</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'locate'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2619">2619</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: locate [--id|:i] [xpath] </td> </tr> <tr> <td class="h" > <a name="2620">2620</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2621">2621</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2622">2622</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Print canonical XPaths leading to nodes matched by a given </td> </tr> <tr> <td class="h" > <a name="2623">2623</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [xpath]. </td> </tr> <tr> <td class="h" > <a name="2624">2624</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2625">2625</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If flag '--id' (':i') is used then ID-based shortcuts are </td> </tr> <tr> <td class="h" > <a name="2626">2626</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> allowed in the resulting location paths. That means that if </td> </tr> <tr> <td class="h" > <a name="2627">2627</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the node or some of its ancestors has an ID attribute (either </td> </tr> <tr> <td class="h" > <a name="2628">2628</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'xml:id' or one specified in a DTD) then the corresponding </td> </tr> <tr> <td class="h" > <a name="2629">2629</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> segment of the canonical location path is replaced by the </td> </tr> <tr> <td class="h" > <a name="2630">2630</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'id()' function which jumps directly to an element based on </td> </tr> <tr> <td class="h" > <a name="2631">2631</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> its ID. </td> </tr> <tr> <td class="h" > <a name="2632">2632</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2633">2633</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: pwd </td> </tr> <tr> <td class="h" > <a name="2634">2634</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2635">2635</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2636">2636</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2637">2637</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2638">2638</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'xupdate'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2639">2639</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: xupdate [document] [[document]] </td> </tr> <tr> <td class="h" > <a name="2640">2640</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2641">2641</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2642">2642</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Modify the current document or the document specified by the </td> </tr> <tr> <td class="h" > <a name="2643">2643</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> second [document] argument according to XUpdate commands of </td> </tr> <tr> <td class="h" > <a name="2644">2644</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the first [document] argument. XUpdate, or more specifically </td> </tr> <tr> <td class="h" > <a name="2645">2645</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the XML Update Language, aims to be a language for updating </td> </tr> <tr> <td class="h" > <a name="2646">2646</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XML documents. </td> </tr> <tr> <td class="h" > <a name="2647">2647</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2648">2648</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XUpdate language is described in XUpdate Working Draft at </td> </tr> <tr> <td class="h" > <a name="2649">2649</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> http://xmldb-org.sourceforge.net/xupdate/xupdate-wd.html. </td> </tr> <tr> <td class="h" > <a name="2650">2650</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2651">2651</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> XUpdate output can be generated for example by Python xmldiff </td> </tr> <tr> <td class="h" > <a name="2652">2652</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> utility from http://www.logilab.org/projects/xmldiff/. </td> </tr> <tr> <td class="h" > <a name="2653">2653</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2654">2654</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2655">2655</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2656">2656</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2657">2657</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'verbose'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2658">2658</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: verbose </td> </tr> <tr> <td class="h" > <a name="2659">2659</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2660">2660</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2661">2661</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Turn on verbose messages (default). </td> </tr> <tr> <td class="h" > <a name="2662">2662</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2663">2663</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is equivalent to setting '$QUIET' variable to 0. </td> </tr> <tr> <td class="h" > <a name="2664">2664</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2665">2665</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: quiet </td> </tr> <tr> <td class="h" > <a name="2666">2666</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2667">2667</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2668">2668</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2669">2669</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2670">2670</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'test-mode'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2671">2671</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: test-mode </td> </tr> <tr> <td class="h" > <a name="2672">2672</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2673">2673</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: test_mode </td> </tr> <tr> <td class="h" > <a name="2674">2674</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2675">2675</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2676">2676</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Switch into a mode in which no commands are actually executed </td> </tr> <tr> <td class="h" > <a name="2677">2677</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> and only command syntax is checked. </td> </tr> <tr> <td class="h" > <a name="2678">2678</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2679">2679</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is equivalent to setting '$TEST_MODE' variable to 1. </td> </tr> <tr> <td class="h" > <a name="2680">2680</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2681">2681</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: run-mode </td> </tr> <tr> <td class="h" > <a name="2682">2682</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2683">2683</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2684">2684</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2685">2685</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'test_mode'}=$HELP{'test-mode'}; </td> </tr> <tr> <td class="h" > <a name="2686">2686</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2687">2687</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'run-mode'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2688">2688</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: run-mode </td> </tr> <tr> <td class="h" > <a name="2689">2689</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2690">2690</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: run_mode </td> </tr> <tr> <td class="h" > <a name="2691">2691</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2692">2692</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2693">2693</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Switch from the [test-mode] back to the normal execution mode. </td> </tr> <tr> <td class="h" > <a name="2694">2694</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2695">2695</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is equivalent to setting '$TEST_MODE' variable to 0. </td> </tr> <tr> <td class="h" > <a name="2696">2696</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2697">2697</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: test-mode </td> </tr> <tr> <td class="h" > <a name="2698">2698</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2699">2699</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2700">2700</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2701">2701</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'run_mode'}=$HELP{'run-mode'}; </td> </tr> <tr> <td class="h" > <a name="2702">2702</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2703">2703</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'debug'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2704">2704</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: debug </td> </tr> <tr> <td class="h" > <a name="2705">2705</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2706">2706</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2707">2707</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Turn on debugging messages. </td> </tr> <tr> <td class="h" > <a name="2708">2708</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2709">2709</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is equivalent to setting '$DEBUG' variable to 1. </td> </tr> <tr> <td class="h" > <a name="2710">2710</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2711">2711</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: nodebug </td> </tr> <tr> <td class="h" > <a name="2712">2712</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2713">2713</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2714">2714</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2715">2715</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2716">2716</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'nodebug'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2717">2717</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: nodebug </td> </tr> <tr> <td class="h" > <a name="2718">2718</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2719">2719</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2720">2720</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Turn off debugging messages. </td> </tr> <tr> <td class="h" > <a name="2721">2721</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2722">2722</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This is equivalent to setting '$DEBUG' variable to 0. </td> </tr> <tr> <td class="h" > <a name="2723">2723</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2724">2724</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: debug </td> </tr> <tr> <td class="h" > <a name="2725">2725</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2726">2726</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2727">2727</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2728">2728</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2729">2729</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'version'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2730">2730</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: version </td> </tr> <tr> <td class="h" > <a name="2731">2731</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2732">2732</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2733">2733</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Prints program version plus version numbers of the most </td> </tr> <tr> <td class="h" > <a name="2734">2734</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> important libraries used. </td> </tr> <tr> <td class="h" > <a name="2735">2735</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2736">2736</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2737">2737</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2738">2738</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2739">2739</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'validation'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2740">2740</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: validation [expression] </td> </tr> <tr> <td class="h" > <a name="2741">2741</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2742">2742</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2743">2743</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Turn on validation during the parse process if the </td> </tr> <tr> <td class="h" > <a name="2744">2744</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> [expression] is non-zero or off otherwise. Defaults to off. </td> </tr> <tr> <td class="h" > <a name="2745">2745</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2746">2746</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$VALIDATION' </td> </tr> <tr> <td class="h" > <a name="2747">2747</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2748">2748</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2749">2749</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2750">2750</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2751">2751</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2752">2752</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'recovering'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2753">2753</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: recovering [expression] </td> </tr> <tr> <td class="h" > <a name="2754">2754</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2755">2755</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2756">2756</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the [expression] evaluates to non-zero value, turn on the </td> </tr> <tr> <td class="h" > <a name="2757">2757</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> recovering parser mode on; turn it off otherwise. Defaults to </td> </tr> <tr> <td class="h" > <a name="2758">2758</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> off. </td> </tr> <tr> <td class="h" > <a name="2759">2759</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2760">2760</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note, that the in the recovering mode, validation is not </td> </tr> <tr> <td class="h" > <a name="2761">2761</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> performed by the parser even if the validation flag is on. </td> </tr> <tr> <td class="h" > <a name="2762">2762</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2763">2763</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The recover mode helps to efficiently recover documents that </td> </tr> <tr> <td class="h" > <a name="2764">2764</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> are almost well-formed. This for example includes documents </td> </tr> <tr> <td class="h" > <a name="2765">2765</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> without a close tag for the document element (or any other </td> </tr> <tr> <td class="h" > <a name="2766">2766</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> element inside the document). </td> </tr> <tr> <td class="h" > <a name="2767">2767</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2768">2768</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$RECOVERING' </td> </tr> <tr> <td class="h" > <a name="2769">2769</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2770">2770</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2771">2771</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2772">2772</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2773">2773</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2774">2774</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'parser-expands-entities'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2775">2775</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: parser-expands-entities [expression] </td> </tr> <tr> <td class="h" > <a name="2776">2776</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2777">2777</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: parser_expands_entities </td> </tr> <tr> <td class="h" > <a name="2778">2778</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2779">2779</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2780">2780</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the [expression] is non-zero enable the entity expansion </td> </tr> <tr> <td class="h" > <a name="2781">2781</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> during the parse process; disable it otherwise. If entity </td> </tr> <tr> <td class="h" > <a name="2782">2782</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expansion is disabled, any external entity references in </td> </tr> <tr> <td class="h" > <a name="2783">2783</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> parsed documents are preserved as references. By default, </td> </tr> <tr> <td class="h" > <a name="2784">2784</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> entity expansion is enabled. </td> </tr> <tr> <td class="h" > <a name="2785">2785</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2786">2786</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the </td> </tr> <tr> <td class="h" > <a name="2787">2787</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '$PARSER_EXPANDS_ENTITIES' variable. </td> </tr> <tr> <td class="h" > <a name="2788">2788</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2789">2789</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2790">2790</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2791">2791</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'parser_expands_entities'}=$HELP{'parser-expands-entities'}; </td> </tr> <tr> <td class="h" > <a name="2792">2792</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2793">2793</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'keep-blanks'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2794">2794</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: keep-blanks [expression] </td> </tr> <tr> <td class="h" > <a name="2795">2795</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2796">2796</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: keep_blanks </td> </tr> <tr> <td class="h" > <a name="2797">2797</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2798">2798</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2799">2799</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Allows you to turn on/off preserving the parser's default </td> </tr> <tr> <td class="h" > <a name="2800">2800</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> behavior of preserving all whitespace in the document. Setting </td> </tr> <tr> <td class="h" > <a name="2801">2801</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> this option to 0, instructs the XML parser to ignore </td> </tr> <tr> <td class="h" > <a name="2802">2802</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> whitespace occurring between adjacent element nodes, so that </td> </tr> <tr> <td class="h" > <a name="2803">2803</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> no extra text nodes are created for it. </td> </tr> <tr> <td class="h" > <a name="2804">2804</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2805">2805</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$KEEP_BLANKS' </td> </tr> <tr> <td class="h" > <a name="2806">2806</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2807">2807</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2808">2808</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2809">2809</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2810">2810</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'keep_blanks'}=$HELP{'keep-blanks'}; </td> </tr> <tr> <td class="h" > <a name="2811">2811</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2812">2812</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'pedantic-parser'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2813">2813</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: pedantic-parser [expression] </td> </tr> <tr> <td class="h" > <a name="2814">2814</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2815">2815</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: pedantic_parser </td> </tr> <tr> <td class="h" > <a name="2816">2816</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2817">2817</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2818">2818</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If you wish, you can make the XML parser little more pedantic </td> </tr> <tr> <td class="h" > <a name="2819">2819</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> by passing a non-zero [expression] to this command. </td> </tr> <tr> <td class="h" > <a name="2820">2820</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2821">2821</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$PEDANTIC_PARSER' </td> </tr> <tr> <td class="h" > <a name="2822">2822</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2823">2823</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2824">2824</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2825">2825</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2826">2826</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'pedantic_parser'}=$HELP{'pedantic-parser'}; </td> </tr> <tr> <td class="h" > <a name="2827">2827</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2828">2828</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'parser-completes-attributes'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2829">2829</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: parser-completes-attributes [expression] </td> </tr> <tr> <td class="h" > <a name="2830">2830</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2831">2831</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: complete_attributes complete-attributes parser_completes_attributes </td> </tr> <tr> <td class="h" > <a name="2832">2832</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2833">2833</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2834">2834</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the expression is non-zero, the command makes XML parser </td> </tr> <tr> <td class="h" > <a name="2835">2835</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> add missing attributes with default values as specified in a </td> </tr> <tr> <td class="h" > <a name="2836">2836</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> DTD. By default, this option is enabled. </td> </tr> <tr> <td class="h" > <a name="2837">2837</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2838">2838</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the </td> </tr> <tr> <td class="h" > <a name="2839">2839</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '$PARSER_COMPLETES_ATTRIBUTES' variable. </td> </tr> <tr> <td class="h" > <a name="2840">2840</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2841">2841</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2842">2842</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2843">2843</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'complete_attributes'}=$HELP{'parser-completes-attributes'}; </td> </tr> <tr> <td class="h" > <a name="2844">2844</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'complete-attributes'}=$HELP{'parser-completes-attributes'}; </td> </tr> <tr> <td class="h" > <a name="2845">2845</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'parser_completes_attributes'}=$HELP{'parser-completes-attributes'}; </td> </tr> <tr> <td class="h" > <a name="2846">2846</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2847">2847</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'indent'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2848">2848</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: indent [expression] </td> </tr> <tr> <td class="h" > <a name="2849">2849</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2850">2850</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2851">2851</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the value of [expression] is 1, saved and listed XML will </td> </tr> <tr> <td class="h" > <a name="2852">2852</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> be formatted using some (hopefully) ignorable whitespace. If </td> </tr> <tr> <td class="h" > <a name="2853">2853</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the value is 2 (or higher), XSH2 will act as in case of 1, </td> </tr> <tr> <td class="h" > <a name="2854">2854</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> plus it will add a leading and a trailing linebreak to each </td> </tr> <tr> <td class="h" > <a name="2855">2855</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> text node. </td> </tr> <tr> <td class="h" > <a name="2856">2856</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2857">2857</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Note, that since the underlying C library (libxml2) uses a </td> </tr> <tr> <td class="h" > <a name="2858">2858</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> hard-coded indentation of 2 space characters per indentation </td> </tr> <tr> <td class="h" > <a name="2859">2859</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> level, the amount of whitespace used for indentation can not </td> </tr> <tr> <td class="h" > <a name="2860">2860</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> be altered at runtime. </td> </tr> <tr> <td class="h" > <a name="2861">2861</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2862">2862</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$INDENT' variable. </td> </tr> <tr> <td class="h" > <a name="2863">2863</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2864">2864</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2865">2865</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2866">2866</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2867">2867</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'empty-tags'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2868">2868</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: empty-tags [expression] </td> </tr> <tr> <td class="h" > <a name="2869">2869</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2870">2870</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: empty_tags </td> </tr> <tr> <td class="h" > <a name="2871">2871</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2872">2872</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2873">2873</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the value of [expression] is 1 (non-zero), empty tags are </td> </tr> <tr> <td class="h" > <a name="2874">2874</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> serialized as a start-tag/end-tag pair ('<foo></foo>'). This </td> </tr> <tr> <td class="h" > <a name="2875">2875</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> option affects both [ls] and [save] and possibly other </td> </tr> <tr> <td class="h" > <a name="2876">2876</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> commands. Otherwise, they are compacted into a short-tag form </td> </tr> <tr> <td class="h" > <a name="2877">2877</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> ('<foo/>'). Default value is '0'. </td> </tr> <tr> <td class="h" > <a name="2878">2878</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2879">2879</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$EMPTY_TAGS' </td> </tr> <tr> <td class="h" > <a name="2880">2880</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2881">2881</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2882">2882</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2883">2883</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2884">2884</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'empty_tags'}=$HELP{'empty-tags'}; </td> </tr> <tr> <td class="h" > <a name="2885">2885</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2886">2886</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'skip-dtd'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2887">2887</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: skip-dtd [expression] </td> </tr> <tr> <td class="h" > <a name="2888">2888</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2889">2889</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: skip_dtd </td> </tr> <tr> <td class="h" > <a name="2890">2890</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2891">2891</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2892">2892</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the value of [expression] is 1 (non-zero), DTD DOCTYPE </td> </tr> <tr> <td class="h" > <a name="2893">2893</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> declaration is omitted from any further serializations of XML </td> </tr> <tr> <td class="h" > <a name="2894">2894</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> documents (including [ls] and [save]). Default value is '0'. </td> </tr> <tr> <td class="h" > <a name="2895">2895</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2896">2896</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$SKIP_DTD' </td> </tr> <tr> <td class="h" > <a name="2897">2897</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2898">2898</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2899">2899</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2900">2900</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2901">2901</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'skip_dtd'}=$HELP{'skip-dtd'}; </td> </tr> <tr> <td class="h" > <a name="2902">2902</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2903">2903</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'parser-expands-xinclude'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2904">2904</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: parser-expands-xinclude [expression] </td> </tr> <tr> <td class="h" > <a name="2905">2905</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2906">2906</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: parser_expands_xinclude </td> </tr> <tr> <td class="h" > <a name="2907">2907</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2908">2908</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2909">2909</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If the [expression] is non-zero, the parser is allowed to </td> </tr> <tr> <td class="h" > <a name="2910">2910</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> expand XInclude tags immediately while parsing the document. </td> </tr> <tr> <td class="h" > <a name="2911">2911</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2912">2912</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the </td> </tr> <tr> <td class="h" > <a name="2913">2913</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '$PARSER_EXPANDS_XINCLUDE' variable. </td> </tr> <tr> <td class="h" > <a name="2914">2914</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2915">2915</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: process-xinclude </td> </tr> <tr> <td class="h" > <a name="2916">2916</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2917">2917</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2918">2918</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2919">2919</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'parser_expands_xinclude'}=$HELP{'parser-expands-xinclude'}; </td> </tr> <tr> <td class="h" > <a name="2920">2920</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2921">2921</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'load-ext-dtd'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2922">2922</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: load-ext-dtd [expression] </td> </tr> <tr> <td class="h" > <a name="2923">2923</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2924">2924</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: load_ext_dtd </td> </tr> <tr> <td class="h" > <a name="2925">2925</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2926">2926</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2927">2927</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Non-zero [expression] instructs the XML parser to load </td> </tr> <tr> <td class="h" > <a name="2928">2928</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> external DTD subsets declared in XML documents. This option is </td> </tr> <tr> <td class="h" > <a name="2929">2929</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> enabled by default. </td> </tr> <tr> <td class="h" > <a name="2930">2930</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2931">2931</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$LOAD_EXT_DTD' </td> </tr> <tr> <td class="h" > <a name="2932">2932</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2933">2933</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2934">2934</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2935">2935</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2936">2936</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'load_ext_dtd'}=$HELP{'load-ext-dtd'}; </td> </tr> <tr> <td class="h" > <a name="2937">2937</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2938">2938</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'encoding'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2939">2939</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: encoding [encoding] </td> </tr> <tr> <td class="h" > <a name="2940">2940</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2941">2941</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2942">2942</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Set the default character encoding used for standard (e.g. </td> </tr> <tr> <td class="h" > <a name="2943">2943</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> terminal) output. This doesn't influence the encoding used for </td> </tr> <tr> <td class="h" > <a name="2944">2944</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> saving XML documents. </td> </tr> <tr> <td class="h" > <a name="2945">2945</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2946">2946</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$ENCODING' </td> </tr> <tr> <td class="h" > <a name="2947">2947</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2948">2948</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2949">2949</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: query-encoding </td> </tr> <tr> <td class="h" > <a name="2950">2950</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2951">2951</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2952">2952</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2953">2953</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2954">2954</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'query-encoding'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2955">2955</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: query-encoding [encoding] </td> </tr> <tr> <td class="h" > <a name="2956">2956</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2957">2957</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: query_encoding </td> </tr> <tr> <td class="h" > <a name="2958">2958</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2959">2959</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2960">2960</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Set the default query character encoding, i.e. encoding used </td> </tr> <tr> <td class="h" > <a name="2961">2961</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> when taking input from XSH2 prompt or standard input. </td> </tr> <tr> <td class="h" > <a name="2962">2962</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2963">2963</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$QUERY_ENCODING' </td> </tr> <tr> <td class="h" > <a name="2964">2964</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> variable. </td> </tr> <tr> <td class="h" > <a name="2965">2965</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2966">2966</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: encoding </td> </tr> <tr> <td class="h" > <a name="2967">2967</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2968">2968</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2969">2969</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2970">2970</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'query_encoding'}=$HELP{'query-encoding'}; </td> </tr> <tr> <td class="h" > <a name="2971">2971</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2972">2972</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'quiet'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2973">2973</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: quiet </td> </tr> <tr> <td class="h" > <a name="2974">2974</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2975">2975</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2976">2976</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Turn off verbose messages. </td> </tr> <tr> <td class="h" > <a name="2977">2977</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2978">2978</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$QUIET' variable. </td> </tr> <tr> <td class="h" > <a name="2979">2979</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2980">2980</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: verbose </td> </tr> <tr> <td class="h" > <a name="2981">2981</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2982">2982</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="2983">2983</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2984">2984</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2985">2985</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'switch-to-new-documents'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="2986">2986</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: switch-to-new-documents [expression] </td> </tr> <tr> <td class="h" > <a name="2987">2987</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="2988">2988</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> aliases: switch_to_new_documents </td> </tr> <tr> <td class="h" > <a name="2989">2989</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2990">2990</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="2991">2991</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If non-zero, XSH2 changes current node to the document node of </td> </tr> <tr> <td class="h" > <a name="2992">2992</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> a newly open/created files every time a new document is opened </td> </tr> <tr> <td class="h" > <a name="2993">2993</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> or created with [open] or [create]. Default value for this </td> </tr> <tr> <td class="h" > <a name="2994">2994</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> option is 1. </td> </tr> <tr> <td class="h" > <a name="2995">2995</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2996">2996</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the </td> </tr> <tr> <td class="h" > <a name="2997">2997</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> '$SWITCH_TO_NEW_DOCUMENTS' variable. </td> </tr> <tr> <td class="h" > <a name="2998">2998</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="2999">2999</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="3000">3000</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3001">3001</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'switch_to_new_documents'}=$HELP{'switch-to-new-documents'}; </td> </tr> <tr> <td class="h" > <a name="3002">3002</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3003">3003</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'backups'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="3004">3004</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: backups </td> </tr> <tr> <td class="h" > <a name="3005">3005</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="3006">3006</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="3007">3007</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Enable creating backup files on save (default). </td> </tr> <tr> <td class="h" > <a name="3008">3008</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3009">3009</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$BACKUPS' variable </td> </tr> <tr> <td class="h" > <a name="3010">3010</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to 1. </td> </tr> <tr> <td class="h" > <a name="3011">3011</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3012">3012</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: nobackups </td> </tr> <tr> <td class="h" > <a name="3013">3013</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3014">3014</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="3015">3015</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3016">3016</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3017">3017</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'nobackups'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="3018">3018</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: nobackups </td> </tr> <tr> <td class="h" > <a name="3019">3019</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="3020">3020</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="3021">3021</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Disable creating backup files on save. </td> </tr> <tr> <td class="h" > <a name="3022">3022</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3023">3023</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This command is equivalent to setting the '$BACKUPS' variable </td> </tr> <tr> <td class="h" > <a name="3024">3024</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> to 0. </td> </tr> <tr> <td class="h" > <a name="3025">3025</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3026">3026</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> see also: nobackups </td> </tr> <tr> <td class="h" > <a name="3027">3027</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3028">3028</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> END </td> </tr> <tr> <td class="h" > <a name="3029">3029</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3030">3030</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3031">3031</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> $HELP{'fold'}=[<<'END']; </td> </tr> <tr> <td class="h" > <a name="3032">3032</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> usage: fold [--depth|:d [expression]] [[expression]] </td> </tr> <tr> <td class="h" > <a name="3033">3033</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> </td> </tr> <tr> <td class="h" > <a name="3034">3034</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> description: </td> </tr> <tr> <td class="h" > <a name="3035">3035</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> This feature is still EXPERIMENTAL and may change in the </td> </tr> <tr> <td class="h" > <a name="3036">3036</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> future! Fold command may be used to mark elements with a </td> </tr> <tr> <td class="h" > <a name="3037">3037</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'xsh:fold' attribute from the </td> </tr> <tr> <td class="h" > <a name="3038">3038</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> 'http://xsh.sourceforge.net/xsh/' namespace. When listing the </td> </tr> <tr> <td class="h" > <a name="3039">3039</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> DOM tree using '[ls] --fold [xpath]', elements marked in this </td> </tr> <tr> <td class="h" > <a name="3040">3040</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> way are folded to a given depth (default is 0 = fold </td> </tr> <tr> <td class="h" > <a name="3041">3041</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> immediately). </td> </tr> <tr> <td class="h" > <a name="3042">3042</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3043">3043</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> The option '--depth' (':d') may be used to specify the depth </td> </tr> <tr> <td class="h" > <a name="3044">3044</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> at which subtrees of given elements are to be folded. </td> </tr> <tr> <td class="h" > <a name="3045">3045</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3046">3046</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> If called without arguments, the command applies to the </td> </tr> <tr> <td class="h" > <a name="3047">3047</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> current element, otherwise the [expression] is evaluated to </td> </tr> <tr> <td class="h" > <a name="3048">3048</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> the node-list and folding is applied to all elements within </td> </tr> <tr> <td class="h" > <a name="3049">3049</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> this node-list. </td> </tr> <tr> <td class="h" > <a name="3050">3050</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s">   </td> </tr> <tr> <td class="h" > <a name="3051">3051</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> Example: </td> </tr> <tr> <td class="h" > <a name="3052">3052</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> fold --depth 1 //chapter </td> </tr> <tr> <td class="h" > <a name="3053">3053</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> xsh> ls --fold //chapter[1] </td> </tr> <tr> <td class="h" > <a name="3054">3054</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <chapter id="intro" xsh:fold="1"> </td> </tr> <tr> <td class="h" > <a name="3055">3055</a> </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td >   </td> <td class="s"> <title>...
    3056             ...
    3057             ...
    3058            
    3059              
    3060             see also: unfold ls
    3061              
    3062             END
    3063              
    3064              
    3065             $HELP{'unfold'}=[<<'END'];
    3066             usage: unfold [expression]
    3067            
    3068             description:
    3069             This feature is still EXPERIMENTAL!
    3070              
    3071             Unfold command removes 'xsh:fold' attributes from all given
    3072             elements. Such attributes are usually created by previous
    3073             usage of [fold]. Be aware, that 'xmlns:xsh' namespace
    3074             declaration may still be present in the document even when all
    3075             elements are unfolded.
    3076              
    3077             see also: fold ls
    3078              
    3079             END
    3080              
    3081              
    3082             $HELP{'redo'}=[<<'END'];
    3083             usage: redo [[expression]]
    3084            
    3085             description:
    3086             'redo' restarts a loop block without evaluating the
    3087             conditional again. The optional [expression] argument may
    3088             evaluate to a positive integer number that indicates which
    3089             level of the nested loops should be restarted. If omitted, it
    3090             defaults to 1, i.e. the innermost loop.
    3091              
    3092             Using this command outside a loop causes an immediate run-time
    3093             error.
    3094              
    3095             Example: Restart a higher level loop from an inner one
    3096              
    3097             while ($i<100) {
    3098             # ...
    3099             foreach //para {
    3100             # some code
    3101             if $param {
    3102             redo; # redo foreach loop
    3103             } else {
    3104             redo 2; # redo while loop
    3105             }
    3106             }
    3107             }
    3108              
    3109             see also: foreach while iterate next last
    3110              
    3111             END
    3112              
    3113              
    3114             $HELP{'next'}=[<<'END'];
    3115             usage: next [[expression]]
    3116            
    3117             description:
    3118             'next' is like the continue statement in C; it starts the next
    3119             iteration of an enclosing loop. The command may be used with
    3120             an optional argument evaluating to a positive integer number
    3121             indicating which level of the nested loops should be
    3122             restarted. If the argument is omitted, it defaults to 1, i.e.
    3123             the innermost loop.
    3124              
    3125             Using this command outside a loop causes an immediate run-time
    3126             error.
    3127              
    3128             see also: foreach while iterate redo last prev
    3129              
    3130             END
    3131              
    3132              
    3133             $HELP{'prev'}=[<<'END'];
    3134             usage: prev [[expression]]
    3135            
    3136             description:
    3137             This command is only allowed inside an 'iterate' loop. It
    3138             returns the iteration one step back, to the previous node on
    3139             the iterated axis. The optional [expression] argument may be
    3140             used to indicate to which level of nested loops the command
    3141             applies to (default is 1).
    3142              
    3143             see also: iterate redo last next
    3144              
    3145             END
    3146              
    3147              
    3148             $HELP{'last'}=[<<'END'];
    3149             usage: last [[expression]]
    3150            
    3151             description:
    3152             The 'last' command is like the break statement in C (as used
    3153             in loops); it immediately exits an enclosing loop. The
    3154             optional [expression] argument may evaluate to a positive
    3155             integer number that indicates which level of the nested loops
    3156             to quit. If this argument is omitted, it defaults to 1, i.e.
    3157             the innermost loop.
    3158              
    3159             Using this command outside a loop causes an immediate run-time
    3160             error.
    3161              
    3162             see also: foreach while iterate next last
    3163              
    3164             END
    3165              
    3166              
    3167             $HELP{'return'}=[<<'END'];
    3168             usage: return [[expression]]
    3169            
    3170             description:
    3171             This command immediately stops the execution of a procedure it
    3172             occurs in and returns the execution to the place of the script
    3173             from which the subroutine was called. Optional argument may be
    3174             used as a return value for the subroutine call.
    3175              
    3176             Using this command outside a subroutine causes an immediate
    3177             run-time error.
    3178              
    3179             see also: def call
    3180              
    3181             END
    3182              
    3183              
    3184             $HELP{'throw'}=[<<'END'];
    3185             usage: throw [expression]
    3186            
    3187             description:
    3188             This command throws and exception containing error message
    3189             given by the obligatory [expression] argument. If the
    3190             exception is not handled by some surrounding [try] block, the
    3191             execution is stopped immediately and the error message is
    3192             printed.
    3193              
    3194             see also: try
    3195              
    3196             END
    3197              
    3198              
    3199             $HELP{'catalog'}=[<<'END'];
    3200             usage: catalog [filename]
    3201            
    3202             description:
    3203             Make use of a given XML file as a catalog during all parsing
    3204             processes. Using a catalog may significantly speed up parsing
    3205             processes if many external resources are loaded into the
    3206             parsed documents (such as DTDs or XIncludes).
    3207              
    3208             END
    3209              
    3210              
    3211             $HELP{'iterate'}=[<<'END'];
    3212             usage: iterate [xpath] [block]
    3213            
    3214             description:
    3215             Iterate works very much like a [foreach] loop with the same
    3216             [xpath] expression, except that it evaluates the [block] as
    3217             soon as a new node matching a given [xpath] is found. As a
    3218             limitation, an [xpath] expression used with 'iterate' may
    3219             consist of one XPath step only, i.e. it may not contain an
    3220             XPath step separator '/'.
    3221              
    3222             A possible benefit of using 'iterate' instead of [foreach] is
    3223             some efficiency when iterating over huge node-sets. Since
    3224             'iterate' doesn't compute the resulting node-set in advance,
    3225             it doesn't have to 1) allocate extra memory for it and 2)
    3226             (more importantly) doesn't have to sort the node-list in the
    3227             document order (which tends to be slow on large node-sets,
    3228             unless [index] is used). On the other hand, 'iterate' suffers
    3229             from a considerable speed penalty since it isn't implemented
    3230             in C (unlike libxml2's XPath engine).
    3231              
    3232             Author's experience shows that, unless [index] is used,
    3233             'iterate' beats [foreach] in speed on large node-lists (>=1500
    3234             nodes, but your milage may vary) while [foreach] wins on
    3235             smaller node-lists.
    3236              
    3237             The following two examples give equivalent results. However,
    3238             the one using 'iterate' may be faster if the number of nodes
    3239             being counted is huge and document order isn't indexed.
    3240              
    3241             Example: Count inhabitants of the kingdom of Rohan in productive age
    3242              
    3243             cd rohan/inhabitants;
    3244             iterate child::*[@age>=18 and @age<60] { perl $productive++ };
    3245             echo "$productive inhabitants in productive age";
    3246              
    3247             Example: Using XPath
    3248              
    3249             $productive=count(rohan/inhabitants/*[@age>=18 and @age<60]);
    3250             echo "$productive inhabitants in productive age";
    3251              
    3252             Hint: use e.g. '| time cut' pipe-line redirection to benchmark
    3253             a XSH2 command on a UNIX system.
    3254              
    3255             see also: foreach index next prev last
    3256              
    3257             END
    3258              
    3259              
    3260             $HELP{'register-namespace'}=[<<'END'];
    3261             usage: register-namespace [expression] [expression]
    3262            
    3263             aliases: regns
    3264              
    3265             description:
    3266             Registers the first argument as a prefix for the namespace
    3267             given in the second argument. The prefix can later be used in
    3268             XPath expressions.
    3269              
    3270             END
    3271              
    3272             $HELP{'regns'}=$HELP{'register-namespace'};
    3273              
    3274             $HELP{'unregister-namespace'}=[<<'END'];
    3275             usage: unregister-namespace [expression]
    3276            
    3277             aliases: unregns
    3278              
    3279             description:
    3280             Unregisters given namespace prefix previously registered using
    3281             [register-namespace]. The prefix can no longer be used in
    3282             XPath expressions unless declared within the current scope of
    3283             the queried document.
    3284              
    3285             END
    3286              
    3287             $HELP{'unregns'}=$HELP{'unregister-namespace'};
    3288              
    3289             $HELP{'register-xhtml-namespace'}=[<<'END'];
    3290             usage: register-xhtml-namespace [expression]
    3291            
    3292             aliases: regns-xhtml
    3293              
    3294             description:
    3295             Registers a prefix for the XHTML namespace
    3296             'http://www.w3.org/1999/xhtml'. The prefix can later be used
    3297             in XPath expressions.
    3298              
    3299             END
    3300              
    3301             $HELP{'regns-xhtml'}=$HELP{'register-xhtml-namespace'};
    3302              
    3303             $HELP{'register-xsh-namespace'}=[<<'END'];
    3304             usage: register-xsh-namespace [expression]
    3305            
    3306             aliases: regns-xsh
    3307              
    3308             description:
    3309             Registers a new prefix for the XSH2 namespace
    3310             'http://xsh.sourceforge.net/xsh/'. The prefix can later be
    3311             used in XPath expressions. Note, that XSH2 namespace is by
    3312             default registered with the prefix 'xsh'. This command is
    3313             thus, in general, useful only when some document uses 'xsh'
    3314             prefix for a different namespace or if you want a shorter
    3315             prefix.
    3316              
    3317             END
    3318              
    3319             $HELP{'regns-xsh'}=$HELP{'register-xsh-namespace'};
    3320              
    3321             $HELP{'register-function'}=[<<'END'];
    3322             usage: register-function [expression] [perl-code]
    3323            
    3324             aliases: function regfunc
    3325              
    3326             description:
    3327             EXPERIMENTAL!
    3328              
    3329             Registers a given perl code as a new XPath extension function
    3330             under a name provided in the first argument. XML::LibXML DOM
    3331             API as well as all Perl functions pre-defined in the
    3332             XML::XSH2::Map namespace may be used in the perl code for
    3333             object processing. If the name contains a colon, then the
    3334             first part before the colon must be a registered namespace
    3335             prefix (see [register-namespace]) and the function is
    3336             registered within the corresponding namespace.
    3337              
    3338             END
    3339              
    3340             $HELP{'function'}=$HELP{'register-function'};
    3341             $HELP{'regfunc'}=$HELP{'register-function'};
    3342              
    3343             $HELP{'unregister-function'}=[<<'END'];
    3344             usage: unregister-function [expression]
    3345            
    3346             aliases: unregfunc
    3347              
    3348             description:
    3349             EXPERIMENTAL! Unregister XPath extension function of a given
    3350             name previously registered using [register-function].
    3351              
    3352             END
    3353              
    3354             $HELP{'unregfunc'}=$HELP{'unregister-function'};
    3355              
    3356             $HELP{'stream'}=[<<'END'];
    3357             usage: stream [ --input-file|:f [filename] |
    3358             --input-pipe|:p [filename] |
    3359             --input-string|:s [expression]]
    3360             [ --output-file|:F [filename] |
    3361             --output-pipe|:P [filename] |
    3362             --output-string|:S [$variable] |
    3363             --no-output|:N ]
    3364             select [xpath] [block]
    3365             [ select [xpath] [block] ... ]
    3366            
    3367             description:
    3368             EXPERIMENTAL! This command provides a memory efficient (though
    3369             slower) way to process selected parts of an XML document with
    3370             XSH2. A streaming XML parser (SAX parser) is used to parse the
    3371             input. The parser has two states which will be referred to as
    3372             A and B below. The initial state of the parser is A.
    3373              
    3374             In the state A, only a limited vertical portion of the DOM
    3375             tree is built. All XML data coming from the input stream other
    3376             than start-tags are immediately copied to the output stream.
    3377             If a new start-tag of an element arrives, a new node is
    3378             created in the tree. All siblings of the newly created node
    3379             are removed. Thus, in the state A, there is exactly one node
    3380             on every level of the tree. After a node is added to the tree,
    3381             all the [xpath] expressions following the 'select' keyword are
    3382             checked. If none matches, the parser remains in state A and
    3383             copies the start-tag to the output stream. Otherwise, the
    3384             first expression that matches is remembered and the parser
    3385             changes its state to B.
    3386              
    3387             In state B the parser builds a complete DOM subtree of the
    3388             element that was last added to the tree before the parser
    3389             changed its state from A to B. No data are sent to the output
    3390             at this stage. When the subtree is complete (i.e. the
    3391             corresponding end-tag for its topmost element is encountered),
    3392             the [block] of instructions following the [xpath] expression
    3393             that matched is invoked with the root element of the subtree
    3394             as the current context node. The commands in [block] are
    3395             allowed to transform the whole element subtree or even to
    3396             replace it with a different DOM subtree or subtrees. They
    3397             must, however, leave intact all ancestor nodes of the subtree.
    3398             Failing to do so can result in an error or unpredictable
    3399             results.
    3400              
    3401             After the subtree processing [block] returns, all subtrees
    3402             that now appear in the DOM tree in the place of the original
    3403             subtree are serialized to the output stream. After that, they
    3404             are deleted and the parser returns to state A.
    3405              
    3406             Note that this type of processing highly limits the amount of
    3407             information the selecting XPath expressions can use. The first
    3408             notable fact is, that elements can not be selected by their
    3409             content. The only information present in the tree at the time
    3410             of the XPath evaluation is the element's name and attributes
    3411             plus the same information for all its ancestors (there is no
    3412             information at all about its possible child nodes nor of the
    3413             node's position within the list of its siblings).
    3414              
    3415             The input parameters below are mutually exclusive. If non is
    3416             given, standard input is processed.
    3417              
    3418             '--input-file' or ':f' instructs the processor to stream from
    3419             a given file.
    3420              
    3421             '--input-pipe' or ':p' instructs the processor to stream the
    3422             output of a given a command.
    3423              
    3424             '--input-string' or ':s' instructs the processor to use the
    3425             result of a given expression as the input to be processed.
    3426              
    3427             The output parameters below are mutually exclusive. If none is
    3428             given, standard output is used.
    3429              
    3430             '--output-file' or ':F' instructs the processor to save the
    3431             output to a given file.
    3432              
    3433             '--output-pipe' or ':P' instructs the processor to pipe the
    3434             output to a given command.
    3435              
    3436             '--output-string' or ':S' followed by a variable name
    3437             instructs the processor to store the result in the given
    3438             variable.
    3439              
    3440             '--no-output' or ':N' instructs the processor to throw the
    3441             result away.
    3442              
    3443             END
    3444              
    3445              
    3446             $HELP{'namespaces'}=[<<'END'];
    3447             usage: namespaces [--registered|:r] [[expression]]
    3448            
    3449             description:
    3450             For each node in a given node-list lists all namespaces that
    3451             are valid the scope of the node. Namespaces are listed in the
    3452             form of 'xmlns:prefix="uri"' declarations, preceded by a
    3453             canonical xpath of the corresponding node on a separate line.
    3454              
    3455             If '--registered' or ':r' flag is used, list also namespaces
    3456             registered with the [register-namespace] command in XSH
    3457             syntax.
    3458              
    3459             If called without the '--registered' flag and no [xpath] is
    3460             given, lists namespaces in the scope of the current node.
    3461              
    3462             END
    3463              
    3464              
    3465             $HELP{'xpath-completion'}=[<<'END'];
    3466             usage: xpath-completion [expression]
    3467            
    3468             aliases: xpath_completion
    3469              
    3470             description:
    3471             If the [expression] is non-zero, enable the TAB completion for
    3472             [xpath] expansions in the interactive shell mode, disable it
    3473             otherwise. Defaults to on.
    3474              
    3475             This command is equivalent to setting the '$XPATH_COMPLETION'
    3476             variable.
    3477              
    3478             END
    3479              
    3480             $HELP{'xpath_completion'}=$HELP{'xpath-completion'};
    3481              
    3482             $HELP{'xpath-axis-completion'}=[<<'END'];
    3483             usage: xpath-axis-completion [expression]
    3484            
    3485             aliases: xpath_axis_completion
    3486              
    3487             description:
    3488             The following values are allowed: 'always', 'never',
    3489             'when-empty'. Note, that all other values (including 1) work
    3490             as 'never'!
    3491              
    3492             If the [expression] evaluates to 'always', TAB completion for
    3493             XPath expressions always includes axis names.
    3494              
    3495             If the [expression] evaluates to 'when-empty', the TAB
    3496             completion list for XPath expressions includes axis names only
    3497             if no element name matches the completion.
    3498              
    3499             If the [expression] evaluates to 'never', the TAB completion
    3500             list for XPath expressions never includes axis names.
    3501              
    3502             The default value for this option is 'always'.
    3503              
    3504             This command is equivalent to setting the
    3505             '$XPATH_AXIS_COMPLETION' variable.
    3506              
    3507             END
    3508              
    3509             $HELP{'xpath_axis_completion'}=$HELP{'xpath-axis-completion'};
    3510              
    3511             $HELP{'doc-info'}=[<<'END'];
    3512             usage: doc-info [[document]]
    3513            
    3514             aliases: doc_info
    3515              
    3516             description:
    3517             In the present implementation, this command displays
    3518             information provided in the '' declaration of a
    3519             document: 'version, encoding, standalone', plus information
    3520             about level of 'gzip' compression of the original XML file and
    3521             the original XML file URI.
    3522              
    3523             see also: set-enc set-standalone
    3524              
    3525             END
    3526              
    3527             $HELP{'doc_info'}=$HELP{'doc-info'};
    3528              
    3529             $HELP{'xpath-extensions'}=[<<'END'];
    3530             usage: xpath-extensions [[expression]]
    3531            
    3532             aliases: xpath_extensions
    3533              
    3534             description:
    3535             'xpath-extensions' remaps all extra XPath extension functions
    3536             provided by XSH2 (which by default belong to the namespace
    3537             'http://xsh.sourceforge.net/xsh/') to a new namespace given by
    3538             [expression]. If the argument is omitted, the functions are
    3539             re-registered without any namespace, so that they may be
    3540             called without a namespace prefix, just by their function
    3541             names. This quite convenient.
    3542              
    3543             Example:
    3544             xpath-extensions;
    3545             ls grep(//word,"^.*tion$");
    3546              
    3547             see also: set-enc set-standalone
    3548              
    3549             END
    3550              
    3551             $HELP{'xpath_extensions'}=$HELP{'xpath-extensions'};
    3552              
    3553             $HELP{'lineno'}=[<<'END'];
    3554             usage: lineno [[expression]]
    3555            
    3556             description:
    3557             'lineno' command prints line numbers of all nodes in a given
    3558             node-list. Note however, that 'libxml2' only stores line
    3559             number information for element nodes.
    3560              
    3561             see also: locate
    3562              
    3563             END
    3564              
    3565              
    3566             $HELP{'edit-string'}=[<<'END'];
    3567             usage: edit-string [--editor|:E [filename]]
    3568             [--encoding|:e [encoding]]
    3569             [--allow-empty|:0] [expression]
    3570            
    3571             description:
    3572             Evaluating given [expression] to a string, save it in a
    3573             temporary file, open the file an external editor as a plain
    3574             text, and when the editor exits, read and return the result.
    3575             The '--editor' (':E') parameter can be used to provide an
    3576             editor command, whereas '--encoding' (':e') can be used to
    3577             specify character encoding used for communication with the
    3578             editor. If the result is empty, the interactive XSH2 shell
    3579             asks user for confirmation before returning the result in
    3580             order to prevent data loss due to some unexpected error. To
    3581             suppress this feature, use '--allow-empty' or ':0' flag.
    3582              
    3583             END
    3584              
    3585              
    3586             $HELP{'edit'}=[<<'END'];
    3587             usage: edit [--editor|:E [filename]]
    3588             [--all|:A] [--noindent|:n] [--recover|:r] [--keep-blanks|:k]
    3589             [--allow-empty|:0] [--no-coment|:q] [--encoding|:e [encoding]] [expression]
    3590            
    3591             description:
    3592             This command may be used to interactively edit parts of a XML
    3593             document directly in your favorite editor.
    3594              
    3595             A given [expression] is evaluated to a node-list and the first
    3596             the first resulting node is opened in an external editor as a
    3597             XML fragment. When the editor exits, the (possibly modified)
    3598             fragment is parsed and returned to the original document.
    3599             Unless '--no-comment' (':q') flag is used, the XML fragment is
    3600             preceded with a XML comment specifying canonical XPath of the
    3601             node being edited.
    3602              
    3603             The command returns a node-list consisting of nodes that
    3604             resulted from parsing the individual edits.
    3605              
    3606             '--editor' or ':E' option may be used to specify external
    3607             editor command. If not specified, environment variables
    3608             'EDITOR' and 'VISUAL' are tried first, then 'vi' editor is
    3609             used as a fallback.
    3610              
    3611             If '--all' or ':A' flag is present, all nodes from the
    3612             node-list are opened in the editor, one at a time.
    3613              
    3614             If '--recover' or ':r' is specified, the parser tries to
    3615             recover from possible syntax errors when parsing the resulting
    3616             XML.
    3617              
    3618             '--keep-blanks' or ':b' option may be used to force the parser
    3619             to include ignorable white space.
    3620              
    3621             If the result saved by the editor is empty, the interactive
    3622             XSH2 shell asks user to confirm this was correct. This
    3623             confirmation can be suppressed using '--allow-empty' or ':0'
    3624             (zero) options.
    3625              
    3626             The '--encoding' or ':e' parameter can be used to specify
    3627             character encoding to use when communicating with the external
    3628             editor.
    3629              
    3630             Example: Edit all chapter elements (one by one) with emacs
    3631              
    3632             edit --editor 'emacs -nw' --encoding iso-8859-1 --all //chapter
    3633              
    3634             END
    3635              
    3636              
    3637             $HELP{'xsh:doc'}=[<<'END'];
    3638             usage: node-set xsh:doc(node-set)
    3639            
    3640             description:
    3641             Returns a node-set consisting of the owner document nodes of
    3642             all nodes in the given node-set.
    3643              
    3644             END
    3645              
    3646              
    3647             $HELP{'xsh:document-uri'}=[<<'END'];
    3648             usage: string xsh:document-uri(node-set?)
    3649            
    3650             description:
    3651             Returns URI of the document containing the first node in the
    3652             given node-set. If called without arguments, or if the
    3653             node-set is empty, returns filename of the document containing
    3654             the current node.
    3655              
    3656             END
    3657              
    3658              
    3659             $HELP{'xsh:filename'}=[<<'END'];
    3660             usage: string xsh:filename(node-set?)
    3661            
    3662             description:
    3663             Same as xsh:document-uri();
    3664              
    3665             END
    3666              
    3667              
    3668             $HELP{'xsh:base-uri'}=[<<'END'];
    3669             usage: string xsh:base-uri(node-set?)
    3670            
    3671             description:
    3672             Returns base URI of the first node in the node-set (or the
    3673             current node). The function should work on both XML and HTML
    3674             documents even if base mechanisms for these are completely
    3675             different. It returns the base as defined in RFC 2396 sections
    3676             "5.1.1. Base URI within Document Content" and "5.1.2. Base URI
    3677             from the Encapsulating Entity". However it does not return the
    3678             document base (5.1.3), use document-uri() for this.
    3679              
    3680             END
    3681              
    3682              
    3683             $HELP{'xsh:resolve-uri'}=[<<'END'];
    3684             usage: string xsh:resolve-uri(string, string?)
    3685            
    3686             description:
    3687             This function takes one or two arguments: a relative URI and
    3688             an optional base URI. If the first argument is a relative URI
    3689             reference, this function resolves it against either the given
    3690             base URI, if given (which is assumed to be an absolute URI)
    3691             or, if base URI not given, against the URI of the current
    3692             working directory. If the first argument is an absolute URI
    3693             reference, it is returned unchanged.
    3694              
    3695             If the first argument is the zero-length string, returns the
    3696             base URI if given and the URI of the current working directory
    3697             otherwise.
    3698              
    3699             Note: Resolving a URI does not dereference it (download the
    3700             referenced content); it is merely a syntactic operation on two
    3701             character strings.
    3702              
    3703             END
    3704              
    3705              
    3706             $HELP{'xsh:lineno'}=[<<'END'];
    3707             usage: node-set xsh:lineno(node-set)
    3708            
    3709             description:
    3710             Returns line number of the occurrence of the first node in the
    3711             given node-set in its original XML document (if available).
    3712              
    3713             END
    3714              
    3715              
    3716             $HELP{'xsh:var'}=[<<'END'];
    3717             usage: node-set xsh:var(string NAME)
    3718            
    3719             description:
    3720             Returns a node-set consisting of nodes stored in a XSH2
    3721             node-list variable named 'NAME'.
    3722              
    3723             END
    3724              
    3725              
    3726             $HELP{'xsh:matches'}=[<<'END'];
    3727             usage: boolean xsh:matches(string STR,string PATTERN)
    3728            
    3729             description:
    3730             Returns 'true' if 'STR' matches the regular expression
    3731             'PATTERN'. Otherwise returns 'false'.
    3732              
    3733             END
    3734              
    3735              
    3736             $HELP{'xsh:match'}=[<<'END'];
    3737             usage: node-set xsh:match(string STR,string PATTERN,string OPTIONS)
    3738            
    3739             description:
    3740             Searches a given string for a pattern match specified by a
    3741             regular expression 'PATTERN' and returns a node-set consisting
    3742             of '' elements containing portions of the string
    3743             matched by the pattern subexpressions enclosed in parentheses.
    3744             The OPTIONS string may contain the following flags: 'c' - do
    3745             not reset search position on a failed match when /g is in
    3746             effect; 'g' - match globally, i.e. find all occurrences; 'i' -
    3747             do case insensitive search; 'm' - treat string as multiple
    3748             lines (change "^" and "$" from matching the start or end of
    3749             the string to matching the start or end of any line anywhere
    3750             within the string) 'o' - compile pattern only once; 's' -
    3751             treat string as single line (change "." to match any character
    3752             whatsoever, even a newline, which normally it would not
    3753             match); 'x' - extend your pattern's legibility by permitting
    3754             whitespace and comments.
    3755              
    3756             END
    3757              
    3758              
    3759             $HELP{'xsh:grep'}=[<<'END'];
    3760             usage: node-set xsh:grep(node-set NODES, string PATTERN)
    3761            
    3762             description:
    3763             Returns a node set consisting of those nodes of 'NODES' whose
    3764             content (as returned by the built-in XPath function
    3765             'string()') matches the regular expression 'PATTERN'.
    3766              
    3767             END
    3768              
    3769              
    3770             $HELP{'xsh:substr'}=[<<'END'];
    3771             usage: string xsh:substr(string STR,float OFFSET,[float LENGTH])
    3772            
    3773             description:
    3774             Extracts a substring out of 'STR' and returns it. First
    3775             character is at offset 0.
    3776              
    3777             If 'OFFSET' is negative, starts that far from the end of the
    3778             string.
    3779              
    3780             If 'LENGTH' is omitted, returns everything to the end of the
    3781             string. If 'LENGTH' is negative, leaves that many characters
    3782             off the end of the string.
    3783              
    3784             If 'OFFSET' and 'LENGTH' specify a substring that is partly
    3785             outside the string, only the part within the string is
    3786             returned. If the substring is beyond either end of the string,
    3787             substr() returns empty string and produces a warning.
    3788              
    3789             END
    3790              
    3791              
    3792             $HELP{'xsh:reverse'}=[<<'END'];
    3793             usage: string xsh:reverse(string STR)
    3794            
    3795             description:
    3796             Returns a string value same as 'STR' but with all characters
    3797             in the opposite order.
    3798              
    3799             END
    3800              
    3801              
    3802             $HELP{'xsh:lc'}=[<<'END'];
    3803             usage: string xsh:lc(string STR)
    3804            
    3805             description:
    3806             Returns a lowercased version of 'STR'.
    3807              
    3808             END
    3809              
    3810              
    3811             $HELP{'xsh:uc'}=[<<'END'];
    3812             usage: string xsh:uc(string STR)
    3813            
    3814             description:
    3815             Returns a uppercased version of 'STR'.
    3816              
    3817             END
    3818              
    3819              
    3820             $HELP{'xsh:lcfirst'}=[<<'END'];
    3821             usage: string xsh:lcfirst(string STR)
    3822            
    3823             description:
    3824             Returns the value of 'STR' with the first character
    3825             lowercased.
    3826              
    3827             END
    3828              
    3829              
    3830             $HELP{'xsh:ucfirst'}=[<<'END'];
    3831             usage: string xsh:ucfirst(string STR)
    3832            
    3833             description:
    3834             Returns the value of 'STR' with the first character
    3835             uppercased.
    3836              
    3837             END
    3838              
    3839              
    3840             $HELP{'xsh:same'}=[<<'END'];
    3841             usage: bool xsh:same(node-set N1, node-set N2)
    3842            
    3843             description:
    3844             Returns 'true' if the given node sets both contain the same
    3845             node (in XPath, this can also be expressed as
    3846             'count(N1|N2)+count(N1)+count(N2)=3').
    3847              
    3848             END
    3849              
    3850              
    3851             $HELP{'xsh:max'}=[<<'END'];
    3852             usage: float xsh:max(object EXPRESSION, ...)
    3853            
    3854             description:
    3855             Returns the maximum of numeric values computed from given
    3856             'EXPRESSION'(s). If 'EXPRESSION' evaluates to a node-set,
    3857             string values of individual nodes are used.
    3858              
    3859             END
    3860              
    3861              
    3862             $HELP{'xsh:min'}=[<<'END'];
    3863             usage: float xsh:min(object EXPRESSION, ...)
    3864            
    3865             description:
    3866             Returns the minimum of numeric values computed from given
    3867             'EXPRESSION'(s). If 'EXPRESSION' evaluates to a node-set,
    3868             string values of individual nodes are used.
    3869              
    3870             END
    3871              
    3872              
    3873             $HELP{'xsh:strmax'}=[<<'END'];
    3874             usage: string xsh:strmax(object EXPRESSION, ...)
    3875            
    3876             description:
    3877             Returns a string value computed as the maximum (in
    3878             lexicographical order) of all string values computed from
    3879             given 'EXPRESSION'(s). If 'EXPRESSION' evaluates to a
    3880             node-set, string values of individual nodes are used.
    3881              
    3882             END
    3883              
    3884              
    3885             $HELP{'xsh:strmin'}=[<<'END'];
    3886             usage: string xsh:strmin(object EXPRESSION, ...)
    3887            
    3888             description:
    3889             Returns a string value computed as the minimum (in
    3890             lexicographical order) of all string values computed from
    3891             given 'EXPRESSION'(s). If 'EXPRESSION' evaluates to a
    3892             node-set, string values of individual nodes are used.
    3893              
    3894             END
    3895              
    3896              
    3897             $HELP{'xsh:sum'}=[<<'END'];
    3898             usage: float xsh:sum(object EXPRESSION, ...)
    3899            
    3900             description:
    3901             Returns the sum of numerical value computed from given
    3902             'EXPRESSION'(s). If 'EXPRESSION' evaluates to a node-set,
    3903             string values of individual nodes are used.
    3904              
    3905             END
    3906              
    3907              
    3908             $HELP{'xsh:join'}=[<<'END'];
    3909             usage: string xsh:join(string DELIM, object EXPRESSION,...)
    3910            
    3911             description:
    3912             Joins the separate string values computed from 'EXPRESSION'(s)
    3913             into a single string with fields separated by the value of
    3914             'DELIM', and returns that new string. If 'EXPRESSION'
    3915             evaluates to a node-set, joins string values of individual
    3916             nodes.
    3917              
    3918             END
    3919              
    3920              
    3921             $HELP{'xsh:subst'}=[<<'END'];
    3922             usage: string xsh:subst(string STR,string REGEXP,string
    3923             REPLACEMENT, [string OPTIONS])
    3924            
    3925             description:
    3926             Acts in the very same way as perl substitution operation
    3927             'STRING =~ s/REGEXP/REPLACEMENT/OPTIONS', returning the
    3928             resulting string. Searches a string for a pattern, and if
    3929             found, replaces that pattern with the replacement text. If the
    3930             'REPLACEMENT' string contains a '$' that looks like a
    3931             variable, the variable will be interpolated into the
    3932              
    3933             'REPLACEMENT' at run-time. Options are:
    3934              
    3935             'e' - evaluate 'REPLACEMENT' as a Perl expression,
    3936              
    3937             'g' - replace globally, i.e., all occurrences,
    3938              
    3939             'i' - do case-insensitive pattern matching,
    3940              
    3941             'm' - treat string as multiple lines, that is, change '^' and
    3942             '$' from matching the start or end of the string to matching
    3943             the start or end of any line anywhere within the string,
    3944              
    3945             's' - treat string as single line, that is, change '.' to
    3946             match any character whatsoever, even a newline, which normally
    3947             it would not match,
    3948              
    3949             'x' - use extended regular expressions.
    3950              
    3951             END
    3952              
    3953              
    3954             $HELP{'xsh:sprintf'}=[<<'END'];
    3955             usage: string xsh:sprintf(string FORMAT,object EXPRESSION,...)
    3956            
    3957             description:
    3958             Returns a string formatted by the usual 'printf' conventions
    3959             of the C library function 'sprintf' and 'sprintf' Perl
    3960             function.
    3961              
    3962             See C documentation for an explanation of the general
    3963             principles and Perl documentation for a list of supported
    3964             formatting conversions.
    3965              
    3966             END
    3967              
    3968              
    3969             $HELP{'xsh:serialize'}=[<<'END'];
    3970             usage: string xsh:serialize(node-set N,...)
    3971            
    3972             description:
    3973             Serializes nodes of given node-set(s) into XML strings and
    3974             returns concatenation of those strings.
    3975              
    3976             END
    3977              
    3978              
    3979             $HELP{'xsh:parse'}=[<<'END'];
    3980             usage: node-set xsh:parse(string XML-STRING)
    3981            
    3982             description:
    3983             This function runs XML parser on 'XML-STRING' and returns a
    3984             node-set consisting of the top-level nodes of the resulting
    3985             document node.
    3986              
    3987             END
    3988              
    3989              
    3990             $HELP{'xsh:current'}=[<<'END'];
    3991             usage: node-set xsh:current()
    3992            
    3993             description:
    3994             This function (very similar to XSLT 'current()' extension
    3995             function) returns a node-set having the current node as its
    3996             only member.
    3997              
    3998             END
    3999              
    4000              
    4001             $HELP{'xsh:path'}=[<<'END'];
    4002             usage: string xsh:path(node-set NODE)
    4003            
    4004             description:
    4005             This function returns a string containing canonical XPath
    4006             leading to 'NODE'.
    4007              
    4008             see also: pwd
    4009              
    4010             END
    4011              
    4012              
    4013             $HELP{'xsh:if'}=[<<'END'];
    4014             usage: object xsh:if(object CONDITION, object YES, object NO)
    4015            
    4016             description:
    4017             This function returns the 'YES' object if 'CONDITION' is an
    4018             non-empty node-set or a string, boolean or integer evaluating
    4019             to non-zero boolean. Otherwise the 'NO' object is returned.
    4020              
    4021             END
    4022              
    4023              
    4024             $HELP{'xsh:new-attribute'}=[<<'END'];
    4025             usage: node-set xsh:new-attribute(string NAME1,string
    4026             VALUE1,[string NAME2, string VALUE2, ...])
    4027            
    4028             description:
    4029             Return a node-set consisting of newly created attribute nodes
    4030             with given names and respective values.
    4031              
    4032             END
    4033              
    4034              
    4035             $HELP{'xsh:new-element'}=[<<'END'];
    4036             usage: node-set xsh:new-element(string NAME,[string ATTR1-NAME1,
    4037             string ATTR-VALUE1, ...])
    4038            
    4039             description:
    4040             Create a new element node with given 'NAME' and optionally
    4041             attributes with given names and values and return a node-set
    4042             containing the new node as its only member.
    4043              
    4044             END
    4045              
    4046              
    4047             $HELP{'xsh:new-element-ns'}=[<<'END'];
    4048             usage: node-set xsh:new-element-ns(string NAME,string NS,[string ATTR1-NAME1,
    4049             string ATTR-VALUE1, ...])
    4050            
    4051             description:
    4052             Create a new element node with given 'NAME' and namespace-uri
    4053             'NS' and optionally attributes with given names and values and
    4054             return a node-set containing the new node as its only member.
    4055              
    4056             END
    4057              
    4058              
    4059             $HELP{'xsh:new-text'}=[<<'END'];
    4060             usage: node-set xsh:new-text(string DATA)
    4061            
    4062             description:
    4063             Create a new text node containing given 'DATA' and return a
    4064             node-set containing the new node as its only member.
    4065              
    4066             END
    4067              
    4068              
    4069             $HELP{'xsh:new-comment'}=[<<'END'];
    4070             usage: node-set xsh:new-comment(string DATA)
    4071            
    4072             description:
    4073             Create a new comment node containing given 'DATA' and return a
    4074             node-set containing the new node as its only member.
    4075              
    4076             END
    4077              
    4078              
    4079             $HELP{'xsh:new-pi'}=[<<'END'];
    4080             usage: node-set xsh:new-pi(string NAME, [string DATA])
    4081            
    4082             description:
    4083             Create a new processing instruction node node with given
    4084             'NAME' and (optionally) given 'DATA' and return a node-set
    4085             containing the new node as its only member.
    4086              
    4087             END
    4088              
    4089              
    4090             $HELP{'xsh:new-cdata'}=[<<'END'];
    4091             usage: node-set xsh:new-cdata(string DATA)
    4092            
    4093             description:
    4094             Create a new cdata section node node filled with given 'DATA'
    4095             and return a node-set containing the new node as its only
    4096             member.
    4097              
    4098             END
    4099              
    4100              
    4101             $HELP{'xsh:new-chunk'}=[<<'END'];
    4102             usage: node-set xsh:new-chunk(string XML)
    4103            
    4104             description:
    4105             This is just an alias for [xsh:parse]. It parses given piece
    4106             of XML and returns a node-set consisting of the top-level
    4107             element within the parsed tree.
    4108              
    4109             END
    4110              
    4111              
    4112             $HELP{'xsh:map'}=[<<'END'];
    4113             usage: node-set xsh:map(node-set NODE, string XPATH)
    4114            
    4115             description:
    4116             This function is very similar to EXSLT 'dynamic:map' function.
    4117             The description below is almost literally taken from the EXSLT
    4118             specification.
    4119              
    4120             The 'xsh:map' function evaluates the expression passed as the
    4121             second argument for each of the nodes passed as the first
    4122             argument, and returns a node-set of those values.
    4123              
    4124             The expressions are evaluated relative to the nodes passed as
    4125             the first argument. In other words, the value for each node is
    4126             calculated by evaluating the XPath expression with all context
    4127             information being the same as that for the call to the
    4128             'xsh:map' function itself, except for the following:
    4129              
    4130             1) the context node is the node whose value is being
    4131             calculated, 2) the context position is the position of the
    4132             node within the node set passed as the first argument to the
    4133             'xsh:map' function, arranged in document order, and 3) the
    4134             context size is the number of nodes passed as the first
    4135             argument to the dyn:map function.
    4136              
    4137             If the expression string passed as the second argument is an
    4138             invalid XPath expression (including an empty string), this
    4139             function returns an empty node set.
    4140              
    4141             If 'XPATH' evaluates as a node set, the 'xsh:map' function
    4142             returns the union of the node sets returned by evaluating the
    4143             expression for each of the nodes in the first argument. Note
    4144             that this may mean that the node set resulting from the call
    4145             to the 'xsh:map' function contains a different number of nodes
    4146             from the number in the node set passed as the first argument
    4147             to the function.
    4148              
    4149             If 'XPATH' evaluates as a number, the 'xsh:map' function
    4150             returns a node set containing one 'xsh:number' element
    4151             (namespace 'http://xsh.sourceforge.net/xsh/') for each node in
    4152             the node set passed as the first argument to the dyn:map
    4153             function, in document order. The string value of each
    4154             'xsh:number' element is the same as the result of converting
    4155             the number resulting from evaluating the expression to a
    4156             string as with the number function, with the exception that
    4157             Infinity results in an 'xsh:number' holding the highest number
    4158             the implementation can store, and -Infinity results in an
    4159             'xsh:number' holding the lowest number the implementation can
    4160             store.
    4161              
    4162             If 'XPATH' evaluates as a boolean, the 'xsh:map' function
    4163             returns a node set containing one 'xsh:boolean' element
    4164             (namespace 'http://xsh.sourceforge.net/xsh/') for each node in
    4165             the node set passed as the first argument to the 'xsh:map'
    4166             function, in document order. The string value of each
    4167             'xsh:boolean' element is 'true' if the expression evaluates as
    4168             true for the node, and is empty if the expression evaluates as
    4169             false.
    4170              
    4171             Otherwise, the 'xsh:map' function returns a node set
    4172             containing one 'xsh:string' element (namespace
    4173             'http://xsh.sourceforge.net/xsh/') for each node in the node
    4174             set passed as the first argument to the 'xsh:map' function, in
    4175             document order. The string value of each 'xsh:string' element
    4176             is the same as the result of converting the result of
    4177             evaluating the expression for the relevant node to a string as
    4178             with the string function.
    4179              
    4180             see also: xsh:evaluate
    4181              
    4182             END
    4183              
    4184              
    4185             $HELP{'xsh:evaluate'}=[<<'END'];
    4186             usage: node-set xsh:evaluate(string XPATH)
    4187            
    4188             description:
    4189             This function is very similar to EXSLT 'dynamic:evaluate'
    4190             function. The description below is almost literally taken from
    4191             the EXSLT specification.
    4192              
    4193             The 'xsh:evaluate' function evaluates a string as an XPath
    4194             expression and returns the resulting value, which might be a
    4195             boolean, number, string, node set, result tree fragment or
    4196             external object. The sole argument is the string to be
    4197             evaluated.
    4198              
    4199             The string is always evaluated exactly as if it had been
    4200             literally included in place of the call to the 'xsh:evaluate'
    4201             function.
    4202              
    4203             In other words, the context information used when evaluating
    4204             the XPath expression passed as the argument to the
    4205             'xsh:evaluate' function is exactly the same as the context
    4206             information used when evaluating the 'xsh:evaluate' function.
    4207             This context information includes:
    4208              
    4209             1. the context node, such that paths are evaluated relative
    4210             to the context node at the point where the 'xsh:evaluate'
    4211             function is called
    4212              
    4213             2. the context position, such that the expression can
    4214             contain calls to the position function
    4215              
    4216             3. the context size, such that the expression can contain
    4217             calls to the last function
    4218              
    4219             4. variable bindings, such that the expression can contain
    4220             variable references
    4221              
    4222             5. function library, such that the expression can contain
    4223             calls to extension functions
    4224              
    4225             6. namespace declarations, such that paths can contain
    4226             prefixes the current node, such that the expression can
    4227             contain calls to the current function
    4228              
    4229             If the expression string passed as the second argument is an
    4230             invalid XPath expression (including an empty string), this
    4231             function returns an empty node set.
    4232              
    4233             You should only use this function if the expression must be
    4234             constructed dynamically - otherwise it is much more efficient
    4235             to use the expression literally. For expressions that simply
    4236             give an element or attribute's name (to select a child element
    4237             or attribute), it is more efficient to use an expression in
    4238             the style:
    4239              
    4240             *[name() = $expression]
    4241             see also: xsh:map
    4242              
    4243             END
    4244              
    4245              
    4246             $HELP{'xsh:split'}=[<<'END'];
    4247             usage: node-set xsh:split(string PATTERN, string STRING)
    4248            
    4249             description:
    4250             This function provides direct access to the very powerful Perl
    4251             function 'split'. It splits 'STRING' to a list of fields.
    4252             'PATTERN' is a regular expression specifying strings
    4253             delimiting individual fields of 'STRING'. If 'PATTERN' is
    4254             empty, 'STRING' is split to individual characters. If the
    4255             regular expression in 'PATTERN' is enclosed in brackets, then
    4256             strings matching 'PATTERN' are also included in the resulting
    4257             list.
    4258              
    4259             The function returns a node-set consisting of newly created
    4260             '' elements containing individual strings of the
    4261             resulting list as their only text child nodes.
    4262              
    4263             END
    4264              
    4265              
    4266             $HELP{'xsh:times'}=[<<'END'];
    4267             usage: node-set xsh:times(string STRING, float COUNT)
    4268            
    4269             description:
    4270             This function returns a string resulting from concatenation of
    4271             'COUNT' copies of 'STRING'. 'COUNT' must be a non-negative
    4272             integer value.
    4273              
    4274             END
    4275              
    4276              
    4277             $HELP{'xsh:id2'}=[<<'END'];
    4278             usage: node-set xsh:id2(node-set DOC, string IDs)
    4279            
    4280             description:
    4281             This function is like XPath built-in 'id(IDs)' function,
    4282             except that it operates on the document specified in the first
    4283             argument. It returns a node-set consisting of nodes that
    4284             belong to the document DOC and whose ID belongs to the list of
    4285             space separated IDs specified in the second argument.
    4286              
    4287             END
    4288              
    4289              
    4290             $HELP{'xsh:lookup'}=[<<'END'];
    4291             usage: node-set xsh:lookup(string VARNAME, string KEY)
    4292            
    4293             description:
    4294             This function is similar to XSLT 'key()' function. It returns
    4295             a node-set stored in a hash VARNAME under the key KEY. The
    4296             VARNAME must be a name of a lexical or global XSH variable
    4297             containing a Perl hash reference.
    4298              
    4299             see also: hash
    4300              
    4301             END
    4302              
    4303              
    4304             $HELP{'xsh:document'}=[<<'END'];
    4305             usage: node-set xsh:document(string URL)
    4306            
    4307             description:
    4308             Looks up among the currently open document the one whose
    4309             filename is same as the given URL and returns the
    4310             corresponding document node. If no document's filename matches
    4311             exactly the given URL, then several heuristic matches are
    4312             tried: if the URI is a relative filename, it is tilde-expanded
    4313             and resolved (using the current working directory as a base)
    4314             and the lookup is restarted with the absolute filename;
    4315             finally, a lookup identifying filenames with URLs of the
    4316             file:// protocol is attempted. If the lookup fails completely,
    4317             an empty node set is returned.
    4318              
    4319             see also: hash
    4320              
    4321             END
    4322              
    4323              
    4324             $HELP{'xsh:documents'}=[<<'END'];
    4325             usage: node-set xsh:documents()
    4326            
    4327             description:
    4328             Returns a node-set consisting of the document nodes of all
    4329             currently open documents.
    4330              
    4331             see also: hash
    4332              
    4333             END
    4334              
    4335              
    4336             $HELP{'xsh:span'}=[<<'END'];
    4337             usage: node-set xsh:span(node-set START,node-set END)
    4338            
    4339             description:
    4340             Returns a node-set which forms a span of sibling nodes
    4341             starting at START node and ending at END node (only the first
    4342             node of each of the nodesets is used). It is an error if the
    4343             START node and END node are not siblings.
    4344              
    4345             END
    4346              
    4347              
    4348             $HELP{'xsh:context'}=[<<'END'];
    4349             usage: node-set xsh:context(node-set NODE, float BEFORE, float AFTER)
    4350            
    4351             description:
    4352             Returns a node-set of sibling nodes surrounding NODE. The span
    4353             consists of (up to) BEFORE-many nodes immediately preceding
    4354             NODE, the NODE itself, and (up to) AFTER-many nodes
    4355             immediately following NODE. If the AFTER is not given, AFTER
    4356             is set equal to BEFORE.
    4357              
    4358             END
    4359              
    4360              
    4361             $HELP{'call'}=[<<'END'];
    4362             usage: call [expression] [[expression] ...]
    4363            
    4364             description:
    4365             Call a subroutine whose name is computed by evaluating the
    4366             first argument [expression]. All other expressions are
    4367             evaluated too and the results are passed to the subroutine as
    4368             arguments.
    4369              
    4370             This command should only be used if the name of the subroutine
    4371             isn't known at the compile time. Otherwise it is recommended
    4372             to use a direct subroutine call of the form:
    4373              
    4374             subroutine-name [argument1 argument2 ...]
    4375             Example:
    4376             def a $arg { echo "A says" $arg }
    4377             def b $arg { echo "B says" $arg }
    4378             a "hallo!"; # call subroutine a
    4379             b "hallo!"; # call subroutine b
    4380             call { chr(ord("a")+rand(2)) } "surprise!"; # call a or b randomly
    4381              
    4382             see also: def return
    4383              
    4384             END
    4385              
    4386              
    4387             $HELP{'Documents'}=[<<'END'];
    4388             Files/Documents
    4389             ---------------
    4390              
    4391             XSH2 is designed as an environment for querying and manipulating XML and
    4392             HTML documents. Use [open] or [create] commands to load an XML or HTML
    4393             document from a local file, external URL (such as http:// or ftp://),
    4394             string or pipe. XSH2 can optionally validate the document during parse
    4395             process (see [validation] and [load-ext-dtd]). Parsed documents are
    4396             stored in memory as DOM trees, that can be [navigated] and [manipulated]
    4397             with XSH2 commands and XPath language, whose names and syntax make
    4398             working with the DOM tree a flavor of working in a UNIX filesystem.
    4399              
    4400             A parsed document is usually stored in a variable. XSH2 shares variables
    4401             with the XPath engine, so if e.g. '$doc' is a XSH2 variable holding a
    4402             document (or, more generally any node-set), then '$doc//section/title' is
    4403             an XPath expression selecting all 'title' subelements of all 'section'
    4404             elements within the (sub)tree of $doc.
    4405              
    4406             Although XSH2 is able to parse remote documents via 'http://' or
    4407             'ftp://', it is only able to save them locally. To upload a document to a
    4408             remote server (e.g. using FTP) or to store it into a database, use [save]
    4409             command with a '--pipe' parameter, in connection with an external program
    4410             able to store its standard input (XML) to the desired location. You can
    4411             also use similar parameter with [open] in order to parse documents from
    4412             standard output of some external program.
    4413              
    4414             Example: Store a XSH2 document on a remote machine using the Secure Shell
    4415              
    4416             xsh> save --pipe "ssh my.remote.org 'cat > test.xml'" $doc
    4417              
    4418              
    4419             Related help items:
    4420             backups, catalog, clone, close, create, documents, index, nobackups,
    4421             open, process-xinclude, save, set_filename, stream,
    4422             switch-to-new-documents
    4423              
    4424             END
    4425              
    4426             $HELP{'Navigation'}=[<<'END'];
    4427             Tree navigation
    4428             ---------------
    4429              
    4430             With XSH2, it is possible to browse a [document tree] (XML data
    4431             represented as a DOM-tree) as if it was a local filesystem, except that
    4432             [XPath] expressions are used instead of ordinary directory paths.
    4433              
    4434             To mimic the filesystem navigation as closely as possible, XSH2 contains
    4435             several commands named by analogy of UNIX filesystem commands, such as
    4436             [cd], [ls] and [pwd].
    4437              
    4438             The current position in the document tree is called the current node.
    4439             Current node's XPath may be queried with [pwd] command. In the
    4440             interactive shell, current node is also displayed in the command line
    4441             prompt. (Since there may be multiple document trees open at the same
    4442             time, XSH2 tries to locate a variable holding the current document and
    4443             use it to fully qualify current node's XPath in the XSH2 prompt.)
    4444             Remember, that beside [cd] command, current node (and document) is also
    4445             silently changed by [open] command, [create] command and temporarily also
    4446             by the node-list variant of the [foreach] loop without a loop variable.
    4447              
    4448             XPath expressions are always evaluated in context of the current node.
    4449             Different documents can be accessed through variables: '$doc/foo[1]/bar'.
    4450              
    4451             Example: XSH2 shell
    4452              
    4453             $scratch:/> $docA := open "testA.xml"
    4454             $docA/> $docB := open "testB.xml"
    4455             $docB/> pwd
    4456             /
    4457             $docB/> cd $docA/article/chapter[title='Conclusion']
    4458             $docA/article/chapter[5]> pwd
    4459             /article/chapter[5]
    4460             $docA/article/chapter[5]> cd previous-sibling::chapter
    4461             $docA/article/chapter[4]> cd ..
    4462             $docA/article> cd $docB
    4463             $docB:/> ls
    4464            
    4465            
    ...
    4466              
    4467              
    4468             Related help items:
    4469             canonical, cd, fold, locate, ls, pwd, register-function, unfold,
    4470             unregister-function
    4471              
    4472             END
    4473              
    4474             $HELP{'Manipulation'}=[<<'END'];
    4475             Tree modification
    4476             -----------------
    4477              
    4478             XSH2 not only provides ways to browse and inspect the DOM tree but also
    4479             many commands to modify its content by various operations, such as
    4480             copying, moving, and deleting its nodes as well as creating completely
    4481             new nodes or XML fragments and attaching them to it. It is quite easy to
    4482             learn these commands since their names or aliases mimic their well-known
    4483             filesystem analogies. On the other hand, many of these commands have two
    4484             versions one of which is prefixed with a letter "x". This "x" stands for
    4485             "cross", thus e.g. [xcopy] should be read as "cross copy". Let's explain
    4486             the difference on the example of [xcopy].
    4487              
    4488             In a copy operation, you have to specify what nodes are to be copied and
    4489             where to, in other words, you have to specify the source and the target.
    4490             XSH2 is very much XPath-based so, XPath is used here to specify both of
    4491             them. However, there might be more than one node that satisfies an XPath
    4492             expression. So, the rule of thumb is that the "cross" variant of a
    4493             command places one and every of the source nodes to the location of one
    4494             and every destination node, while the plain variant works one-by-one,
    4495             placing the first source node to the first destination, the second source
    4496             node to the second destination, and so on (as long as there are both
    4497             source nodes and destinations left).
    4498              
    4499             Example:
    4500             $scratch/> $a := create "";
    4501             $a/> $b := create "";
    4502             $b/> xcopy $a//A replace $b//B;
    4503             $b/> copy $b//C before $a//A;
    4504             $b/> ls $a;
    4505            
    4506            
    4507            
    4508             $b/> ls $b;
    4509            
    4510            
    4511              
    4512             As already indicated by the example, another issue of tree modification
    4513             is the way in which the destination node determines the target location.
    4514             Should the source node be placed before, after, or somewhere among the
    4515             children of the resulting node? Or maybe, should it replace it
    4516             completely? This information has to be given in the [location] argument
    4517             that usually precedes the destination XPath.
    4518              
    4519             Now, what happens if source and destination nodes are of incompatible
    4520             types? XSH2 tries to avoid this by implicitly converting between node
    4521             types when necessary. For example, if a text, comment, and attribute node
    4522             is copied into, before or after an attribute node, the original value of
    4523             the attribute is replaced, prepended or appended respectively with the
    4524             textual content of the source node. Note however, that element nodes are
    4525             never converted into text, attribute or any other textual node. There are
    4526             many combinations here, so try yourself and see the results.
    4527              
    4528             You may even use some more sophisticated way to convert between node
    4529             types, as shown in the following example, where an element is first
    4530             commented out and than again uncommented. Note, that the particular
    4531             approach used for resurrecting the commented XML material works only for
    4532             well-balanced chunks of XML.
    4533              
    4534             Example: Using string variables to convert between different types of nodes
    4535              
    4536             $doc := create <
    4537            
    4538            
    4539            
    4540             Intro
    4541            
    4542            
    4543             Rest
    4544            
    4545            
    4546             EOF
    4547            
    4548             # comment out the first chapter
    4549             ls //chapter[1] |> $chapter_xml;
    4550             insert comment $chapter_xml replace //chapter[1];
    4551             ls / 0;
    4552             # OUTPUT:
    4553            
    4554            
    4555            
    4559            
    4560             Rest
    4561            
    4562            
    4563            
    4564            
    4565             # un-comment the chapter
    4566             $comment = string(//comment()[1]);
    4567             insert chunk $comment replace //comment()[1];
    4568             ls / 0;
    4569             # OUTPUT:
    4570            
    4571            
    4572            
    4573             Intro
    4574            
    4575            
    4576            
    4577             Rest
    4578            
    4579            
    4580              
    4581              
    4582             Related help items:
    4583             change-ns-prefix, change-ns-uri, clone, copy, declare-ns, edit,
    4584             edit-string, hash, insert, map, move, normalize, process-xinclude,
    4585             remove, rename, set, set-dtd, set-enc, set-ns, set-standalone, sort,
    4586             strip-whitespace, wrap, wrap-span, xcopy, xinsert, xmove, xslt, xupdate
    4587              
    4588             END
    4589              
    4590             $HELP{'Flow'}=[<<'END'];
    4591             Flow control
    4592             ------------
    4593              
    4594             As almost every scripting language, XSH2 supports subroutines, various
    4595             conditional statements, loops and even exceptions.
    4596              
    4597              
    4598             Related help items:
    4599             call, def, do, eval, exit, foreach, if, ifinclude, include, iterate,
    4600             last, next, prev, redo, return, run-mode, stream, test-mode, throw, try,
    4601             undef, unless, while
    4602              
    4603             END
    4604              
    4605             $HELP{'Information'}=[<<'END'];
    4606             Retrieving more information
    4607             ---------------------------
    4608              
    4609             Beside the possibility to browse the DOM tree and list some parts of it
    4610             (as described in [Navigation]), XSH2 provides commands to obtain other
    4611             information related to open documents as well as the XSH2 interpreter
    4612             itself. These commands are listed bellow.
    4613              
    4614              
    4615             Related help items:
    4616             apropos, canonical, count, defs, doc-info, documents, dtd, enc, get,
    4617             help, lineno, locate, ls, namespaces, print, pwd, settings, validate,
    4618             variables, version
    4619              
    4620             END
    4621              
    4622             $HELP{'Namespaces'}=[<<'END'];
    4623             Namespaces in XML and XPath
    4624             ---------------------------
    4625              
    4626             Namespaces provide a simple method for qualifying element and attribute
    4627             names in XML documents. Namespaces are represented by a namespace URI
    4628             but, since the URI can be very long, element and attribute names are
    4629             associated with a namespace using a namespace prefix (see the W3C
    4630             recommendation for details). In an XML document, a prefix can be
    4631             associated with a namespace URI using a declaration which takes form of
    4632             special attribute of the form 'xmlns:prefix="namespace uri"' on an
    4633             element. The scope of the namespace declaration is then the subtree of
    4634             the element carrying the special 'xmlns:prefix' attribute (and includes
    4635             attributes of the element). Moreover, a default namespace can be declared
    4636             using just 'xmlns="namespace uri"'. In that case all unprefixed element
    4637             names in the scope of such a declaration belong to the namespace. An
    4638             unprefixed element which is not in scope of a default namespace
    4639             declaration does not belong to any namespace. It is recommended not to
    4640             combine namespaced elements and non-namespaced elements in a single
    4641             document. Note that regardless of default namespace declarations,
    4642             unprefixed attributes do not belong to any namespace (because they are
    4643             uniquely determined by their name and the namespace and name of the the
    4644             element which carries them).
    4645              
    4646             XSH2 tries to deal namespace declarations transparently (creating them if
    4647             necessary when nodes are copied between different documents or scopes of
    4648             namespace declarations). Most commands which create new elements or
    4649             attributes provide means to indicate a namespace. In addition, XSH2
    4650             provides commands [declare-ns], [set-ns], [change-ns-uri], and
    4651             [change-ns-prefix] to directly manipulate XML namespace declarations on
    4652             the current node.
    4653              
    4654             Since XSH2 is heavily XPath-based, it is important to remember that XPath
    4655             1.0 maps prefixes to namespaces independently of the declarations in the
    4656             current document. The mapping is instead provided via so called XPath
    4657             context. Namespaces can be tested in XPath either using the built-in
    4658             'namespace-uri()' function, but it is more convenient to use namespace
    4659             prefixes associated with namespace URIs in the XPath context. This
    4660             association is independent of the documents to which the XPath expression
    4661             is applied and can be established using the command [register-namespace].
    4662             Additional, XSH2 automatically propagates the namespace association in
    4663             the scope of the current node to the XPath context, so that per-document
    4664             prefixes in the current scope can also be used.
    4665              
    4666             IMPORTANT: XPath 1.0 has no concept of a default namespace. Unprefixed
    4667             names in XPath only match names which have no namespace. So, if the
    4668             document uses a default namespace, it is required to associate a
    4669             non-empty prefix with the default namespace via [register-namespace] and
    4670             add that prefix to names in XPath expressions intended to match nodes in
    4671             the default namespace.
    4672              
    4673             Example: Manipulating nodes in XHTML documents
    4674              
    4675             open "index.xhtml";
    4676             $xhtmlns = "http://www.w3.org/1999/xhtml";
    4677             register-namespace x $xhtmlns;
    4678             wrap --namespace $xhtmlns '' //x:a[@href];
    4679             # or
    4680             wrap '' //x:a[@href];
    4681              
    4682             In the preceding example we associate the (typically default) namespace
    4683             of XHTML documents with the prefix 'x'. We than use this prefix to match
    4684             all links ('a' elements) in the document. Note that we do not write
    4685             '@x:href' to match the '@href' attribute because unprefixed attributes do
    4686             not belong to the default namespace. The [wrap] command is used to create
    4687             new containing elements for the nodes matched by the XPath expression. We
    4688             may either specify the namespace of the containing element explicitly,
    4689             using '--namespace' option, or implicitly, by using a prefix associated
    4690             with the namespace in the XPath context. In the latter case, XSH2 chooses
    4691             a suitable prefix declared for the namespace in the document scope (in
    4692             this case the default, i.e. no, prefix), adding a new namespace
    4693             declaration if necessary.
    4694              
    4695              
    4696             Related help items:
    4697             change-ns-prefix, change-ns-uri, declare-ns, namespaces,
    4698             register-namespace, register-xhtml-namespace, register-xsh-namespace,
    4699             set-ns, unregister-namespace
    4700              
    4701             END
    4702              
    4703             $HELP{'Argtypes'}=[<<'END'];
    4704             Argument Types
    4705             --------------
    4706              
    4707             XSH2 commands accept arguments of various types, usually expressed as
    4708             Perl or XPath [expression]s. Unlike in most languages, individual XSH2
    4709             commands may evaluate the same expression differently, usually to enforce
    4710             a result of a certain type (such as a node-list, a string, a number, a
    4711             filename, a node name, etc.). See [expression] and individual argument
    4712             types for more information.
    4713              
    4714             END
    4715              
    4716             $HELP{'Variables'}=[<<'END'];
    4717             Variables
    4718             ---------
    4719              
    4720             In XSH2, like in Perl and XPath, [variable names] are are prefixed with a
    4721             dollar sign ($). Variables can contain arbitrary Perl Scalar (string,
    4722             number, array reference, hash reference or an object reference). XPath
    4723             objects are transparently mapped to Perl objects via XML::LibXML objects.
    4724             Values can be assigned to variables either by simple [assignments] of the
    4725             form '$variable = [expression]', where the right hand side is an
    4726             expression, or by command [assignments] of the form '$variable :=
    4727             [command]', where the right hand side is a XSH2 command, or by capturing
    4728             the output of some command with a variable redirection of the following
    4729             form:
    4730              
    4731             command |> $variable;
    4732             XSH2 expressions are evaluated either by XPath engine or by Perl (the
    4733             latter only happens if the entire expression is enclosed with braces
    4734             '{...}'), and both Perl and XPath can access all XSH2 variables
    4735             transparently (Perl expressions may even assign to them).
    4736              
    4737             A simple simple expression consisting of a variable name (e.g.
    4738             '$variable') is always evaluated by the XPath engine and the result is
    4739             the content of the variable as it appears to the XPath data model. Since
    4740             in XPath object cannot be void (undefined), XPath engine complains, if
    4741             the value of the variable is undefined. On the other hand, expressions
    4742             like '{$variable}' are evaluated by Perl, which results in the value of
    4743             the variable as seen by Perl.
    4744              
    4745             Variables can also be used as macros for complicated XPath expressions.
    4746             Any occurrence of a substring of the form '${variable}' in an XPath
    4747             expression is interpolated to the value of '$variable' (if '$variable'
    4748             contains an object rather than a string or number, then the object is
    4749             cast to string first) before the entire expression is evaluated. So, for
    4750             example, if '${variable}' contains string "'chapter[title]'" (without the
    4751             quotes), then the XPath expression '//sect1/${variable}/para'
    4752             interpolates to '//sect1/chapter[title]/para' prior to evaluation.
    4753              
    4754             To display the current value of a variable, use either [print] or (in
    4755             case of a global variables - the distinction is discussed below) the
    4756             command [variables]:
    4757              
    4758             Example:
    4759             xsh> $b="my_document";
    4760             xsh> $file="${b}s.xml";
    4761             xsh> $f := open $file;
    4762             xsh> ls //$b[count(descendant::para)>10]
    4763             xsh> print $b
    4764             my_document
    4765             xsh> variables
    4766             ...
    4767             $b='my_document';
    4768             ...
    4769             $file='my_documents.xml';
    4770             ...
    4771              
    4772             Variables can also serve as containers for documents and can be used to
    4773             store lists of nodes that result from evaluating an XPath expression
    4774             (a.k.a. XPath node-sets). This is especially useful when a sequence of
    4775             commands is to be performed on some fixed set of nodes and repetitive
    4776             evaluation of the same XPath expression would be lengthy. XPath node-sets
    4777             are represented by 'XML::LibXML::NodeList' Perl objects (which is simply
    4778             a array reference blessed to the above class, which provides some simple
    4779             operator overloading). In XPath, by a node-set by definition can only
    4780             contain a single copy of each node and the nodes within a node-set are
    4781             processed in the same order as they appear in the XML document. Having
    4782             XPath node-sets represented by a list gives us the advantage of having
    4783             the possibility to process the list in a different order than the one
    4784             implied by the document (which is what happens if a variable containing a
    4785             node-list is evaluated by Perl rather than XPath), see an example below.
    4786              
    4787             Example:
    4788             xsh> $creatures = //creature[@status='alive']
    4789             # process creatures in the document order:
    4790             xsh> foreach $creature print @name;
    4791             # process creatures in the reverse document order:
    4792             xsh> foreach { reverse @$creature } print @name;
    4793             # append some more nodes to a node-list (using a variant of
    4794             # a simple assignment)
    4795             xsh> $creatures += //creature[@status='dead'];
    4796             # again, we can process creatures in order implied by the document:
    4797             xsh> foreach $creature print @name;
    4798             # but we can also process first living and then dead creatures,
    4799             # since this is how they are listed in $creature
    4800             xsh> foreach {$creature} print @name;
    4801             # same as the above is
    4802             xsh> foreach {@$creature} print @name;
    4803              
    4804             XSH2 variables are either globally or lexically scoped. Global variables
    4805             need not to be declared (they can be directly assigned to), whereas
    4806             lexical variables must be declared using the command [my]. Global
    4807             variable assignment may also be made temporal for the enclosing block,
    4808             using [local].
    4809              
    4810             Example:
    4811             $var1 = "foo"; # a global variable requires no declaration
    4812             local $var1 $var2 $var3; # localizes global variables
    4813             $var1 = "bar"; # assignment to a localized variable is temporary
    4814             local $var4 = "foo"; # localized assignment
    4815             my $var1 $var $var3; # declares lexical variables
    4816             my $var1 = "foo"; # lexical variable declaration with assignment
    4817              
    4818             Lexical variables are only defined in the scope of current block or
    4819             subroutine. There is no way to refer to a lexical variable form outside
    4820             of the block it was declared in, nor from within a nested subroutine
    4821             call. Of course, lexical variables can be referred to from nested blocks
    4822             or Perl expressions (where they behave just like Perl's lexical
    4823             variables).
    4824              
    4825             On the other hand, global or localized XSH2 variables are just Perl
    4826             Scalar variables belonging to the 'XML::XSH2::Map' namespace, which is
    4827             also the default namespace for any Perl code evaluated from XSH2 (so
    4828             there's no need to use this prefix explicitly in Perl expressions, unless
    4829             of course there is a lexical variable in the current scope with the
    4830             same).
    4831              
    4832             Localizing a variable using the 'local' keyword makes all assignments to
    4833             it occurring in the enclosing block temporary. The variable itself
    4834             remains global, only its original value is restored at the end of the
    4835             block that localized it.
    4836              
    4837             In all above cases, it is possible to arbitrarily intermix XSH2 and Perl
    4838             assignments:
    4839              
    4840             Example:
    4841             xsh> ls //chapter[1]/title
    4842             Introduction
    4843             xsh> $a=string(//chapter[1]/title)
    4844             xsh> perl { $b="CHAPTER 1: ".uc($a); }
    4845             xsh> print $b
    4846             CHAPTER 1: INTRODUCTION
    4847              
    4848             Although all XSH2 variables are in fact Perl Scalars, it is still
    4849             possible to store Perl Array or Hash value to a XSH2 variable via
    4850             reference. The following example demonstrates using Perl Hashes to
    4851             collect and print some simple racial statistics about the population of
    4852             Middle-Earth:
    4853              
    4854             Example:
    4855             my $races;
    4856             foreach a:/middle-earth/creature {
    4857             my $race=string(@race);
    4858             perl { $races->{$race}++ };
    4859             }
    4860             print "Middle-Earth Population (race/number of creatures)"
    4861             print { map "$_/$races->{$_}\n" keys(%$races); };
    4862              
    4863              
    4864             Related help items:
    4865             assign, local
    4866              
    4867             END
    4868              
    4869             $HELP{'Redirection'}=[<<'END'];
    4870             Command output redirection
    4871             --------------------------
    4872              
    4873             WARNING: XSH2 redirection syntax is not yet finished. It is currently the
    4874             same as in XSH1 but this may be changed in the future releases.
    4875              
    4876             Output redirection can be used to pipe output of some XSH [command] to
    4877             some external program, or to capture it to a variable. Redirection of
    4878             output of more than one XSH command can be achieved using the [do]
    4879             command.
    4880              
    4881             Redirect output to an external program
    4882             --------------------------------------
    4883              
    4884             The syntax for redirecting the output of a XSH command to an external
    4885             program, is 'xsh-command | shell-command ;', where 'xsh-command' is any
    4886             XSH2 command and 'shell-command' is any command (or code) recognized by
    4887             the default shell interpreter of the operating system (i.e. on UNIX
    4888             systems by '/bin/sh' or '/bin/csh', on Windows systems by 'cmd'). The
    4889             shell command may contain further redirections (as supported by the
    4890             system shell interpreter), but should not contain semicolons, except
    4891             when the whole shell command is enclosed in brackets.
    4892              
    4893             Example: Use well-known UNIX commands to filter XPath-based XML listing
    4894             from a document and count the results
    4895              
    4896             xsh> ls //something/* | grep foo | wc
    4897              
    4898             Capture output to a variable
    4899             ----------------------------
    4900              
    4901             The syntax for capturing the output of an XSH command to a variable is
    4902             'xsh-command |> $variable', where 'xsh-command' is any XSH [command]
    4903             and '$variable' is any valid name for a [variable].
    4904              
    4905             Example: Store the number of all words in a variable named count.
    4906              
    4907             xsh> count //words |> $count
    4908              
    4909             END
    4910              
    4911             $HELP{'Configuration'}=[<<'END'];
    4912             Global settings
    4913             ---------------
    4914              
    4915             The commands listed below can be used to modify the default behavior of
    4916             the XML parser or XSH2 itself. Some of the commands switch between two
    4917             different modes according to a given expression (which is expected to
    4918             result either in zero or non-zero value). Other commands also working as
    4919             a flip-flop have their own explicit counterparts (e.g. [verbose] and
    4920             [quiet] or [debug] and [nodebug]). This inconsistency is due to
    4921             historical reasons.
    4922              
    4923             The [encoding] and [query-encoding] settings allow to specify character
    4924             encodings of user's input and XSH2's own output. This is particularly
    4925             useful when you work with UTF-8 encoded documents on a console which only
    4926             supports 8-bit characters.
    4927              
    4928             The [settings] command displays current settings by means of XSH2
    4929             commands. Thus it can not only be used to review current values, but also
    4930             to store them for future use, e.g. in ~/.xsh2rc file.
    4931              
    4932             Example:
    4933             xsh> settings | cat > ~/.xsh2rc
    4934              
    4935              
    4936             Related help items:
    4937             backups, debug, empty-tags, encoding, indent, keep-blanks, load-ext-dtd,
    4938             nobackups, nodebug, parser-completes-attributes, parser-expands-entities,
    4939             parser-expands-xinclude, pedantic-parser, query-encoding, quiet,
    4940             recovering, register-function, register-namespace,
    4941             register-xhtml-namespace, register-xsh-namespace, run-mode, settings,
    4942             skip-dtd, switch-to-new-documents, test-mode, unregister-function,
    4943             unregister-namespace, validation, verbose, xpath-axis-completion,
    4944             xpath-completion, xpath-extensions
    4945              
    4946             END
    4947              
    4948             $HELP{'Perl_shell'}=[<<'END'];
    4949             Interacting with Perl and Shell
    4950             -------------------------------
    4951              
    4952             Along with XPath, Perl is one of two XSH2 expression languages, and
    4953             borrows XSH2 its great expressive power. Perl is a language optimized for
    4954             scanning arbitrary text files, extracting information from those text
    4955             files, and printing reports based on that information. It has built-in
    4956             regular expressions and powerful yet easy to learn data structures
    4957             (scalars, arrays, hash tables). It's also a good language for many system
    4958             management tasks. XSH2 itself is written in Perl (except for the XML
    4959             engine, which uses libxml2 library written in C by Daniel Veillard).
    4960              
    4961             Calling Perl
    4962             ------------
    4963              
    4964             Perl [expressions or blocks of code] can either be used as arguments to
    4965             any XSH2 command. One of them is [perl] command which simply evaluates
    4966             the given Perl block. Other commands, such as [map], even require Perl
    4967             expression argument and allow quickly change DOM node content. Perl
    4968             expressions may also provide lists of strings to iterate over with a
    4969             [foreach] loop, or serve as conditions for [if], [unless], and [while]
    4970             statements.
    4971              
    4972             To prevent conflict between XSH2 internals and the evaluated Perl code,
    4973             XSH2 runs such code in the context of a special namespace
    4974             'XML::XSH2::Map'. As described in the section [Variables], XSH2 string
    4975             variables may be accessed and possibly assigned from Perl code in the
    4976             most obvious way, since they actually are Perl variables defined in the
    4977             'XML::XSH2::Map' namespace.
    4978              
    4979             The interaction between XSH2 and Perl actually works the other way
    4980             round as well, so that you may call back XSH2 from the evaluated Perl
    4981             code. For this, Perl function 'xsh' is defined in the 'XML::XSH2::Map'
    4982             namespace. All parameters passed to this function are interpreted as
    4983             XSH2 commands.
    4984              
    4985             Moreover, the following Perl helper functions are defined:
    4986              
    4987             'xsh(string,....)' - evaluates given string(s) as XSH2 commands.
    4988              
    4989             'call(name)' - call a given XSH2 subroutine.
    4990              
    4991             'count(string)' - evaluates given string as an XPath expression and
    4992             returns either literal value of the result (in case of boolean, string
    4993             and float result type) or number of nodes in a returned node-set.
    4994              
    4995             'literal(string|object)' - if passed a string, evaluates it as a XSH2
    4996             expression and returns the literal value of the result; if passed an
    4997             object, returns literal value of the object. For example,
    4998             'literal('$doc/expression')' returns the same value as
    4999             'count('string($doc/expression)')'.
    5000              
    5001             'serialize(string|object)' - if passed a string, it first evaluates the
    5002             string as a XSH2 expression to obtain a node-list object. Then it
    5003             serializes the object into XML. The resulting string is equal to the
    5004             output of the XSH2 command [ls] applied on the same expression or
    5005             object expression only without indentation and folding.
    5006              
    5007             'type(string|object)' - if passed a string, it first evaluates the
    5008             string as XSH2 expression to obtain a node-list object. It returns a
    5009             list of strings representing the types of nodes in the node-list
    5010             (ordered in the canonical document order). The returned type strings
    5011             are: 'element', 'attribute', 'text', 'cdata', 'pi', 'entity_reference',
    5012             'document', 'chunk', 'comment', 'namespace', 'unknown'.
    5013              
    5014             'nodelist(string|object,...)' - converts its arguments to objects if
    5015             necessary and returns a node-list consisting of the objects.
    5016              
    5017             'xpath(string, node?)' - evaluates a given string as an XPath
    5018             expression in the context of a given node and returns the result.
    5019              
    5020             'echo(string,...)' - prints given strings on XSH2 output. Note, that in
    5021             the interactive mode, XSH2 redirects all output to a specific terminal
    5022             file handle stored in the variable '$OUT'. So, if you for example mean
    5023             to pipe the result to a shell command, you should avoid using STDOUT
    5024             filehandle directly. You may either use the usual 'print' without a
    5025             filehandle, use the 'echo' function, or use '$OUT' as a filehandle.
    5026              
    5027             In the following examples we use Perl to populate the Middle-Earth with
    5028             Hobbits whose names are read from a text file called 'hobbits.txt',
    5029             unless there are some Hobbits in Middle-Earth already.
    5030              
    5031             Example: Use Perl to read text files
    5032              
    5033             unless (//creature[@race='hobbit']) {
    5034             perl {
    5035             open my $fh, "hobbits.txt" };
    5036             @hobbits=<$file>;
    5037             close $fh;
    5038             }
    5039             foreach { @hobbits } {
    5040             copy xsh:new-element("creature","name",.,"race","hobbit")
    5041             into m:/middle-earth/creatures;
    5042             }
    5043             }
    5044              
    5045             Example: The same code as a single Perl block
    5046              
    5047             perl {
    5048             unless (count(//creature[@race='hobbit'])) {
    5049             open my $file, "hobbits.txt";
    5050             foreach (<$file>) {
    5051             xsh(qq{insert element ""
    5052             into m:/middle-earth/creatures});
    5053             }
    5054             close $file;
    5055             }
    5056             };
    5057              
    5058             Writing your own XPath extension functions in Perl
    5059             --------------------------------------------------
    5060              
    5061             XSH2 allows users to extend the set of XPath functions by providing
    5062             extension functions written in Perl. This can be achieved using the
    5063             [register-function] command. The perl code implementing an extension
    5064             function works as a usual perl routine accepting its arguments in '@_'
    5065             and returning the result. The following conventions are used:
    5066              
    5067             The arguments passed to the perl implementation by the XPath engine are
    5068             simple scalars for string, boolean and float argument types and
    5069             'XML::LibXML::NodeList' objects for node-set argument types. The
    5070             implementation is responsible for checking the argument number and
    5071             types. The implementation may use general Perl functions as well as
    5072             'XML::LibXML' methods to process the arguments and return the result.
    5073             Documentation for the 'XML::LibXML' Perl module can be found for
    5074             example at http://search.cpan.org/~pajas/XML-LibXML/.
    5075              
    5076             Extension functions SHOULD NOT MODIFY the document DOM tree. Doing so
    5077             could not only confuse the XPath engine but possibly even result in an
    5078             critical error (such as segmentation fault). Calling XSH2 commands from
    5079             extension function implementations is also dangerous and isn't
    5080             generally recommended.
    5081              
    5082             The extension function implementation must return a single value, which
    5083             can be of one of the following types: simple scalar (a number or
    5084             string), 'XML::LibXML::Boolean' object reference (result is a boolean
    5085             value), 'XML::LibXML::Literal' object reference (result is a string),
    5086             'XML::LibXML::Number' object reference (result is a float),
    5087             'XML::LibXML::Node' (or derived) object reference (result is a node-set
    5088             consisting of a single node), or 'XML::LibXML::NodeList' (result is a
    5089             node-set). For convenience, simple (non-blessed) array references
    5090             consisting of 'XML::LibXML::Node' objects can also be used for a
    5091             node-set result instead of a 'XML::LibXML::NodeList'.
    5092              
    5093             Calling the System Shell
    5094             ------------------------
    5095              
    5096             In the interactive mode, XSH2 interprets all lines starting with the
    5097             exclamation mark ('!') as shell commands and invokes the system shell
    5098             to interpret the line (this is to mimic FTP and similar command-line
    5099             interpreters).
    5100              
    5101             Example:
    5102             xsh> !ls -l
    5103             -rw-rw-r-- 1 pajas pajas 6355 Mar 14 17:08 Artistic
    5104             drwxrwxr-x 2 pajas users 128 Sep 1 10:09 CVS
    5105             -rw-r--r-- 1 pajas pajas 14859 Aug 26 15:19 ChangeLog
    5106             -rw-r--r-- 1 pajas pajas 2220 Mar 14 17:03 INSTALL
    5107             -rw-r--r-- 1 pajas pajas 18009 Jul 15 17:35 LICENSE
    5108             -rw-rw-r-- 1 pajas pajas 417 May 9 15:16 MANIFEST
    5109             -rw-rw-r-- 1 pajas pajas 126 May 9 15:16 MANIFEST.SKIP
    5110             -rw-r--r-- 1 pajas pajas 20424 Sep 1 11:04 Makefile
    5111             -rw-r--r-- 1 pajas pajas 914 Aug 26 14:32 Makefile.PL
    5112             -rw-r--r-- 1 pajas pajas 1910 Mar 14 17:17 README
    5113             -rw-r--r-- 1 pajas pajas 438 Aug 27 13:51 TODO
    5114             drwxrwxr-x 5 pajas users 120 Jun 15 10:35 blib
    5115             drwxrwxr-x 3 pajas users 1160 Sep 1 10:09 examples
    5116             drwxrwxr-x 4 pajas users 96 Jun 15 10:35 lib
    5117             -rw-rw-r-- 1 pajas pajas 0 Sep 1 16:23 pm_to_blib
    5118             drwxrwxr-x 4 pajas users 584 Sep 1 21:18 src
    5119             drwxrwxr-x 3 pajas users 136 Sep 1 10:09 t
    5120             -rw-rw-r-- 1 pajas pajas 50 Jun 16 00:06 test
    5121             drwxrwxr-x 3 pajas users 496 Sep 1 20:18 tools
    5122             -rwxr-xr-x 1 pajas pajas 5104 Aug 30 17:08 xsh
    5123              
    5124             To invoke a system shell command or program from the non-interactive
    5125             mode or from a complex XSH2 construction, use the [exec] command.
    5126              
    5127             Since UNIX shell commands are very powerful tool for processing textual
    5128             data, XSH2 supports direct redirection of XSH2 commands output to
    5129             system shell command. This is very similarly to the redirection known
    5130             from UNIX shells, except that here, of course, the first command in the
    5131             pipe-line colone is an XSH2 [command]. Since semicolon (';') is used in
    5132             XSH2 to separate commands, it has to be prefixed with a backslash if it
    5133             should be used for other purposes.
    5134              
    5135             Example: Use grep and less to display context of `funny'
    5136              
    5137             xsh> ls //chapter[5]/para | grep funny | less
    5138              
    5139             Example: The same on Windows 2000/XP systems
    5140              
    5141             xsh> ls //chapter[5]/para | find "funny" | more
    5142              
    5143              
    5144             Related help items:
    5145             exec, hash, lcd, map, perl, rename
    5146              
    5147             END
    5148              
    5149             $HELP{'Prompt'}=[<<'END'];
    5150             Prompt in the interactive shell
    5151             -------------------------------
    5152              
    5153             Like many other shells, XSH2 provides means for customizing the format of
    5154             its interactive shell prompt. The prompt is displayed according to the
    5155             content of the variable '$PROMPT' on which the following substitutions
    5156             and interpolations are performed (in this order):
    5157              
    5158             1. Prompt-string replacements
    5159              
    5160             %% - percent sign
    5161             %p - XPath location of the current node
    5162             %P - like %p but without an initial document variable
    5163             %l - XPath location of the current node with ID-shortcuts
    5164             %L - like %l but without an initial document variable
    5165             %n - name of the current node
    5166             %N - local name of the current node
    5167             %c - canonical XPath name of the current node
    5168             %y - type of the current node (element,attribute,...)
    5169             %i - ID of the current node
    5170             %d - current document variable
    5171             %h - the hostname up to the first '.'
    5172             %H - the hostname
    5173             %s - XSH shell name (basename of $0)
    5174             %t - the current time in 24-hour HH:MM:SS format
    5175             %T - the current time in 12-hour HH:MM:SS format
    5176             %@ - the current time in 12-hour am/pm format
    5177             %A - the current time in 24-hour HH:MM format
    5178             %u - the username of the current user
    5179             %v - the version of XSH2 (e.g., 2.1.0)
    5180             %V - the revision number of XML::XSH2::Functions (e.g. 2.40)
    5181             %w - current working directory (on the local filesystem)
    5182             %W - basename of %w
    5183             2. Variable, XPath and Perl interpolations
    5184              
    5185             Substrings of the forms '${variable}', '${{...perl...}}' and
    5186             '${(...xpath...)}' are interpolated as in XSH2 [expressions].
    5187              
    5188             3. Special character substitution
    5189              
    5190             \n - newline character
    5191             \r - line-feed character
    5192             \t - tab character
    5193             \a - bell character
    5194             \b - backspace character
    5195             \f - form feed character
    5196             \e - escape character (\033)
    5197             \\ - backslash character
    5198             \nnn - the character corresponding to the octal number nnn
    5199             (useful for non-printable terminal control characters)
    5200             The default value of '$PROMPT' is '"%p>"'.
    5201              
    5202             Note that you must escape '${...}' interpolators like '\${...}' if you
    5203             want them to be evaluated at each prompt rather than at the time of the
    5204             assignment to '$PROMPT'. For example:
    5205              
    5206             Example: Let `uname` be computed once, `date` at every prompt
    5207              
    5208             $PROMPT="[${{ chomp($u=`uname`);$u }} \${{ chomp($d=`date`);$d }}] %p>"
    5209              
    5210             END
    5211              
    5212             $HELP{'xsh2delta'}=[<<'END'];
    5213             Changes since XSH 1.x
    5214             ---------------------
    5215              
    5216             This section briefly describes differences between XSH2 and previous XSH
    5217             1.x releases. The list should not be considered complete. Some syntax
    5218             variations or amendments in the semantics of various commands may not be
    5219             documented in this section, neither are various improvements in the XSH
    5220             interpreter.
    5221              
    5222             Changes in XSH2
    5223             ---------------
    5224              
    5225             1. In XSH2, subroutines can be called without a [call]. They can be
    5226             [redefined] and [undefined]. The command [call] can still be used,
    5227             but it's use only makes sense in indirect calls, where subroutine's
    5228             name is computed from an expression.
    5229              
    5230             def foo $param1 $param2 {
    5231             # param1 and $param2 are lexical (a.k.a. my)
    5232             ls $param1;
    5233             echo $param2
    5234             }
    5235             foo (//chapter)[1] (//chapter)[1]/title
    5236            
    5237             def inc $param1 { return ($param1 + 1) }
    5238             $two := inc 1;
    5239             2. XSH2 uses variables of the form [$variable] for all kinds of
    5240             objects, including node-sets (which, if evaluated as Perl
    5241             expressions, preserve node order). Node-list variables of XSH 1.x
    5242             have been deprecated.
    5243              
    5244             $var = //foo/bar; # node set
    5245             $var = "hallo world"; # string
    5246             $var = xsh:new-element("foo"); # node object
    5247             $var = { ['a','b','c'] }; # Perl array reference
    5248             $var = {{ 'a'=>'A', 'b'=>'B' }}; # Perl hash reference
    5249             3. XSH2 allows variables to be used in XPath just as they are used in
    5250             XSLT:
    5251              
    5252             $var = //foo/bar;
    5253             ls //baz[ . = $var[@test=1]/any ]
    5254             Variable interpolation is still available in XSH2 via ${var}, but
    5255             it's importance is diminished compared to XSH 1.x, because the XPath
    5256             engine now evaluates variables directly. Interpolation can still be
    5257             used for things like "XPath-macros":
    5258              
    5259             $filter = "[ . = $var[@test=1]/any ]";
    5260             ls //baz${filter};
    5261             4. XSH2 equally supports XPath and Perl [expressions] (written in
    5262             braces { ... }). Unfortunately, Perl expressions can't be embedded in
    5263             XPath [expressions], but one can still use variables as an agent:
    5264              
    5265             perl { use MIME::Base64 };
    5266             my $encoded = { encode_base64('open sesame') }
    5267             ls //secret-cave[string(password) = $encoded]
    5268             We can, however, use Perl-only expressions complemented with
    5269             auto-conversion to do things like:
    5270              
    5271             copy { encode_base64('Pe do mellon a minno!') } replace //secret-cave/password/text();
    5272             5. Commands return values (see [:= assignment], or [&{ }
    5273             expressions]).
    5274              
    5275             $moved_paras := xmove //para replace .;
    5276             $chapter := wrap chapter $moved_paras;
    5277             ls $chapter;
    5278            
    5279             # or just
    5280            
    5281             ls &{ wrap chapter &{ xmove //para replace . } };
    5282             6. XSH2 deprecates "string" expressions of XSH 1.x. However, for
    5283             convenience, some XSH2 commands interpret name-like XPath expressions
    5284             on certain argument positions as strings (mostly commands that expect
    5285             file-name or node-name arguments):
    5286              
    5287             insert element my_document into .;
    5288             insert text "foo" into my_document;
    5289            
    5290             $doc := open my_document; # opens file named "my_document"
    5291             $doc := open "my_document"; # same
    5292             $doc := open (my_document); # opens file named "foo"
    5293             $doc := open string(my_document); # same
    5294             7. In XSH2, XML documents have no ID. They are referred to using
    5295             variables (which fits in well with the unified variable concept):
    5296              
    5297             $doc1 := open "foo1.xml";
    5298             $doc2 := open "foo2.xml";
    5299             ls ($doc1//para|$doc2//para);
    5300             cd $doc1;
    5301             ls id('intro'); # finds ID intro in the current document ($doc1)
    5302             ls xsh:id2($doc2, 'intro'); # finds ID intro in $doc2
    5303             8. XSH2 commands have options and flags instead of many optional
    5304             (positional) arguments. Options/flags usually have both long forms
    5305             (like --flag) and equivalent short forms (like :f) (colon is borrowed
    5306             from Scheme, because dash is reserved for XPath minus).
    5307              
    5308             $doc := open --format html "version1.html";
    5309             save --file "version2.xml" $doc;
    5310            
    5311             ls --fold /;
    5312             ls :f /;
    5313             ls --depth 1 /;
    5314             ls :d 1 /;
    5315            
    5316             # all the same:
    5317             $sorted = sort --key @name --locale --descending //user;
    5318             $sorted = sort :l:d:k@name //user;
    5319             $sorted = sort --key @name --compare { use locale; $b cmp $a } //user;
    5320            
    5321             validate --relaxng --file "test.rng" $mydoc;
    5322             validate --public "-//OASIS//DTD DocBook XML V4.1.2//EN" $mydoc;
    5323             validate --yesno $mydoc;
    5324             9. Finally, [eval] is no longer an alias for [perl] in XSH2, but
    5325             instead evaluates strings containing XSH2 commands (so 'eval $string'
    5326             now practically works like old ugly 'perl { xsh($string) }'). See the
    5327             documentation for [eval] for a handy usage example (no more PHP, XSTL
    5328             and XPathScript :-)).
    5329              
    5330             Examples
    5331             --------
    5332              
    5333             Example: Open command has changed.
    5334              
    5335             XSH1:
    5336             foo = file.xml;
    5337             or
    5338             foo = "file.xml";
    5339             XSH2:
    5340             $foo := open file.xml; # file.xml is a bareword in file-name context
    5341             or
    5342             $foo := open "file.xml"; # "file.xml" is a XPath string
    5343             or
    5344             $foo := open {"file.xml"}; # "file.xml" is a Perl string
    5345             or
    5346             $foo = xsh:open("file.xml"); # righthand side is an XPath extension function
    5347              
    5348             Example: XSH2 commands have options
    5349              
    5350             XSH1:
    5351             open HTML FILE foo2 = "file.html";
    5352             XSH2:
    5353             $foo2 := open --format html "file.html";
    5354              
    5355             Example: documents
    5356              
    5357             XSH1:
    5358             foo = file.xml;
    5359             ls foo:(//bar|//baz);
    5360             XSH2:
    5361             $foo := open file.xml;
    5362             ls ($foo//bar|$foo//baz);
    5363              
    5364             Example: variable interpretation
    5365              
    5366             XSH1:
    5367             $family = "Arial";
    5368             ls //font[@family="$family"]; # interpolation
    5369             or
    5370             ls //font[@family="${family}"]; # interpolation
    5371             XSH2:
    5372             $family = "Arial";
    5373             ls //font[@family=$family]; # evaluation by XPath engine
    5374             or
    5375             ls //font[@family="${family}"]; # interpolation
    5376              
    5377             Example: adding new nodes
    5378              
    5379             XSH1:
    5380             insert attribute "foo=bar" into /scratch;
    5381             XSH2:
    5382             insert attribute "foo=bar" into /scratch;
    5383             or
    5384             copy xsh:new-attribute("foo","bar") into /scratch;
    5385              
    5386             Example: foreach with perl expression
    5387              
    5388             XSH1:
    5389             foreach { glob('*.xml') } {
    5390             open doc = $__;
    5391             ...
    5392             }
    5393             XSH2:
    5394             foreach { glob('*.xml') } {
    5395             my $doc := open .;
    5396             ...
    5397             }
    5398              
    5399             Example: foreach (perl expression) with variable
    5400              
    5401             XSH2:
    5402             foreach my $filename in { glob('*.xml') } {
    5403             my $doc := open $filename;
    5404             ...
    5405             }
    5406              
    5407             Example: sorting nodes
    5408              
    5409             XSH1:
    5410             %list = //player;
    5411             sort @best_score { $a <=> $b } %list;
    5412             copy %list into .;
    5413             XSH2:
    5414             $list := sort --numeric --key @best_score //player;
    5415             copy { $list } into .;
    5416             or
    5417             copy &{ sort --numeric --key @best_score //player } into .;
    5418             or (using short options)
    5419             copy &{ sort :n :k @best_score //player } into .;
    5420              
    5421             END
    5422              
    5423             $HELP{'commands'}=$HELP{'command'};
    5424             $Apropos = {
    5425             'quiet' => 'turn off many XSH2 messages',
    5426             'location' => 'relative destination specification (such as after, before, etc.)',
    5427             'edit-string' => 'Edit a string or variable in a text editor.',
    5428             'perl' => 'evaluate in-line Perl code',
    5429             'xsh:join' => undef,
    5430             'xpath' => 'XPath expression',
    5431             'try' => 'try/catch statement',
    5432             'xsh:strmax' => undef,
    5433             'print' => 'print stuff on standard or standard error output',
    5434             'nodebug' => 'turn off debugging messages',
    5435             'register-xsh-namespace' => 'register a prefix for the XSH2 namespace',
    5436             'move' => 'move nodes (in the one-to-one mode)',
    5437             'xsh:lookup' => undef,
    5438             'xsh:times' => undef,
    5439             'xpath-completion' => 'turn on/off TAB completion for xpath expressions in the interactive mode',
    5440             'dtd' => 'show document\'s DTD',
    5441             'xsh:current' => undef,
    5442             'declare-ns' => 'create a special attribute declaring an XML namespace (EXPERIMENTAL)',
    5443             'xsh:min' => undef,
    5444             'nobackups' => 'turn off backup file creation',
    5445             'xsh:max' => undef,
    5446             'clone' => 'clone a given document',
    5447             'wrap' => 'wrap given nodes into elements',
    5448             'xsh:base-uri' => undef,
    5449             'xinsert' => 'create nodes on all target locations',
    5450             'xsh:new-pi' => undef,
    5451             'edit' => 'Edit parts of a XML document in a text editor.',
    5452             'xsh:new-cdata' => undef,
    5453             'enc' => 'show document\'s original character encoding',
    5454             'count' => 'calculate a [expression] and enumerate node-lists',
    5455             'xsh:if' => undef,
    5456             'xsh:lineno' => undef,
    5457             'xsh:reverse' => undef,
    5458             'query-encoding' => 'declare the charset of XSH2 source files and terminal input',
    5459             'prev' => 'restart an iteration on a previous node',
    5460             'xsh:new-text' => undef,
    5461             'set-standalone' => 'set document\'s standalone flag',
    5462             'xsh:var' => undef,
    5463             'change-ns-uri' => 'change namespace URI (EXPERIMENTAL)',
    5464             'xsh:path' => undef,
    5465             'xsh:ucfirst' => undef,
    5466             'eval' => 'evaluate given expression as XSH commands',
    5467             'backups' => 'turn on backup file creation',
    5468             'create' => 'make a new document from a given XML fragment',
    5469             'xsh:map' => undef,
    5470             'get' => 'calculate a given expression and return the result.',
    5471             'xsh:new-element-ns' => undef,
    5472             'pedantic-parser' => 'make the parser more pedantic',
    5473             'cd' => 'change current context node',
    5474             'recovering' => 'turn on/off parser\'s ability to fix broken XML',
    5475             'while' => 'simple while loop',
    5476             'parser-completes-attributes' => 'turn on/off parser\'s ability to fill default attribute values',
    5477             'unregister-function' => 'undefine extension function (EXPERIMENTAL)',
    5478             'next' => 'start the next iteration of an enclosing loop',
    5479             'xsh:id2' => undef,
    5480             'help' => 'on-line documentation',
    5481             'namespaces' => 'List namespaces available in a context of a given nodes',
    5482             'ls' => 'list a given part of a document as XML',
    5483             'register-function' => 'define XPath extension function (EXPERIMENTAL)',
    5484             'xsh:filename' => undef,
    5485             'document' => 'specifying documents',
    5486             'set-dtd' => 'set document\'s DTD declaration',
    5487             'stream' => 'process selected elements from an XML stream (EXPERIMENTAL)',
    5488             'version' => 'show version information',
    5489             'xsh:substr' => undef,
    5490             'last' => 'immediately exit an enclosing loop',
    5491             'return' => 'return from a subroutine',
    5492             'set-ns' => 'set namespace of the current node (EXPERIMENTAL)',
    5493             'expression' => 'expression argument type',
    5494             'xsh:split' => undef,
    5495             'xcopy' => 'copy nodes (in the all-to-every mode)',
    5496             'map' => 'transform node value/data using Perl or XPath expression',
    5497             'xsh:uc' => undef,
    5498             'switch-to-new-documents' => 'set on/off changing current document to newly open/created files',
    5499             'def' => 'sub-routine declaration',
    5500             'xsh:document-uri' => undef,
    5501             'normalize' => 'normalizes adjacent textnodes',
    5502             'foreach' => 'loop iterating over a node-list or a perl array',
    5503             'xsh:new-chunk' => undef,
    5504             'assign' => 'variable assignment',
    5505             'rename' => 'quickly rename nodes with in-line Perl code',
    5506             'call' => 'indirect call to a user-defined routine (macro)',
    5507             'subroutine' => 'name of a sub-routine',
    5508             'load-ext-dtd' => 'turn on/off external DTD fetching',
    5509             'indent' => 'turn on/off pretty-printing',
    5510             'unregister-namespace' => 'unregister namespace prefix',
    5511             'include' => 'include another XSH2 source in current position',
    5512             'xsh:grep' => undef,
    5513             'run-mode' => 'switch into normal execution mode (quit [test-mode])',
    5514             'xmove' => 'move nodes (in the all-to-every mode)',
    5515             'xsh:span' => undef,
    5516             'type' => undef,
    5517             'locate' => 'show a given node location (as a canonical XPath)',
    5518             'node-type' => 'node type specification (such as element, attribute, etc.)',
    5519             'copy' => 'copy nodes (in the one-to-one mode)',
    5520             'do' => 'execute a given block of commands',
    5521             'set_filename' => 'change filename or URL associated with a document',
    5522             'exec' => 'execute a shell command',
    5523             'validate' => 'validate a document against a DTD, RelaxNG, or XSD schemas',
    5524             'xpath-axis-completion' => 'sets TAB completion for axes in xpath expressions in the interactive mode',
    5525             'xsh:new-comment' => undef,
    5526             'doc-info' => 'displays various information about a document',
    5527             'skip-dtd' => 'turn on/off serialization of DTD DOCTYPE declaration',
    5528             'filename' => 'specifying filenames',
    5529             'command' => 'List of XSH2 commands and their general syntax',
    5530             'wrap-span' => 'wrap spans of nodes into elements',
    5531             'redo' => 'restart the innermost enclosing loop block',
    5532             'set-enc' => 'set document\'s charset (encoding)',
    5533             'xsh:resolve-uri' => undef,
    5534             'throw' => 'throw an exception',
    5535             'xslt' => 'compile a XSLT stylesheet and/or transform a document with XSLT',
    5536             'xsh:new-attribute' => undef,
    5537             'xsh:documents' => undef,
    5538             'xsh:context' => undef,
    5539             'defs' => 'list all user-defined subroutines',
    5540             'register-namespace' => 'register namespace prefix to use XPath expressions',
    5541             'if' => 'if statement',
    5542             'pwd' => 'show current context node location (as a canonical XPath)',
    5543             'open' => 'load an XML, HTML, or Docbook SGML document from a file, pipe or URI',
    5544             'xsh:parse' => undef,
    5545             'xsh:sum' => undef,
    5546             'block' => 'a block of XSH2 commands',
    5547             'xsh:same' => undef,
    5548             'empty-tags' => 'turn on/off serialization of empty tags',
    5549             'keep-blanks' => 'turn on/off ignorable whitespace preservation',
    5550             'remove' => 'remove given nodes',
    5551             'iterate' => 'iterate a block over current subtree',
    5552             'parser-expands-entities' => 'turn on/off parser\'s tendency to expand entities',
    5553             'insert' => 'create a node in on a given target location',
    5554             'exit' => 'exit XSH2 shell',
    5555             'xsh:document' => undef,
    5556             'my' => 'Create a new lexically scoped variable',
    5557             'settings' => 'list current settings using XSH2 syntax',
    5558             'sort' => 'sort a given node-list by given criteria',
    5559             'apropos' => 'search the documentation',
    5560             'encoding' => 'choose output charset',
    5561             'xsh:new-element' => undef,
    5562             'lcd' => 'change system working directory',
    5563             'parser-expands-xinclude' => 'turn on/off transparent XInclude insertion by parser',
    5564             'xsh:matches' => undef,
    5565             'xsh:strmin' => undef,
    5566             'xupdate' => 'apply XUpdate commands on a document',
    5567             'validation' => 'turn on/off validation in XML parser',
    5568             'xsh:subst' => undef,
    5569             'xpath-extensions' => 'map predefined XSH2 XPath extension functions to no or other namespace',
    5570             'save' => 'save a document as XML or HTML',
    5571             'perl-code' => 'in-line code in Perl programming language',
    5572             'nodename' => 'specifying names of DOM nodes',
    5573             'close' => 'close document (without saving)',
    5574             'hash' => 'index selected nodes by some key value',
    5575             'unfold' => 'unfold elements folded with fold command',
    5576             'canonical' => 'serialize nodes as to canonical XML',
    5577             'documents' => 'display a list of open documents',
    5578             'change-ns-prefix' => 'change namespace prefix (EXPERIMENTAL)',
    5579             'set' => 'create or modify document content (EXPERIMENTAL)',
    5580             'unless' => 'negated if statement',
    5581             'lineno' => 'print line-numbers corresponding to matching nodes',
    5582             'undef' => 'undefine sub-routine or variable',
    5583             'verbose' => 'make XSH2 print many messages',
    5584             'catalog' => 'use a catalog file during all parsing processes',
    5585             'register-xhtml-namespace' => 'register a prefix for the XHTML namespace',
    5586             'xsh:match' => undef,
    5587             'process-xinclude' => 'load and insert XInclude sections',
    5588             'index' => 'index a static document for faster XPath lookup',
    5589             'xsh:doc' => undef,
    5590             'xsh:lc' => undef,
    5591             'ifinclude' => 'conditionally include another XSH2 source in current position',
    5592             'xsh:serialize' => undef,
    5593             'xsh:lcfirst' => undef,
    5594             'strip-whitespace' => 'strip leading and trailing whitespace',
    5595             'debug' => 'display many annoying debugging messages',
    5596             'local' => 'temporarily assign new value to a variable',
    5597             'xsh:evaluate' => undef,
    5598             'xsh:sprintf' => undef,
    5599             '$variable' => undef,
    5600             'variables' => 'list global variables',
    5601             'test-mode' => 'do not execute any command, only check the syntax',
    5602             'fold' => 'mark elements to be folded by list command'
    5603             };
    5604              
    5605             1;
    5606             __END__