Skip to Content
Learning XML
book

Learning XML

by Erik T. Ray
January 2001
Beginner to intermediate
368 pages
9h 10m
English
O'Reilly Media, Inc.
Content preview from Learning XML

8.3. Tree-Based Processing

When a pass or two through the document isn't enough for your program, you may need to build a tree representation of the document to keep it in memory until processing is done. If event-based processing represents serial access to XML, then tree-based processing represents random access. Your program can jump around in the document, since it's now liberated from the linear, single-pass path.

8.3.1. Example: A Simple Transformation Tool

The program in Example 8.2 extends the parser from Example 8.1 to build a tree data structure. After the tree is built, a processing routine traverses it, node by node, applying rules to modify it. This version is called dbfix.

Traversing a tree is not difficult. For each node, if there are children (a nonempty element, for example), you process each child of the node, repeat for the children of the children, and so on, until you reach the leaves of the tree. This process is called recursion, and its hallmark is a routine that calls itself. The subroutine process_tree() is recursive, because it calls itself for each of the children of a nonempty element. The routine that outputs the tree to a file, serialize_tree(), also uses recursion in that way.

This program performs a set of transformations on elements, encoded in rules. The hash table %unwrap_element contains rules for "unwrapping" elements in certain contexts. To unwrap an element is to delete the start and end tags, leaving the content in place. The unwrapping ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Learning XML, 2nd Edition

Learning XML, 2nd Edition

Erik T. Ray
Real World XML

Real World XML

Steven Holzner
Inside XML

Inside XML

Steven Holzner
XML Hacks

XML Hacks

Michael Fitzgerald

Publisher Resources

ISBN: 0596000464Catalog PageErrata