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]

