SDPL 20113.3: (XML APIs) JAXP1 3.3 JAXP: Java API for XML Processing n How can applications use XML processors? –In Java: through JAXP –An overview of.

Slides:



Advertisements
Similar presentations
J0 1 Marco Ronchetti - Web architectures – Laurea Specialistica in Informatica – Università di Trento Java XML parsing.
Advertisements

The Java Platform and XML Portable Code, Portable Data James Duncan Davidson Staff Engineer, Sun Microsystems, Inc.
XML Parsing Using Java APIs AIP Independence project Fall 2010.
SDPL 2002Notes 3: XML Processor Interfaces1 3.3 JAXP: Java API for XML Processing n How can applications use XML processors? –A Java-based answer: through.
SDPL 2003Notes 3: XML Processor Interfaces1 3.3 JAXP: Java API for XML Processing n How can applications use XML processors? –A Java-based answer: through.
JAXP Transformation Package and Xalan Extensions 黃立昇
Parsing XML into programming languages JAXP, DOM, SAX, JDOM/DOM4J, Xerces, Xalan, JAXB.
Xerces The Apache XML Project Yvonne Yao. Introduction Set of libraries that provides functionalities to parse XML documents Set of libraries that provides.
XML Parser. Why Need a XML Parser ? Check XML syntax. ( is well-formed ? ) Validation. ( DTD and XML Schema ) Allow programmatic access to the document’s.
21-Jun-15 SAX (Abbreviated). 2 XML Parsers SAX and DOM are standards for XML parsers-- program APIs to read and interpret XML files DOM is a W3C standard.
MC365 XML Parsers. Today We Will Cover: An overview of the Java API’s used for XML processing Creating an XML document in Java Parsing an XML document.
JAX- Java APIs for XML by J. Pearce. Some XML Standards Basic –SAX (sequential access parser) –DOM (random access parser) –XSL (XSLT, XPATH) –DTD Schema.
XML: Java Dr Andy Evans. Java and XML Couple of things we might want to do: Parse/write data as XML. Load and save objects as XML. We’ll mainly discuss.
17 Apr 2002 XML Programming: TrAX Andy Clark. Java API for XML Processing Standard Java API for loading, creating, accessing, and transforming XML documents.
Chapter 13 XML Concept of XML Simple Example of XML XML vs. HTML in Syntax XML Structure DTD and CDATA Sections Concept of SAX Processing Download and.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools Leonidas Fegaras.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools Leonidas Fegaras.
17 Apr 2002 XML Programming: JAXP Andy Clark. Java API for XML Processing Standard Java API for loading, creating, accessing, and transforming XML documents.
The Joy of SAX (and DOM, and JDOM…) Bill MacCartney 11 October 2004.
SDPL 2003Notes 3: XML Processor Interfaces1 3. XML Processor APIs n How can applications manipulate structured documents? –An overview of document parser.
1 Document Object Model (DOM) MV4920 – XML 24 September 2001 Simon R. Goerger MAJ, US Army
XML and its applications: 4. Processing XML using PHP.
Structured-Document Processing Languages Spring 2011 Course Review Repetitio mater studiorum est!
Java API for XML Processing (JAXP) توسط : محمّدمهدي حامد استاد راهنما : دكتر مسعود رهگذر.
SDPL 2004Notes 3: XML Processor Interfaces1 3.3 JAXP: Java API for XML Processing n How can applications use XML processors? –A Java-based answer: through.
Structured-Document Processing Languages Spring 2005 Course Review Repetitio mater studiorum est!
Advanced Java Session 9 New York University School of Continuing and Professional Studies.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools.
1 JAXP & XSLT. Objectives 2  TrAX API  Transforming XML Documents  Workshops.
3/29/2001 O'Reilly Java Java API for XML Processing 1.1 What’s New Edwin Goei Engineer, Sun Microsystems.
1 Java and XML Modified from presentation by: Barry Burd Drew University Portions © 2002 Hungry Minds, Inc.
EXtensible Markup Language (XML) James Atlas July 15, 2008.
SDPL 2002Notes 3: XML Processor Interfaces1 3. XML Processor APIs n How can applications manipulate structured documents? –An overview of document parser.
SDPL 20113: XML APIs and SAX1 3. XML Processor APIs n How can (Java) applications manipulate structured (XML) documents? –An overview of XML processor.
On-the-fly Validation of XML Markup Languages using off-the-shelf Tools Mikko Saesmaa Pekka Kilpeläinen Dept of Computer Science University of Kuopio,
XML Parsers Overview  Types of parsers  Using XML parsers  SAX  DOM  DOM versus SAX  Products  Conclusion.
SAX. What is SAX SAX 1.0 was released on May 11, SAX is a common, event-based API for parsing XML documents Primarily a Java API but there implementations.
XML A web enabled data description language 4/22/2001 By Mark Lawson & Edward Ryan L’Herault.
XML Processing in Java. Required tools Sun JDK 1.4, e.g.: JAXP (part of Java Web Services Developer Pack, already in Sun.
Java API for XML Processing (JAXP) Dr. Rebhi S. Baraka Advanced Topics in Information Technology (SICT 4310) Department of Computer.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
Sheet 1XML Technology in E-Commerce 2001Lecture 3 XML Technology in E-Commerce Lecture 3 DOM and SAX.
CSE 6331 © Leonidas Fegaras XML Tools1 XML Tools.
XML Study-Session: Part III
Document Object Model DOM. Agenda l Introduction to DOM l Java API for XML Parsing (JAXP) l Installation and setup l Steps for DOM parsing l Example –Representing.
Java and XML. What is XML XML stands for eXtensible Markup Language. A markup language is used to provide information about a document. Tags are added.
COSC617 Project XML Tools Mark Liu Sanjay Srivastava Junping Zhang.
Dom and XSLT Dom – document object model DOM – collection of nodes in a tree.
1 Introduction JAXP. Objectives  XML Parser  Parsing and Parsers  JAXP interfaces  Workshops 2.
Structured-Document Processing Languages Spring 2004 Course Review Repetitio mater studiorum est!
Web services. DOM parsing and SOAP.. Summary. ● Exercise: SAX-Based checkInvoice(), ● push parsing, ● event-based parsing, ● traversal order is depth-first.
SDPL 20063: XML Processor Interfaces1 3. XML Processor APIs n How can (Java) applications manipulate structured (XML) documents? –An overview of XML processor.
7-Mar-16 Simple API XML.  SAX and DOM are standards for XML parsers-- program APIs to read and interpret XML files  DOM is a W3C standard  SAX is an.
SDPL 2001Notes 3: XML Processor Interfaces1 3. XML Processor APIs n How applications can manipulate structured documents? –An overview of document parser.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved Chapter 7 Representing Web Data:
1 Validation SAX-DOM. Objectives 2  Schema Validation Framework  XML Validation After Transformation  Workshops.
Java API for XML Processing
Lecture Transforming Data: Using Apache Xalan to apply XSLT transformations Marc Dumontier Blueprint Initiative Samuel Lunenfeld Research Institute.
{ XML Technologies } BY: DR. M’HAMED MATAOUI
XML Parsers Overview Types of parsers Using XML parsers SAX DOM
Unit 4 Representing Web Data: XML
Parsing XML into programming languages
Using XML Tools CS551 – Fall 2001.
Java/XML.
Chapter 7 Representing Web Data: XML
XML Parsers Overview Types of parsers Using XML parsers SAX DOM
Java API for XML Processing
XML Problems and Solutions
XML and its applications: 4. Processing XML using PHP
Presentation transcript:

SDPL : (XML APIs) JAXP1 3.3 JAXP: Java API for XML Processing n How can applications use XML processors? –In Java: through JAXP –An overview of the JAXP interface »What does it specify? »What can be done with it? »How do the JAXP components fit together? [Partly based on Sun tutorial “An Overview of the APIs”, from which some graphics are borrowed; Chap 4 in online J2EE 1.4 Tutorial]

SDPL : (XML APIs) JAXP2 Some History: JAXP Versions n JAXP 1.1 included in Java JDK 1.4 (2001) n An interface for “plugging-in” and using XML processors in Java applications –includes packages »org.xml.sax: SAX 2.0 »org.w3c.dom: DOM Level 2 »javax.xml.parsers: initialization and use of parsers »javax.xml.transform: initialization and use of Transformers (XSLT processors)

SDPL : (XML APIs) JAXP3 Later Versions: 1.2 n JAXP 1.2 added property-strings for setting the language and source of a schema used for validation – properties/schemaLanguage – properties/schemaSource –JAXP 1.3 allows to set the schema by setSchema(Schema) method of the Factory classes (used to initialize SAXParsers or DOM DocumentBuilders)

SDPL : (XML APIs) JAXP4 Later Versions: 1.3 & 1.4 n JAXP 1.3 major update, included in JDK 1.5 (2005) –more flexible validation (decoupled from parsing) –DOM Level 3 Core, and Load and Save –API for applying XPath to do documents –mapping btw XML Schema and Java data types n JAXP 1.4 maintenance release, included in JDK 1.6 –includes the Streaming API for XML (StAX) n We'll focus on basic ideas (of JAXP 1.1) –touching validation, and discussing StAX in some detail

SDPL : (XML APIs) JAXP5 JAXP: XML processor plugin (1) n Vendor-independent method for selecting processor implementations at run time –principally through system properties javax.xml.parsers.SAXParserFactory javax.xml.parsers.DocumentBuilderFactory javax.xml.transform.TransformerFactory –Set on command line (say, to select Xerces (current default) as the DOM implementation): $ java -D javax.xml.parsers.DocumentBuilderFactory= org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

SDPL : (XML APIs) JAXP6 JAXP: XML processor plugin (2) –Set during execution (  Saxon as the XSLT impl): System.setProperty( "javax.xml.transform.TransformerFactory", "com.icl.saxon.TransformerFactoryImpl"); n By default, reference implementations used –Apache Xerces as the XML parser –Xalan (JDK 1.4) / XSLTC (JDK 1.6) as the XSLT processor n Supported by a few compliant processors: –Parsers: Apache Crimson and Xerces, Aelfred, Oracle XML Parser for Java, libxml2 (via GNU JAXP libxmlj) –Transformers: Apache Xalan, Saxon, GNU XSL transformer "highlyexperimental"

SDPL : (XML APIs) JAXP7 JAXP: Basic Functionality n Parsing using SAX 2.0 or DOM (Level 3) n Transformation using XSLT –(more about XSLT later) n Adds functionality missing from SAX 2.0 and DOM Level 2: –controlling validation and handling of parse errors »error handling can be controlled in SAX, by implementing ErrorHandler methods –loading and saving of DOM Document objects

SDPL : (XML APIs) JAXP8 JAXP Parsing API Included in JAXP package javax.xml.parsers Included in JAXP package javax.xml.parsers javax.xml.parsers Used for invoking and using SAX … SAXParserFactory spf = SAXParserFactory.newInstance(); Used for invoking and using SAX … SAXParserFactory spf = SAXParserFactory.newInstance(); and DOM parser implementations: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

SDPL : (XML APIs) JAXP9 XML.getXMLReader() JAXP: Using a SAX parser (1) f.xml.parse( ”f.xml”) ”f.xml”).newSAXParser()

SDPL : (XML APIs) JAXP10 JAXP: Using a SAX parser (2) n We have already seen this: SAXParserFactory spf = SAXParserFactory.newInstance(); try { SAXParser saxParser = spf.newSAXParser(); try { SAXParser saxParser = spf.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); ContentHandler handler = new myHdler(); XMLReader xmlReader = saxParser.getXMLReader(); ContentHandler handler = new myHdler(); xmlReader.setContentHandler(handler); xmlReader.setContentHandler(handler); xmlReader.parse(URIOrInputSrc); xmlReader.parse(URIOrInputSrc); } catch (Exception e) { } catch (Exception e) {System.err.println(e.getMessage()); System.exit(1); }

SDPL : (XML APIs) JAXP11 f.xml JAXP: Using a DOM parser (1).parse(”f.xml”).newDocument().newDocumentBuilder()

SDPL : (XML APIs) JAXP12 JAXP: Using a DOM parser (2) n Parsing a file into a DOM Document: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory.newInstance(); try { // to get a new DocumentBuilder: DocumentBuilder builder = dbf.newDocumentBuilder(); Document domDoc = builder.parse(fileOrURIetc); } catch (ParserConfigurationException e) { } catch (ParserConfigurationException e) {e.printStackTrace()); System.exit(1); }

SDPL : (XML APIs) JAXP13 DOM building in JAXP XMLReader (SAXParser) XML ErrorHandler DTDHandler EntityResolver DocumentBuilder(ContentHandler) DOM Document DOM on top of SAX - So what?

SDPL : (XML APIs) JAXP14 JAXP: Controlling parsing (1) n Errors of DOM parsing can be handled –by creating a SAX ErrorHandler » to implement error, fatalError and warning methods and passing it to the DocumentBuilder: builder.setErrorHandler(new myErrHandler()); domDoc = builder.parse(fileName); n Parser properties can be configured: –for both SAXParserFactories and DocumentBuilderFactories (before parser/builder creation) : factory.setValidating(true/false) factory.setNamespaceAware(true/false)

SDPL : (XML APIs) JAXP15 JAXP: Controlling parsing (2) dbf.setIgnoringComments(true/false) dbf.setIgnoringElementContentWhitespace(true/false) dbf.setCoalescing(true/false) combine CDATA sections with surrounding text? combine CDATA sections with surrounding text? dbf.setExpandEntityReferences(true/false) n Further DocumentBuilderFactory configuration methods to control the form of the resulting DOM Document:

SDPL : (XML APIs) JAXP16 DOM vs. Other Java/XML APIs JDOM ( ), DOM4J ( ), JAXB ( java.sun.com/xml/jaxb ) JDOM ( ), DOM4J ( ), JAXB ( java.sun.com/xml/jaxb ) n The others may be more convenient to use, but … “The DOM offers not only the ability to move between languages with minimal relearning, but to move between multiple implementations in a single language – which a specific set of classes such as JDOM can’t support” “The DOM offers not only the ability to move between languages with minimal relearning, but to move between multiple implementations in a single language – which a specific set of classes such as JDOM can’t support” »J. Kesselman, IBM & W3C DOM WG

SDPL : (XML APIs) JAXP17 JAXP Transformation API Package javax.xml.transform Package javax.xml.transform javax.xml.transform TransformerFactory and Transformer classes; initialization similar to parser factories and parsers TransformerFactory and Transformer classes; initialization similar to parser factories and parsers n Allows application to apply a Transformer to a Source document to get a Result document n Transformer can be created –from an XSLT script –without instructions  an identity transformation from a Source to the Result

SDPL : (XML APIs) JAXP18 XSLT JAXP: Using Transformers (1).newTransformer(…).transform(.,.) Source

SDPL : (XML APIs) JAXP19 Transformation Source & Result n Transformation Source object can be –(a Document / Element node of) a DOM tree –a SAX XMLReader or –an input stream n Transformation Result object can be –(a node of) a DOM tree –a SAX ContentHandler or –an output stream

SDPL : (XML APIs) JAXP20 Source-Result combinations XMLReader (SAX Parser) Transformer DOM ContentHandler InputStream OutputStream DOMSourceResult

SDPL : (XML APIs) JAXP21 JAXP Transformation Packages n Classes to create Source and Result objects from DOM, SAX and I/O streams defined in packages –javax.xml.transform.dom, javax.xml.transform.sax, and javax.xml.transform.stream n Identity transformation to an output stream is a vendor-neutral way to serialize DOM documents –as an alternative to DOM3 Save

SDPL : (XML APIs) JAXP22 Serializing a DOM Document as XML text n By an identity transformation to an output stream: TransformerFactory tFactory = TransformerFactory.newInstance(); // Create an identity transformer: Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(myDOMdoc); StreamResult result = new StreamResult(System.out); transformer.transform(source, result);

SDPL : (XML APIs) JAXP23 Controlling the form of the result? Could specify the requested form of the result by an XSLT script, say, in file saveSpec.xslt : Could specify the requested form of the result by an XSLT script, say, in file saveSpec.xslt : <xsl:output encoding="ISO " indent="yes" <xsl:output encoding="ISO " indent="yes" doctype-system="reglist.dtd" /> doctype-system="reglist.dtd" /> </xsl:transform>

SDPL : (XML APIs) JAXP24 Creating an XSLT Transformer n Create a tailored transfomer: StreamSource saveSpecSrc = new StreamSource( new File(”saveSpec.xslt”) ); Transformer transformer = tFactory.newTransformer(saveSpecSrc); // and use it to transform a Source to a Result, // as before n The Source of transformation instructions could be given also as a DOMSource or SAXSource

SDPL : (XML APIs) JAXP25 Transformation OutputProperties Transformer myTr = tFactory.newTransformer(); // Set identity transformer's output properties: myTr.setOutputProperty(OutputKeys.ENCODING, "iso "); myTr.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "reglist.dtd"); myTr.setOutputProperty(OutputKeys.INDENT,"yes"); // Then use it as above Equivalent to the previous ”saveSpec.xslt” Transformer Equivalent to the previous ”saveSpec.xslt” Transformer

SDPL : (XML APIs) JAXP26 Stylesheet Parameters Can also pass parameters to a transformer created from a script like this: Can also pass parameters to a transformer created from a script like this: using myTrans.setParameter("In", 10) default value

JAXP Validation n JAXP 1.3 introduced also a Validation framework –based on familial Factory pattern, to provide independence of schema language and implementation »SchemaFactory  Schema  Validator –separates validation from parsing »say, to validate an in-memory DOM subtree –implementations must support XML Schema SDPL : (XML APIs) JAXP27

Validation Example: "Xeditor" n Xeditor, an experimental XML editor –to experiment and demonstrate JAXP- based, on-the-fly, multi-schema validation –M. Saesmaa and P. Kilpeläinen: On-the-fly Validation of XML Markup Languages using off- the-shelf Tools. Extreme Markup Languages 2007, Montréal, August 2007 SDPL : (XML APIs) JAXP28

SDPL : (XML APIs) JAXP29 Look & Feel of ”Xeditor” - off - WF check, as XML or DTD XML or DTD - validate using DTD, using DTD, or against schema or against schema

SDPL : (XML APIs) JAXP30 Different Schemas and Schema Languages n A Validator created when the user selects Schema

SDPL : (XML APIs) JAXP31 Event-driven document validation Modifified document passed to the Validator Modifified document passed to the Validator –errors caught as SAX parse exceptions

SDPL : (XML APIs) JAXP32 Efficiency of In-Memory Validation n Is brute-force re-validation too inefficient? n No: Delays normally unnoticeable times for validating XMLSchema.xsd

SDPL : (XML APIs) JAXP33 JAXP: Summary n An interface for using XML Processors –SAX/DOM parsers, XSLT transformers –schema-based validators (since JAXP 1.3) n Supports pluggability of XML processors n Defines means to control parsing, and handling of parse errors (through SAX ErrorHandlers) n Defines means to create and save DOM Documents