$inappendix = FALSE;
while (<>) {
if (/<appendix/) {
$inappendix = TRUE;
}
if (/<\/appendix/) {
$inappendix = FALSE;
}
if ((/^(.*<telephone[^>]*>)555-1234(.*)$/) && $inappendix) {
$pre = $1;
$post = $2;
if (!(/client\s*=\s*["']Jones["']/)) {
print $pre . "555-4321" . $post . "\n";
}
else {
print $_;
}
}
else {
print $_;
}
}
This is a somewhat simplistic implementation; for instance, it assumes
that there won't be more than one <telephone> on a single input line,
and it doesn't scale well for multiple clients that you're filtering
out. It also assumes no CDATA marked sections, and demonstrates why
</> makes the DPH's life impossible. I haven't actually run this, but
it's similar enough to other things I've done that I think it should
work.
-Chris
-- <!NOTATION SGML.Geek PUBLIC "-//Anonymous//NOTATION SGML Geek//EN"> <!ENTITY crism PUBLIC "-//O'Reilly//NONSGML Christopher R. Maden//EN" "<URL>http://www.oreilly.com/people/staff/crism/ <TEL>+1.617.499.7487 <USMAIL>90 Sherman Street, Cambridge, MA 02140 USA" NDATA SGML.Geek>xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ To (un)subscribe, mailto:majordomo@ic.ac.uk the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)