From: Norman Walsh Date: Thu, 20 Oct 2005 12:54:34 +0000 (+0000) Subject: Transform external parsed entities into XInclude statements X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=03737a452469c18ab98a80cea879e891ffaf4ff7;p=docbook-dsssl Transform external parsed entities into XInclude statements --- diff --git a/docbook/relaxng/tools/db4-entities.pl b/docbook/relaxng/tools/db4-entities.pl new file mode 100644 index 000000000..8fb4a393a --- /dev/null +++ b/docbook/relaxng/tools/db4-entities.pl @@ -0,0 +1,65 @@ +#!/usr/bin/perl -- # -*- Perl -*- + +# This script attempts to replace external parsed entities with +# XInclude elements. + +use strict; +use English; + +my $usage = "$0 input.xml\n"; + +my $file = shift @ARGV || die $usage; +die $usage unless -f $file; + +my %epe = (); + +open (F, $file); +read (F, $_, -s $file); +close (F); + +if (/^<\?xml\s.*?\?>\s*/) { + print $MATCH; + $_ = $POSTMATCH; +} + +my $body = ""; + +if (/^]+\[/s) { + print $MATCH; + $_ = $POSTMATCH; + if (/^(.*?)\]/s) { + print $MATCH; + $body = $POSTMATCH; + $_ = $1; + + while (/^\s*(<.*?>)/s) { + my $decl = $1; + $_ = $POSTMATCH; + + if ($decl =~ /"; + } else { + print "&$2;"; + } + + $body = $POSTMATCH; +} + +print $body;