This example shows how to write a SAX filter to extract phone numbers
from a directory file       written in XML.       
MAIN
  DEFINE f om.SaxDocumentHandler
  LET f = om.SaxDocumentHandler.createForName("module1")
  CALL f.readXmlFile("customers")
END MAIN
 
Note: 
- The parameter of the createForName() method specifies the name
of a source file that has been           compiled into a .42m file
("module1.42m" in our example).
 
 
The module "module1.4gl":       
FUNCTION startDocument()
END FUNCTION
FUNCTION processingInstruction(name,data)
  DEFINE name,data STRING
END FUNCTION
FUNCTION startElement(name,attr)
  DEFINE name STRING
  DEFINE attr om.SaxAttributes 
  DEFINE i INTEGER
  IF name="Customer" THEN
     DISPLAY attr.getValue("lname")," ",
            attr.getValue("fname"),":",
            COLUMN 60, attr.getValue("phone")
  END IF
END FUNCTION
FUNCTION endElement(name)
  DEFINE name STRING
END FUNCTION
FUNCTION endDocument()
END FUNCTION
FUNCTION characters(chars)
  DEFINE chars STRING
END FUNCTION
FUNCTION skippedEntity(chars)
  DEFINE chars STRING
END FUNCTION
 
The XML file "customers":
<Customers>
  <Customer customer_num="101" fname="Ludwig" lname="Pauli"
    company="All Sports Supplies" address1="213 Erstwild Court"
    address2="" city="Sunnyvale" state="CA" zip-code="94086"
    phone="408-789-8075" />
  <Customer customer_num="102" fname="Carole" lname="Sadler"
    company="Sports Spot" address1="785 Geary St"
    address2="" city="San Francisco" state="CA" zip-code="94117"
    phone="415-822-1289" />
  <Customer customer_num="103" fname="Philip" lname="Currie"
    company="Phil's Sports" address1="654 Poplar"
    address2="P. O. Box 3498" city="Palo Alto" state="CA"
    zip-code="94303" phone="415-328-4543" />
</Customers>