Upload
barrie-tate
View
220
Download
0
Embed Size (px)
Citation preview
17 Apr 2002
XML Programming: TrAX
Andy Clark
Java API for XML Processing
Standard Java API for loading, creating, accessing, and transforming XML documents– JAXP: parsing
Supports DOM and SAX
– TrAX: transformation Generic transformation framework
Java standard extension (i.e. javax package)– Defined by Sun JCP
Transformation API for XML
Transformation framework– Allows generic transformation from one form to
another
Examples:– Serializers– XSLT processors– etc…
javax.xml.transform (1 of 2)
Transformation– Transformer, TransformerFactory– Templates
Input and Output– Source– Result
javax.xml.transform (2 of 2)
Transformer control– ErrorListener– SourceLocator, URIResolver– OutputKeys
Other– TransformerConfigurationException– TransformerException– TransformerFactoryConfigurationError
Input and Output
javax.xml.transform.stream– StreamSource– StreamResult
javax.xml.transform.dom– DOMSource, DOMResult– DOMLocator
javax.xml.transform.sax– SAXSource, SAXResult– SAXTransformerFactory– TransformerHandler, TemplatesHandler
Stream Input and Output
StreamSource– Specifies document stream to parse
StreamResult– Specifies stream for serialization of document– OutputKeys controls serialization settings
DOM/SAX Input and Output
Document Object Model– DOMSource
Specifies document or node to process
– DOMResult Specifies document factory for new nodes
Simple API for XML– SAXSource
Specifies XMLReader to parse document
– SAXResult Specifies handler for generated events
Transform Document (1 of 3)
Identity transform– Get instance of transformer factory
TransformerFactory factory = TransformerFactory.newInstance();
– Create transformer Transformer transformer = factory.newTransformer();
– Create input and output Source source = new StreamSource(“document.xml”); Result result = new StreamResult(System.out);
– Transform document transformer.transform(source, result);
Transform Document (2 of 3)
Transform with stylesheet (1 of 2)– Get instance of transformer factory
TransformerFactory factory = TransformerFactory.newInstance();
– Create templates Source templatesSource = new StreamSource(“style.xsl”); Templates templates = factory.newTemplates(templatesSour
ce);
– Create transformer Transformer transformer = templates.newTransformer();
Transform Document (3 of 3)
Transform with Stylesheet (2 of 2)– Create input and output
Source source = new StreamSource(“document.xml”); Result result = new StreamResult(System.out);
– Transform document transformer.transform(source, result);
Error Handling and Entity Resolution
Transformer– Can set a TrAX ErrorListener– Can set a TrAX URIResolver
URIResolver– Called when reference to multiple documents
Passed base and literal system identifiers of resource Example XPath: “document(‘book.xml’)/book/title”
– Returns a TrAX Source Note: This is super cool because it means that you can
cache (or generate) documents in memory.
Useful Links
JAXP– http://java.sun.com/xml/
Apache Xalan XSLT Processor– http://xml.apache.org/xalan-j/
XML Programming: TrAX
Andy Clark