<?xml version="1.0" encoding="utf-8" ?>
<!--
/*   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.
 */
-->

<testroot>
	<testAtomicTypeElem>MS Word</testAtomicTypeElem>
	<testListTypeElem>3</testListTypeElem>

	<testUnionTypeElem>Adobe Acrobat</testUnionTypeElem>
	<testUnionTypeElem>2</testUnionTypeElem>

	<header name="testheader">This is a test Email Header </header>
	<testComplexTypeElementOnlyContentElem> 
	    <mail id="0">
	    	<envelope From="x@bea.com">
		      <From>user@unknown.domain.org</From>
		      <To>user@cduce.org</To>
		      <Date>2003-10-15T15:44:01Z</Date>
		      <Subject>Xml Beans Testing</Subject>
		      <header name="Reply-To">bill@microsoft.com</header>
	    	</envelope>
		<body>
		      As subject says, is it possible to implement it?
	        </body>
	        <attachment name="signature.doc">
	        <mimetype type="application" subtype="msword"/>
	      	<content>
			### removed by spamoracle ###
	     	 </content>
		</attachment>

	    </mail>
	</testComplexTypeElementOnlyContentElem> 


	<testComplexTypeMixedElem>

	    <mail id="1">
	    	<envelope From="x@bea.com">
		      <From>user@unknown.domain.org</From>
		      <To>user@cduce.org</To>
		      <Date>2003-10-15T15:44:01Z</Date>
		      <Subject>Xml Beans Testing</Subject>
		      <header name="Reply-To">bill@microsoft.com</header>
	    	</envelope>
		<body>
		      As subject says, is it possible to implement it?
	        </body>
	        <attachment name="signature.doc">
	        <mimetype type="application" subtype="msword"/>
	      	<content>
			### removed by spamoracle ###
	     	 </content>
		</attachment>

	    </mail>


	</testComplexTypeMixedElem>

	<testComplexTypeEmptyElem value="2" />

	<testChoiceGroupElem>
		<Lang>English</Lang>
	</testChoiceGroupElem>

	<testAllGroupElem>
		<Greetings>Hello</Greetings>
		<Signature> Mr X., Bea Systems</Signature>
		<ContactNumber>425-123-1234</ContactNumber>
	</testAllGroupElem>

</testroot>
