<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "document-v12.dtd">
<document>
	<header>
		<title>Welcome to XMLBeans</title>
	</header>
	<body>
		<section>
			<title>Introduction to XMLBeans</title>
			<p>XMLBeans is a tool that allows you to access the <em>full</em> power of XML in a Java friendly way.  It is an XML-Java binding tool.  The idea is that you can 
			take advantage the richness and features of XML and XML Schema and have these features mapped as naturally as possible to the equivalent Java language and typing 
			constructs.  XMLBeans uses XML Schema to <em>compile</em> Java interfaces and classes that you can then use to access and modify XML instance data.  
			Using XMLBeans is similar to using any other Java interface/class, you will see things like <code>getFoo</code> or <code>setFoo</code> just as 
			you would
			expect when working with Java.  While a major use of XMLBeans is to access your XML instance data with strongly typed Java classes there are also
			API's that allow you access to the full XML infoset (XMLBeans keeps full XML Infoset fidelity) as well as to allow you to <em>reflect</em> into the XML schema
			itself through an XML Schema Object model.</p>
			<p>For more details on XMLBeans see the <link href="http://nagoya.apache.org/wiki/apachewiki.cgi?XmlBeansExplanation">XMLBeans Explanation</link> Wiki page. 
			As well as the XMLBeans documentation (see the Documentation tab on this website as well as the docs directory in the XMLBeans Source).</p>
			<section>
				<title>What makes XMLBeans Different</title>
				<p>There are at least two major things that make XMLBeans unique from other XML-Java binding options.</p>
				<ol>
					<li>
						<strong>Full XML Schema support.</strong> XMLBeans fully supports XML Schema and the corresponding java classes provide constructs
      					for all of the major functionality of XML Schema.  This is critical since often times you do not have control over the features of XML Schema
      					that you need to work with in Java.  Also, XML Schema oriented applications can take full advantage of the power of XML Schema and not
      					have to restrict themselvs to a subset.</li>
					<li>
						<strong>Full XML Infoset fidelity.</strong>When unmarshalling an XML instance the full XML infoset is kept and is available to the developer.  This is
      					critical because because of the subset of XML that is not easily represented in java.   For example, order of the elements or comments might
      					be needed in a particular application.</li>
				</ol>
				<p>A major objective of XMLBeans has been to be applicable in <em>all</em> non-streaming (in memory) XML programming situations.  You should be
      				able to compile your XML Schema into a set of java classes and know that 1) you will be able to use XMLBeans for all of the schemas you encounter
      				(even the warped ones) and 2) that you will be able to get to the XML at whatever level is necessary - and not have to resort to multple
      				tools to do this.</p>
				<p>To accomplish this XMLBeans provides three major APIs:</p>
				<ul>
					<li>
						<strong>XmlObject</strong>  The java classes that are generated from an XML Schema are all derived from XmlObject.  These provide strongly
      					typed getters and setters for each of the elements within the defined XML.  Complex types are in turn XmlObjects.  For example getCustomer
      					might return a CustomerType (which is an XmlObject).  Simple types turn into simple getters and setters with the correct java type.  For
      					example getName might return a String.</li>
					<li>
						<strong>XmlCursor</strong> From any XmlObject you can get an XmlCursor.  This provides efficient, low level access to the XML Infoset.  A cursor 
      					represents a position in the XML instance.  You can move the cursor around the XML instance at any level of granularity you need
      					from individual characters to Tokens.</li>
					<li>
						<strong>SchemaType</strong>  XMLBeans provides a full XML Schema object model that you can use to reflect on the underlying schema meta information.
      					For example, you might want to generate a sample XML instance for an XML schema or perhaps find the enumerations for an element
      					so that you can display them.</li>
				</ul>
				<p>All of this was built with performance in mind.   Informal benchmarks and user feedback indicate that XMLBeans is extremely fast.</p>
			</section>
		</section>
		<section>
			<title>History</title>
			<p>XMLBeans was submitted to Apache by BEA Systems in September 2003 and is currently in the Apache incubation process.  
			XMLBeans was originally created because of the need seen by developers, in particular David Bau 
			(<link href="http://nagoya.apache.org/eyebrowse/ReadMsg?listName=xmlbeans-dev@xml.apache.org&amp;msgNo=93">David's about me post</link>),  
			need for a more XML centric Java binding model that nothing on the market offered.   XMLBeans 1.0 has been successfully used as an underlying technology for several
			products as well as by a growing number of large users including some of the largest companies in the world.</p>
		</section>
		<section>
			<title>Future</title>
			<p>The future of XMLBeans is exciting and you are invited to contribute.  XMLBeans Version 1 is a great, stable technology that will continue to 
			improve going forward.  Its emphasis on full support for XML Schema and the XML Infoset along with it's performance
			charactaristics make it a great choice for in-memory XML-Java programming. </p>
			<p>Work has begun on planning XMLBeans 2.0.  At this point it appears that the major emphasis for XMLBeans 2.0 are new use cases that expand
			the breadth of XMLBeans.  The observation is that XML-Java binding occurs in situations that XMLBeans could be optimized for, areas
			such as Web Services (XMLBeans works well now in many Web Services situations) and Java to XML Schema scenarios .  
			See the <link href="http://nagoya.apache.org/wiki/apachewiki.cgi?XmlBeansRoadMap">XMLBeans Roadmap</link> and the 
			<link href="http://nagoya.apache.org/wiki/apachewiki.cgi?XmlBeansFeaturePlan">XMLBeans Feature Plan</link> wiki page for
			more information.  XMLBeans is actively looking for contributors and committers so, if you are interested, please join in.</p>
		</section>
		<section>
			<title>News and events</title>
			<ul>
				<li>
					<link href="http://apachecon.com/2003/US/index.html">
						<img src="http://jakarta.apache.org/images/logos/ac2003-150.gif" alt="apachecon 2003 logo" width="150" height="86"/>
					</link>
					<link href="http://apachecon.com/2003/US/index.html">ApacheCon US 2003</link>
			          (16-19 November 2003) is now open for registration. ApacheCon is
			          the conference for all things Apache. Come along and learn about
			          a range of new technologies, meet some Apache folks and share
			          the knowledge. David Bau is scheduled to speak about XMLBeans 
			          on Monday, Nov 17 from 2:30 to 3:30 
			          (<link href="http://apachecon.com/2003/US/html/sessions.html">ApacheCon Schedule</link>).
			        </li>
			</ul>
		</section>
	</body>
</document>
