NAME
XSH - scripting language for XPath-based editing of XML
PREAMB
foreach my $sec ($dom->findnodes('/recdescent-xml/doc/section')) { my $name=$sec->getAttribute('id');
($title)=$sec->findnodes('./title');
my $t= $title ? get_text($title,0,2) : $name;
pprint "\n=head1 ",uc($t),"\n\n";
print_description($sec,"","");
my @commands=$dom->findnodes("//rules/rule[\@type='command' and ".
"documentation[contains(\@sections,'$name')]]");
if (@commands) {
pprint "\n\n=head2 RELATED COMMANDS\n\n";
pprint join ", ", sort map { get_name($_) }
@commands;
pprint "\n\n";
}
}
#pprint "\n=head1 COMMAND REFERENCE\n\n=over 5\n\n"; #foreach ($dom->findnodes("//rules/rule[\@type='command' and documentation]")) { # pprint "\n\n=item ".get_name($_)."\n\n"; # pprint get_text($_->findnodes('documentation/shortdesc')); #} #pprint "\n=back\n\n";
#pprint "\n=head1 ARGUMENT TYPES\n\n"; #pprint wrap(" "," ", # join ", ", sort map { get_name($_) } # grep {defined($_)} # $dom->findnodes("//rules/rule[\@type='argtype']")), # "\n\n";
pprint "\n=head1 COMMAND REFERENCE\n\n";
foreach my $r (sort {get_name($a) cmp get_name($b)} $rules->findnodes('./rule[@type="command"]')) { print_rule_desc($r); }
pprint "\n=head1 ARGUMENT TYPE REFERENCE\n\n"; pprint "=over 4\n\n";
foreach my $r (sort {get_name($a) cmp get_name($b)} $rules->findnodes('./rule[@type="argtype"]')) { ($desc)=$r->findnodes('./documentation/description'); if ($desc) { pprint "\n\n=item ".get_name($r)."\n\n"; print_description($desc,'',''); } } pprint "\n\n=back\n\n";
pprint "\n=head1 XPATH EXTENSION FUNCTION REFERENCE\n\n"; foreach my $r (sort {get_name($a) cmp get_name($b)} $rules->findnodes('./rule[@type="function"]')) { print_rule_desc($r); }
pprint "\n";
pprint <<'POSTAMB';
AUTHOR
Petr Pajas, pajas@matfyz.cz
SEE ALSO
xsh, XML::XSH2, XML::XSH2::Compile, XML::LibXML, XML::XUpdate, http://xsh.sourceforge.net/doc