From ba4349a3bd141f029b5f5c0fe33fc3def0aa7290 Mon Sep 17 00:00:00 2001 From: Norman Walsh Date: Fri, 27 Feb 2004 18:21:32 +0000 Subject: [PATCH] Improvements --- docbook/relaxng/tools/trimgrammar.pl | 51 +++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/docbook/relaxng/tools/trimgrammar.pl b/docbook/relaxng/tools/trimgrammar.pl index 65ec77d95..7b227a3f4 100644 --- a/docbook/relaxng/tools/trimgrammar.pl +++ b/docbook/relaxng/tools/trimgrammar.pl @@ -7,7 +7,7 @@ use vars qw($opt_o $opt_v $opt_r); my $usage = "Usage: $0 [-v] [-r] [-o file] file\n"; -die $usage if ! getopts('o:v'); +die $usage if ! getopts('o:rv'); my $output = $opt_o || "-"; my $verbose = $opt_v; @@ -68,6 +68,8 @@ sub findPatterns { $patterns{$child->getAttribute('name')} = $child; } elsif ($child->getTagName() eq 'start') { $patterns{"*start"} = $child; + } elsif ($child->getTagName() eq 'div') { + findPatterns($child); } } @@ -90,6 +92,7 @@ sub recurse { if (! exists $used{$name}) { $used{$name} = 1; print "D", " " x $depth, $name, "\n" if $showRecurse; + die "No pattern for $name\n" if ! exists $patterns{$name}; recurse($patterns{$name},$depth+1); } } elsif ($child->getTagName() eq 'ref') { @@ -97,6 +100,7 @@ sub recurse { if (! exists $used{$name}) { $used{$name} = 1; print "R", " " x $depth, $name, "\n" if $showRecurse; + die "No pattern for $name\n" if ! exists $patterns{$name}; recurse($patterns{$name},$depth+1); } } else { @@ -111,6 +115,51 @@ sub recurse { sub printXML { my $node = shift; + if ($node->getNodeType() == XML::DOM::ELEMENT_NODE) { + my $child = $node->getFirstChild(); + my $attrs = $node->getAttributes(); + + print "<"; + print $node->getTagName(); + + for (my $count = 0; $count < $attrs->getLength(); $count++) { + my $attr = $attrs->item($count); + my $name = $attr->getName(); + my $value = $attr->getValue(); + print " $name=\"$value\""; + } + + if ($node->getTagName eq 'define' + && !$used{$node->getAttribute('name')}) { + print " unused=\"1\""; + } + + if ($child) { + print ">"; + while ($child) { + printXML($child); + $child = $child->getNextSibling(); + } + print "getTagName(); + print ">"; + } else { + print "/>"; + } + } elsif ($node->getNodeType() == XML::DOM::TEXT_NODE) { + print $node->getData(); + } elsif ($node->getNodeType() == XML::DOM::COMMENT_NODE) { + print ""; + } elsif ($node->getNodeType() == XML::DOM::PROCESSING_INSTRUCTION_NODE) { + print "getTarget(), " ", $node->getData(), "?>"; + } else { + die "Unexpected node type: ", $node->getNodeType(), "\n"; + } +} + +sub printXML_OLD { + my $node = shift; + if ($node->getNodeType() == XML::DOM::ELEMENT_NODE) { if ($node->getTagName ne 'define' || $used{$node->getAttribute('name')}) { -- 2.40.0