Point taken, we absolutely need to update that page.

Radu

On Wed, 2008-08-06 at 21:46 +1000, Keith Corlett wrote:
> Folks,
> 
> RE: http://xmlbeans.apache.org/documentation/tutorial_getstarted.html
> 
> The "newbie pages" could use some work. It took me ages to get the
> purchase-order example (with XQueries) running... I couldn't workout
> which JAR's I needed, so I'm posting the whole shebang for the
> edification of the next poor bunny.
> 
> BTW... I'm running jdk1.6.0_04 on Windows Vista... If you're running
> *nix you'll be used to translating everything.
> 
> Required XmlBeans jars:
>     * xbean.jar = allways required
>     * jsr173_1.0_api.jar = W3C StAX API (doesn't actually seem to be
> required... but the doco says include it, so include it. 
>     * xbean_xpath.jar = XBeansXQuery and XBeansXPath delegates.
> 
> Required Saxon jars:
>     * saxon9.jar = allways required
>     * saxon9-xqj.jar = javax.xml.xquery.* implementation (isn't
> actually required for the example)
>     * saxon9-dom.jar = DOM implementation (required for XQuery)
> 
> System (not user!) Environment Variables -
> http://xmlbeans.apache.org/documentation/conInstallGuide.html
>         XMLBEANS_HOME=C:\Java\lib\XmlBeans-2.4.0
>         PATH=%PATH%;XMLBEANS_HOME/bin
> setClasspath.bat - I "call" this before I compile, which effects the
> environment of the calling shell (ergo it's dotted).
>         set CLASSES=C:\Java\home\classes
>         
>         REM SAXON does XSLT 2.0, XQuery 1.0, XPath 2.0; (W3C 23 Jan
>         2007).
>         REM http://saxon.sourceforge.net/
>         set D=C:\Java\lib\saxonb9-1-0-1j
>         set SAXON=%D%\saxon9.jar;%D%\saxon9-xqj.jar;%D%\saxon9-dom.jar
>         
>         REM XMLBeans generates Java classes from an XML-Schema.
>         REM http://xmlbeans.apache.org/index.html
>         REM XMLBEANS 2.4.0 requires Saxon-9.0.0.4 (or later) for
>         XQuery.
>         REM XMLBEANS_HOME=C:\Java\lib\XmlBeans-2.4.0 #environment
>         variable
>         REM PATH=%PATH%;%XMLBEANS_HOME%\bin #environment variable
>         set D=%XMLBEANS_HOME%\lib
>         set XMLBEANS=%D%\xbean.jar;%D%\jsr173_1.0_api.jar;%D%
>         \xbean_xpath.jar
>         
>         REM MYJARS - generated from xmlbeans for instance.
>         set MYJARS=C:\Java\home\src\tutorials\xmlbeans
>         \PurchaseOrderXmlBeans.jar
>         
>         REM set the current CLASSPATH using the above "abbreviations"
>         set CLASSPATH=%CLASSES%;%MYJARS %;%XMLBEANS%;%SAXON%;
> PurchaseOrder.xml - as per
> http://xmlbeans.apache.org/documentation/tutorial_getstarted.html
>         <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>
> PurchaseOrder.xsd - as per
> http://xmlbeans.apache.org/documentation/tutorial_getstarted.html
>         <xs:schema 
>             xmlns:po="http://openuri.org/easypo";
>             xmlns:xs="http://www.w3.org/2001/XMLSchema";
>             targetNamespace="http://openuri.org/easypo";
>             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>
> Build PurchaseOrderXmlBeans.jar -
> http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html#scomp
>         C:\>cd /d C:\Java\home\src\tutorials\xmlbeans
>         
>         C:\Java\home\src\tutorials\xmlbeans>scomp -out
>         PurchaseOrderXmlBeansTest.jar PurchaseOrder.xsd
>         Time to build schema type system: 0.75 seconds
>         Time to generate code: 0.125 seconds
>         Time to compile code: 1.266 seconds
>         Compiled types to: PurchaseOrderXmlBeansTest.jar
>         
>         C:\Java\home\src\tutorials\xmlbeans>
> PurchaseOrderXmlBeansTest.java - The "compiled" code samples from:
> http://xmlbeans.apache.org/documentation/tutorial_getstarted.html ...
> Tested on 1.6 but should be OK on 1.4 
>         package tutorials.xmlbeans;
>         
>         import java.io.File;
>         import org.apache.xmlbeans.*;
>         import org.openuri.easypo.PurchaseOrderDocument;
>         import org.openuri.easypo.PurchaseOrderDocument.PurchaseOrder;
>         import org.openuri.easypo.LineItem;
>         import org.openuri.easypo.Customer;
>         
>         import org.apache.xmlbeans.XmlException;
>         import java.io.IOException;
>         
>         public class PurchaseOrderXmlBeansTest
>         {
>           private PurchaseOrderDocument doc;
>         
>           PurchaseOrderXmlBeansTest(File purchaseOrdersXml) throws
>         org.apache.xmlbeans.XmlException, java.io.IOException {
>             doc =
>         PurchaseOrderDocument.Factory.parse(purchaseOrdersXml);
>           }
>         
>           public void printLineItems() {
>         
>             PurchaseOrder purchaseOrder = doc.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 = purchaseOrder.getLineItemArray();
>             System.out.println("Purchase order has " +
>         lineItems.length + " line items.");
>         
>             /*
>              * Loop through the line-item elements, using generated
>         accessors to
>              * get values for child elements such a description,
>         quantity, and
>              * price.
>              */
>             double totalPrice = 0.0;
>             int totalQty = 0;
>             for (int i=0; i<lineItems.length; i++) {
>               LineItem item = lineItems[i];
>               double itemQty   = item.getQuantity();
>               double itemPrice = item.getPrice();
>               double itemTotal = itemQty * itemPrice;
>               totalQty += itemQty;
>               totalPrice += itemTotal;
>               System.out.println("Line item      : "+i);
>               System.out.println("   Description :
>         "+item.getDescription());
>               System.out.println("   Quantity    : "+itemQty);
>               System.out.println("   Price       : "+itemPrice);
>               System.out.println("   Total       : "+itemTotal);
>             }
>             System.out.println("Total items  : " + totalQty);
>             System.out.println("Total amount : " + totalPrice);
>             System.out.println();
>           }
>         
>           /**
>            * Creates a new purchase-order element and adds a customer
>         child element.
>            * It then inserts name and address child elements, creating
>         the elements
>            * and sets their values with a single call to their setter
>         methods.
>            *  <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>
>            */
>           public static PurchaseOrderDocument
>         createPurchaseOrderDocument(String customerName, String
>         customerAddress) {
>             PurchaseOrderDocument newDoc =
>         PurchaseOrderDocument.Factory.newInstance();
>             PurchaseOrder newPo = newDoc.addNewPurchaseOrder();
>             Customer newCustomer = newPo.addNewCustomer();
>             newCustomer.setName(customerName);
>             newCustomer.setAddress(customerAddress);
>             return newDoc;
>           }
>         
>           /**
>            * Prints all of the line-item elements whose price child
>         elements have
>            * values less than or equal to the given maxPrice.
>            */
>           public void printCheapItems(double maxPrice) {
>             // The XQuery expression combines a namespace and a path.
>         The namespace
>             // defines the XML-namespace of the following query
>         expression.
>             String namespace = "declare namespace po =
>         'http://openuri.org/easypo'; ";
>             String path =
>         "$this/po:purchase-order/po:line-item[po:price <= "+maxPrice
>         +"]";
>             String query = namespace + path;
>             XmlCursor itemCursor = doc.newCursor().execQuery(query);
>             System.out.println("Cheap items: "+itemCursor.xmlText());
>           }
>         
>           /**
>            * Uses an XML cursor to print the customer's name.
>            * po:purchase-order/po:customer/po:name/TextNode
>            */
>           public void printCustomersName() {
>             XmlCursor cursor = doc.newCursor();
>             cursor.toChild(0);
>             cursor.toChild(0);
>             cursor.toChild(0);
>             System.out.println("Customers name:
>         "+cursor.getTextValue());
>             cursor.dispose();
>           }
>         
>           public static void main(String[] args) {
>             try {
>               PurchaseOrderXmlBeansTest test = new
>         PurchaseOrderXmlBeansTest(new File("PurchaseOrder.xml"));
>               test.printLineItems();
>               test.printCheapItems(10.00);
>               test.printCustomersName();
>         
>               PurchaseOrderDocument newDoc =
>         test.createPurchaseOrderDocument("Bob The Builder", "123
>         Bulldozer St");
>               System.out.println("New document: "+newDoc.xmlText());
>             } catch (Exception e) {
>               e.printStackTrace();
>             }
>           }
>         
>         }
> Compile:
>         C:\Java\home\src\tutorials\xmlbeans>C:\Java\jdk\jdk1.6.0_04
>         \bin\javac.exe -Xlint -d C:\Java\home\classes -cp c:\java\home
>         \src;.;C:\Java\home\classes;C:\Java\home\src\tutorials
>         \xmlbeans\PurchaseOrderXmlBeans.jar;C:\Java\lib\xmlbeans-2.4.0
>         \lib\xbean.jar;C:\Java\lib\xmlbeans-2.4.0\lib
>         \xbean_xpath.jar;C:\Java\lib\saxonb9-1-0-1j\saxon9.jar;C:\Java
>         \lib\saxonb9-1-0-1j\saxon9-dom.jar;
>         PurchaseOrderXmlBeansTest.java 
> Run:
>         C:\Java\home\src\tutorials\xmlbeans>C:\Java\jdk\jdk1.6.0_04
>         \bin\java.exe -enableassertions -cp C:\Java\home\classes;C:
>         \Java\home\src\tutorials\xmlbeans\PurchaseOrderXmlBeans.jar;C:
>         \Java\lib\xmlbeans-2.4.0\lib\xbean.jar;C:\Java\lib
>         \xmlbeans-2.4.0\lib\xbean_xpath.jar;C:\Java\lib\saxonb9-1-0-1j
>         \saxon9.jar;C:\Java\lib\saxonb9-1-0-1j\saxon9-dom.jar;
>         tutorials.xmlbeans.PurchaseOrderXmlBeansTest
>         
>         Purchase order has 2 line items.
>         Line item      : 0
>            Description : Burnham's Celestial Handbook, Vol 1
>            Quantity    : 2.0
>            Price       : 21.79
>            Total       : 43.58
>         Line item      : 1
>            Description : Burnham's Celestial Handbook, Vol 2
>            Quantity    : 2.0
>            Price       : 19.89
>            Total       : 39.78
>         Total items  : 4
>         Total amount : 83.36
>         
>         Cheap items: <xml-fragment/>
>         Customers name: Gladys Kravitz
>         New document: <eas:purchase-order
>         xmlns:eas="http://openuri.org/easypo";><eas:customer><eas:name>Bob The 
> Builda</eas:name><eas:address>123 Bulldozer 
> St</eas:address></eas:customer></eas:purchase-order>
> 
> Hope this helps someone out...
> 
> Cheers. Keith.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to