| <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN"> |
| <!-- Copyright 2004 The Apache Software Foundation |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. --> |
| <html> |
| <head> |
| <!-- InstanceBeginEditable name="doctitle" --> |
| <title>Getting Started with XMLBeans</title> |
| <!-- InstanceEndEditable --> |
| <!--(Meta)==========================================================--> |
| |
| <meta http-equiv=Content-Type content="text/html; charset=$CHARSET;"> |
| |
| |
| <!-- InstanceBeginEditable name="metatags" --> |
| |
| <meta name="author" content="your name"> |
| <meta name="description" content="A description of the topic contents."> |
| <meta name="keywords" content="keywords to help in searches"> |
| <meta name="date last modified" content="10/25/02"> |
| <!-- InstanceEndEditable --> |
| |
| <!--(Links)=========================================================--> |
| <!-- InstanceBeginEditable name="head" --> |
| <link href="../xmlbeans.css" rel="stylesheet" type="text/css"> |
| <!-- InstanceEndEditable --> |
| <link href="../xmlbeans.css" rel="stylesheet" type="text/css"> |
| <a href="../../../core/index.html" id="index"></a> |
| <script language="JavaScript" src="../../../core/topicInfo.js"></script> |
| <script language="JavaScript" src="../../../core/CookieClass.js"></script> |
| <script language="JavaScript" src="../../../core/displayContent.js"></script> |
| </head> |
| |
| <!--(Body)==========================================================--> |
| <body> |
| <script language="JavaScript"> |
| |
| </script> |
| <!-- InstanceBeginEditable name="body" --> |
| <h1> Getting Started with XMLBeans</h1> |
| <div id="topictext"> |
| <p>XMLBeans provides intuitive ways to handle XML that make it easier for you |
| to access and manipulate XML data and documents in Java. </p> |
| <p>Characteristics of XMLBeans approach to XML:</p> |
| </div> |
| <ul> |
| <li> |
| <div>It provides a familiar Java object-based view of XML data without losing |
| access to the original, native XML structure.</div> |
| </li> |
| <li> |
| <div>The XML's integrity as a document is not lost with XMLBeans. XML-oriented |
| APIs commonly take the XML apart in order to bind to its parts. With XMLBeans, |
| the entire XML instance document is handled as a whole. The XML data is |
| stored in memory as XML. This means that the document order is preserved |
| as well as the original element content with whitespace.</div> |
| </li> |
| <li> |
| <div>With types generated from schema, access to XML instances is through |
| JavaBean-like accessors, with get and set methods.</div> |
| </li> |
| <li> |
| <div>It is designed with XML schema in mind from the beginning — XMLBeans |
| supports all XML schema definitions.</div> |
| </li> |
| <li>Access to XML is fast.</li> |
| </ul> |
| <div> |
| <p>The starting point for XMLBeans is XML schema. A schema (contained in an |
| XSD file) is an XML document that defines a set of rules to which other XML |
| documents must conform. The XML Schema specification provides a rich data |
| model that allows you to express sophisticated structure and constraints on |
| your data. For example, an XML schema can enforce control over how data is |
| ordered in a document, or constraints on particular values (for example, a |
| birth date that must be later than 1900). Unfortunately, the ability to enforce |
| rules like this is typically not available in Java without writing custom |
| code. XMLBeans honors schema constraints.</p> |
| <p class="notepara"><strong>Note:</strong> Where an XML schema defines rules |
| for an XML document, an XML <em>instance</em> is an XML document that conforms |
| to the schema.</p> |
| <p>You compile a schema (XSD) file to generate a set of Java interfaces that |
| mirror the schema. With these types, you process XML instance documents that |
| conform to the schema. You bind an XML instance document to these types; changes |
| made through the Java interface change the underlying XML representation.</p> |
| <p>Previous options for handling XML include using XML programming interfaces |
| (such as DOM or SAX) or an XML marshalling/binding tool (such as JAXB). Because |
| it lacks strong schema-oriented typing, navigation in a DOM-oriented model |
| is more tedious and requires an understanding of the complete object model. |
| JAXB provides support for the XML schema specification, but handles only a |
| subset of it; XMLBeans supports all of it. Also, by storing the data in memory |
| as XML, XMLBeans is able to reduce the overhead of marshalling and demarshalling.</p> |
| <h1>Accessing XML Using Its Schema</h1> |
| <p>To get a glimpse of the kinds of things you can do with XMLBeans, take a |
| look at an example using XML for a purchase order. The purchase order XML |
| contains data exchanged by two parties, such as two companies. Both parties |
| need to be able to rely on a consistent message shape, and a schema specifies |
| the common ground. </p> |
| <p>Here's what a purchase order XML instance might look like.</p> |
| <pre> |
| <po:purchase-order xmlns:po="http://openuri.org/easypo"> |
| <po:customer> |
| <po:name>Gladys Kravitz</po:name> |
| <po:address>Anytown, PA</po:address> |
| </po:customer> |
| <po:date>2003-01-07T14:16:00-05:00</po:date> |
| <po:line-item> |
| <po:description>Burnham's Celestial Handbook, Vol 1</po:description> |
| <po:per-unit-ounces>5</po:per-unit-ounces> |
| <po:price>21.79</po:price> |
| <po:quantity>2</po:quantity> |
| </po:line-item> |
| <po:line-item> |
| <po:description>Burnham's Celestial Handbook, Vol 2</po:description> |
| <po:per-unit-ounces>5</po:per-unit-ounces> |
| <po:price>19.89</po:price> |
| <po:quantity>2</po:quantity> |
| </po:line-item> |
| <po:shipper> |
| <po:name>ZipShip</po:name> |
| <po:per-ounce-rate>0.74</po:per-ounce-rate> |
| </po:shipper> |
| </po:purchase-order></pre> |
| <p>This XML includes a root element, <span class="langinline">purchase-order</span>, |
| that has three kinds of child elements: <span class="langinline">customer</span>, |
| <span class="langinline">date</span>, <span class="langinline">line-item</span>, |
| and <span class="langinline">shipper</span>. An intuitive, object-based view |
| of this XML would provide an object representing the <span class="langinline">purchase-order</span> |
| element, and it would have methods for getting the date and for getting subordinate |
| objects for <span class="langinline">customer</span>, <span class="langinline">line-item</span>, |
| and <span class="langinline">shipper</span> elements. Each of the last three |
| would have its own methods for getting the data inside them as well.</p> |
| <h2>Looking at the Schema</h2> |
| <p>The following XML is the the schema for the preceding purchase order XML. |
| It defines the XML's "shape" — what its elements are, what |
| order they appear in, which are children of which, and so on.</p> |
| </div> |
| <div> |
| <pre> |
| <xs:schema targetNamespace="http://openuri.org/easypo" |
| xmlns:po="http://openuri.org/easypo" |
| xmlns:xs="http://www.w3.org/2001/XMLSchema" |
| elementFormDefault="qualified"> |
| |
| <xs:element name="purchase-order"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element name="customer" type="po:customer"/> |
| <xs:element name="date" type="xs:dateTime"/> |
| <xs:element name="line-item" type="po:line-item" minOccurs="0" maxOccurs="unbounded"/> |
| <xs:element name="shipper" type="po:shipper" minOccurs="0"/> |
| </xs:sequence> |
| </xs:complexType> |
| </xs:element> |
| <xs:complexType name="customer"> |
| <xs:sequence> |
| <xs:element name="name" type="xs:string"/> |
| <xs:element name="address" type="xs:string"/> |
| </xs:sequence> |
| </xs:complexType> |
| <xs:complexType name="line-item"> |
| <xs:sequence> |
| <xs:element name="description" type="xs:string"/> |
| <xs:element name="per-unit-ounces" type="xs:decimal"/> |
| <xs:element name="price" type="xs:double"/> |
| <xs:element name="quantity" type="xs:int"/> |
| </xs:sequence> |
| </xs:complexType> |
| <xs:complexType name="shipper"> |
| <xs:sequence> |
| <xs:element name="name" type="xs:string"/> |
| <xs:element name="per-ounce-rate" type="xs:decimal"/> |
| </xs:sequence> |
| </xs:complexType> |
| </xs:schema></pre> |
| <div> |
| <p>This schema describes the purchase order XML instance by defining the following:</p> |
| </div> |
| <ul> |
| <li> |
| <div>Definitions for three complex types — customer, line-item, and |
| shipper. These are the types used for the children of the purchase-order |
| element. In schema, a complex type is one that defines an element that |
| may have child elements and attributes. The sequence element nested in |
| the complex type lists its child elements.</div> |
| <p>These are also <em>global</em> types. They are global because they are |
| at the top level of the schema (in other words, just beneath the <span class="langinline">schema</span> |
| root element). This means that they may be referenced from anywhere else |
| in the schema.</p> |
| </li> |
| </ul> |
| </div> |
| <div> |
| <ul> |
| <li>Use of simple types within the complex types. The name, address, and description |
| elements (among others) are typed as simple types. As it happens, these |
| are also <em>built-in</em> types. A built-in type (here, one with the "xs" |
| prefix) is part of the schema specification. (The specification defines |
| 46 built-in types.)</li> |
| <li>A global element called purchase-order. This element definition includes |
| a nested complex type definition that specifies the child elements for a |
| purchase-order element. Notice that the complex type includes references |
| to the other complex types defined in this schema.</li> |
| </ul> |
| <div></div> |
| <p>In other words, the schema defines types for the child elements and describes |
| their position as subordinate to the root element, <span class="langinline">purchase-order</span>.</p> |
| <p>When you use the XMLBean compiler with an XSD file such as this one, you |
| generate a JAR file containing the interfaces generated from the schema.</p> |
| <h2>Writing Java Code That Uses the Interfaces</h2> |
| <p>With the XMLBeans interfaces in your application, you can write code that |
| uses the new types to handle XML based on the schema. Here's an example that |
| extracts information about each of the ordered items in the purchase order |
| XML, counts the items, and calculates a total of their prices. In particular, |
| look at the use of types generated from the schema and imported as part of |
| the <span class="langinline">org.openuri.easypo</span> package. </p> |
| <p>The <span class="langinline">printItems</span> method receives a <span class="langinline">File</span> |
| object containing the purchase order XML file.</p> |
| <pre> |
| package docs.xmlbeans; |
| |
| import java.io.File; |
| import org.apache.xmlbeans.*; |
| import org.openuri.easypo.PurchaseOrderDocument; |
| import org.openuri.easypo.PurchaseOrder; |
| import org.openuri.easypo.LineItem; |
| |
| public class POHandler |
| { |
| public static void printItems(File po) throws Exception |
| { |
| /* |
| * All XMLBeans schema types provide a nested Factory class you can |
| * use to bind XML to the type, or to create new instances of the type. |
| * Note that a "Document" type such as this one is an XMLBeans |
| * construct for representing a global element. It provides a way |
| * for you to get and set the contents of the entire element. |
| * |
| * Also, note that the parse method will only succeed if the |
| * XML you're parsing appears to conform to the schema. |
| */ |
| PurchaseOrderDocument poDoc = |
| PurchaseOrderDocument.Factory.parse(po); |
| |
| /* |
| * The PurchaseOrder type represents the purchase-order element's |
| * complex type. |
| */ |
| PurchaseOrder po = poDoc.getPurchaseOrder(); |
| |
| /* |
| * When an element may occur more than once as a child element, |
| * the schema compiler will generate methods that refer to an |
| * array of that element. The line-item element is defined with |
| * a maxOccurs attribute value of "unbounded", meaning that |
| * it may occur as many times in an instance document as needed. |
| * So there are methods such as getLineItemArray and setLineItemArray. |
| */ |
| LineItem[] lineitems = po.getLineItemArray(); |
| System.out.println("Purchase order has " + lineitems.length + " line items."); |
| |
| double totalAmount = 0.0; |
| int numberOfItems = 0; |
| |
| /* |
| * Loop through the line-item elements, using generated accessors to |
| * get values for child elements such a description, quantity, and |
| * price. |
| */ |
| for (int j = 0; j < lineitems.length; j++) |
| { |
| System.out.println(" Line item: " + j); |
| System.out.println( |
| " Description: " + lineitems[j].getDescription()); |
| System.out.println(" Quantity: " + lineitems[j].getQuantity()); |
| System.out.println(" Price: " + lineitems[j].getPrice()); |
| numberOfItems += lineitems[j].getQuantity(); |
| totalAmount += lineitems[j].getPrice() * lineitems[j].getQuantity(); |
| } |
| System.out.println("Total items: " + numberOfItems); |
| System.out.println("Total amount: " + totalAmount); |
| } |
| } |
| </pre> |
| <p>Notice that types generated from the schema reflect what's in the XML:</p> |
| </div> |
| <ul> |
| <li> |
| <div>A <span class="langinline">PurchaseOrderDocument</span> represents the |
| global root element.</div> |
| </li> |
| <li> |
| <div>A <span class="langinline">getPurchaseOrder</span> method returns a <span class="langinline">PurchaseOrderDocument.PurchaseOrder</span> |
| type that contains child elements, including <span class="langinline">line-item</span>. |
| A <span class="langinline">getLineItemArray</span> method returns a <span class="langinline">LineItem</span> |
| array containing the <span class="langinline">line-item</span> elements.</div> |
| </li> |
| <li>Other methods, such as <span class="langinline">getQuantity</span>, <span class="langinline">getPrice</span>, |
| and so on, follow naturally from what the schema describes, returning corresponding |
| children of the <span class="langinline">line-item</span> element.</li> |
| <li>The name of the package containing these types is derived from the schema's |
| target namespace.</li> |
| </ul> |
| <div> |
| <p>Capitalization and punctuation for generated type names follow Java convention. |
| Also, while this example parses the XML from a file, other <span class="langinline">parse</span> |
| methods support a Java <span class="langinline">InputStream</span> object, |
| a <span class="langinline">Reader</span> object, and so on.</p> |
| <p>The preceding Java code prints the following to the console:</p> |
| </div> |
| <div> |
| <pre> |
| Purchase order has 3 line items. |
| Line item 0 |
| Description: Burnham's Celestial Handbook, Vol 1 |
| Quantity: 2 |
| Price: 21.79 |
| Line item 1 |
| Description: Burnham's Celestial Handbook, Vol 2 |
| Quantity: 2 |
| Price: 19.89 |
| Total items: 4 |
| Total amount: 41.68</pre> |
| <h2>Creating New XML Instances from Schema</h2> |
| <p>As you've seen XMLBeans provides a "factory" class you can use |
| to create new instances. The following example creates a new <span class="langinline">purchase-order</span> |
| element and adds a <span class="langinline">customer</span> child element. |
| It then inserts <span class="langinline">name</span> and <span class="langinline">address</span> |
| child elements, creating the elements and setting their values with a single |
| call to their <span class="langinline">set</span> methods.</p> |
| <pre> |
| public PurchaseOrderDocument createPO() |
| { |
| PurchaseOrderDocument newPODoc = PurchaseOrderDocument.Factory.newInstance(); |
| PurchaseOrder newPO = newPODoc.addNewPurchaseOrder(); |
| Customer newCustomer = newPO.addNewCustomer(); |
| newCustomer.setName("Doris Kravitz"); |
| newCustomer.setAddress("Bellflower, CA"); |
| return newPODoc; |
| } |
| </pre> |
| <p>The following is the XML that results. Note that XMLBeans assigns the correct |
| namespace based on the schema, using an "ns1" (or, "namespace |
| 1") prefix. For practical purposes, the prefix itself doesn't really |
| matter — it's the namespace URI (http://openuri.org/easypo) that defines |
| the namespace. The prefix is merely a marker that represents it.</p> |
| <pre><ns1:purchase-order xmlns:ns1="http://openuri.org/easypo"> |
| <ns1:customer> |
| <ns1:name>Doris Kravitz</ns1:name> |
| <ns1:address>Bellflower, CA</ns1:address> |
| </ns1:customer> |
| </ns1:purchase-order> |
| </pre> |
| <p>Note that all types (including those generated from schema) inherit from |
| <span class="langinline">XmlObject</span>, and so provide a <span class="langinline">Factory</span> |
| class. For an overview of the type system in which <span class="langinline">XmlObject</span> |
| fits, see <a href="conXMLBeansSupportBuiltInSchemaTypes.html">XMLBeans Support |
| for Built-In Schema Types</a>. For reference information, see <a href="../reference/org/apache/xmlbeans/XmlObject.html">XmlObject |
| Interface</a>.</p> |
| <h1>XMLBeans Hierarchy</h1> |
| <p>The generated types you saw used in the preceding example are actually part |
| of a hierarchy of XMLBeans types. This hierarchy is one of the ways in which |
| XMLBeans presents an intuitive view of schema. At the top of the hierarchy |
| is <span class="langinline">XmlObject</span>, the base interface for XMLBeans |
| types. Beneath this level, there are two main type categories: generated types |
| that represent user-derived schema types, and included types that represent |
| built-in schema types.</p> |
| This topic has already introduced generated types. For more information, see |
| <a href="conJavaTypesGeneratedFromUserDerived.html">Java Types Generated from |
| User-Derived Schema Types.</a> |
| <h2>Built-In Type Support</h2> |
| <p>In addition to types generated from a given schema, XMLBeans provides 46 |
| Java types that mirror the 46 built-in types defined by the XML schema specification. |
| Where schema defines <span class="langinline">xs:string</span>, <span class="langinline">xs:decimal</span>, |
| and <span class="langinline">xs:int</span>, for example, XMLBeans provides |
| <span class="langinline"><a href="../reference/org/apache/xmlbeans/XmlString.html">XmlString</a></span>, |
| <span class="langinline"><a href="../reference/org/apache/xmlbeans/XmlDecimal.html">XmlDecimal</a></span>, |
| and <span class="langinline"><a href="../reference/org/apache/xmlbeans/XmlInt.html">XmlInt</a></span>. |
| Each of these also inherits from <span class="langinline">XmlObject</span>, |
| which corresponds to the built-in schema type <span class="langinline">xs:anyType</span>.</p> |
| <p>XMLBeans provides a way for you to handle XML data as these built-in types. |
| Where your schema includes an element whose type is, for example, <span class="langinline">xs:int</span>, |
| XMLBeans will provide a generated method designed to return an <span class="langinline">XmlInt</span>. |
| In addition, as you saw in the preceding example, for most types there will |
| also be a method that returns a natural Java type such as <span class="langinline">int</span>. |
| The following two lines of code return the <span class="langinline">quantity</span> |
| element's value, but return it as different types.</p> |
| <pre> |
| // Methods that return simple types begin with an "x". |
| XmlInt xmlQuantity = lineitems[j].xgetQuantity(); |
| // Methods that return a natural Java type are unadorned. |
| int javaQuantity = lineitems[j].getQuantity(); |
| </pre> |
| <p>In a sense both get methods navigate to the <span class="langinline">quantity</span> |
| element; the <span class="langinline">getQuantity</span> method goes a step |
| further and converts the elements value to the most appropriate natural Java |
| type before returning it. (XMLBeans also provides a means for validating the |
| XML as you work with it.)</p> |
| <p>If you know a bit about XML schema, XMLBeans types should seem fairly intuitive. |
| If you don't, you'll learn a lot by experimenting with XMLBeans using your |
| own schemas and XML instances based on them. </p> |
| <p>For more information on the methods of types generated from schema, see <a href="conMethodsForGeneratedJavaTypes.html">Methods |
| for Types Generated From Schema</a>. For more about the how XMLBeans represents |
| built-in schema types, see <a href="conXMLBeansSupportBuiltInSchemaTypes.html">XMLBeans |
| Support for Built-In Schema Types</a>.</p> |
| <h1>Using XQuery Expressions</h1> |
| <p>With XMLBeans you can use XQuery to query XML for specific pieces of data. |
| XQuery is sometimes referred to as "SQL for XML" because it provides |
| a mechanism to access data directly from XML documents, much as SQL provides |
| a mechanism for accessing data in traditional databases.</p> |
| <p>XQuery borrows some of its syntax from XPath, a syntax for specifying nested |
| data in XML. The following example returns all of the <span class="langinline">line-item</span> |
| elements whose <span class="langinline">price</span> child elements have values |
| less than or equal to 20.00:</p> |
| <pre> |
| PurchaseOrderDocument doc = PurchaseOrderDocument.Factory.parse(po); |
| |
| /* |
| * The XQuery expression is the following two strings combined. They're |
| * declared separately here for convenience. The first string declares |
| * the namespace prefix that's used in the query expression; the second |
| * declares the expression itself. |
| */ |
| String nsText = "declare namespace po = 'http://openuri.org/easypo'; "; |
| String pathText = "$this/po:purchase-order/po:line-item[po:price <= 20.00]"; |
| String queryText = nsText + pathText; |
| |
| XmlCursor itemCursor = doc.newCursor().execQuery(queryText); |
| System.out.println(itemCursor.xmlText()); |
| </pre> |
| <p>This code creates a new cursor at the start of the document. From there, |
| it uses the <span class="langinline">XmlCursor</span> interface's <span class="langinline">execQuery</span> |
| method to execute the query expression. In this example, the method's parameter |
| is an XQuery expression that simply says, "From my current location, |
| navigate through the <span class="langinline">purchase-order</span> element |
| and retrieve those <span class="langinline">line-item</span> elements whose |
| value is less than or equal to 20.00." The <span class="langinline">$this</span> |
| variable means "the current position."</p> |
| <p>For more information about XQuery, see <a href="http://www.w3.org/TR/xquery/" target="_blank">XQuery |
| 1.0: An XML Query Language</a> at the W3C web site.</p> |
| <h2>Using XML Cursors</h2> |
| <p>In the preceding example you may have noticed the <span class="langinline"><a href="../reference/org/apache/xmlbeans/XmlCursor.html">XmlCursor</a></span> |
| interface. In addition to providing a way to execute XQuery expression, an |
| XML cursors offers a fine-grained model for manipulating data. The XML cursor |
| API, analogous to the DOM's object API, is simply a way to point at a particular |
| piece of data. So, just like a cursor helps navigate through a word processing |
| document, the XML cursor defines a location in XML where you can perform actions |
| on the selected XML.</p> |
| <p>Cursors are ideal for moving through an XML document when there's no schema |
| available. Once you've got the cursor at the location you're interested in, |
| you can perform a variety of operations with it. For example, you can set |
| and get values, insert and remove fragments of XML, copy fragments of XML |
| to other parts of the document, and make other fine-grained changes to the |
| XML document.</p> |
| <p>The following example uses an XML cursor to navigate to the <span class="langinline">customer</span> |
| element's <span class="langinline">name</span> child element.</p> |
| <pre> |
| PurchaseOrderDocument doc = |
| PurchaseOrderDocument.Factory.parse(po); |
| |
| XmlCursor cursor = doc.newCursor(); |
| cursor.toFirstContentToken(); |
| cursor.toFirstChildElement(); |
| cursor.toFirstChildElement(); |
| System.out.println(cursor.getText()); |
| |
| cursor.dispose(); |
| </pre> |
| <p>What's happening here? As with the earlier example, the code loads the XML |
| from a <span class="langinline">File</span> object. After loading the document, |
| the code creates a cursor at its beginning. Moving the cursor a few times |
| takes it to the nested <span class="langinline">name </span> element. Once |
| there, the getText method retrieves the element's value.</p> |
| <p>This is just an introduction to XML cursors. For more information about using |
| cursors, see <a href="conNavigatingXMLwithCursors.html">Navigating XML with |
| Cursors</a>.</p> |
| <h2>Where to Go Next</h2> |
| </div> |
| <ul> |
| <li> |
| <div>XMLBeans provides intuitive ways to handle XML, particularly if you're |
| starting with schema. If you're accessing XML that's based on a schema, |
| you'll probably find it most efficient to access the XML through generated |
| types specific to the schema. To do this, you begin by compiling the schema |
| to generate interfaces. For more information on using XMLBeans types generated |
| by compiling schema, see <a href="conJavaTypesGeneratedFromUserDerived.html">Java |
| Types Generated From User-Derived Schema Types</a> and <a href="conMethodsForGeneratedJavaTypes.html">Methods |
| for Types Generated From Schema</a>.</div> |
| </li> |
| <li> |
| <div>You might be interested in reading more about the type system on which |
| XMLBeans is based, particularly if you're using types generated from schema. |
| XMLBeans provides a hierarchical system of types that mirror what you find |
| in the XML schema specification itself. If you're working with schema, you |
| might find it helps to understand how these types work. For more information, |
| see <a href="conXMLBeansSupportBuiltInSchemaTypes.html">XMLBeans Support |
| for Built-In Schema Types</a> and <a href="conIntroToTheSchemaTypeSystem.html">Introduction |
| to Schema Type Signatures</a>.</div> |
| </li> |
| <li> |
| <div>XMLBeans provides access to XML through XQuery, which borrows path syntax |
| from XPath. With XQuery, you can specify specific fragments of XML data |
| with or without schema. To learn more about using XQuery and XPath in XMLBeans, |
| see <a href="conSelectingXMLwithXQueryPathXPath.html">Selecting XML with |
| XQuery and XPath</a>.</div> |
| </li> |
| <li>You can use the <span class="langinline">XmlCursor</span> interface for |
| fine-grained navigation and manipulation of XML. For more information, see |
| <a href="conNavigatingXMLwithCursors.html">Navigating XML with Cursors</a>.</li> |
| </ul> |
| <div> |
| <p class="notepara"><strong>Note:</strong> The xbean.jar file that contains |
| the XMLBeans library is fully functional as a standalone library.</p> |
| <h1>Related Topics</h1> |
| <p><a href="../../samples/navXMLBeansSamples.html">XMLBeans Samples</a></p> |
| </div> |
| <!-- InstanceEndEditable --> |
| <script language="JavaScript"> |
| |
| </script> |
| </body> |
| </html> |