<!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>
			XMLBeans Tools
		</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"> 
		<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> XMLBeans Tools </h1>
<p> XMLBeans includes several command-line tools you might find handy as shortcuts 
  for common tasks. You'll find these tools in the bin directory of the XMLBeans 
  installation or source tree.</p>
<dl>
  <dt> <a href="#dumpxsb">dumpxsb (XSB File Dumper)</a> </dt>
  <dd> Prints the contents of an XSB file in human-readable form. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#inst2xsd">inst2xsd (Instance to Schema Tool)</a> </dt>
  <dd> Generates XML schema from XML instance files. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#scomp">scomp (Schema Compiler)</a> </dt>
  <dd> Compiles a schema into XMLBeans classes and metadata. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#scopy">scopy (Schema Copier)</a> </dt>
  <dd> Copies the XML schema at the specified URL to the specified file. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#sdownload">sdownload (Schema Downloader)</a> </dt>
  <dd> Maintains &quot;xsdownload.xml,&quot; an index of locally downloaded XSD 
    files. URLs that are specified are downloaded if they aren't already cached. 
    If no files or URLs are specified, all indexed files are relevant. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#sfactor">sfactor (Schema Factoring Tool)</a> </dt>
  <dd> Factors redundant definitions out of a set of schemas and uses imports 
    instead. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#svalidate">svalidate (Streaming Instance Validator)</a> </dt>
  <dd> Validates a schema definition and instances within the schema. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#validate">validate (Instance Validator)</a> </dt>
  <dd> Validates an instance against a schema. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#xpretty">xpretty (XML Pretty Printer)</a> </dt>
  <dd> Pretty prints the specified XML to the console. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#xsd2inst">xsd2inst (Schema to Instance Tool)</a> </dt>
  <dd> Prints an XML instance from the specified global element using the specified 
    schema. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="#xsdtree">xsdtree (Schema Type Hierarchy Printer)</a> </dt>
  <dd> Prints an inheritance hierarchy of the types defined in a schema. </dd>
  <dt>&nbsp; </dt>
  <dt> <a href="antXmlbean.html">xmlbean Ant task</a> </dt>
  <dd> Compiles a set of XSD and/or WSDL files into XMLBeans types. </dd>
</dl>
<h2> <a name="dumpxsb"></a>dumpxsb (XSB File Dumper) </h2>
<p> Prints the contents of an XSB file in human-readable form. An XSB file contains 
  schema meta information needed to perform tasks such as binding and validation. 
  &quot;XSB&quot; stands for XML Schema Binary.</p>
<h3> Syntax </h3>
<pre><strong>dumpxsb </strong><em>myfile.xsb</em></pre>
<h4> Options </h4>
<dl>
  <dt> <em>myfile.xsb</em> </dt>
  <dd> The name of an XSB file. </dd>
</dl>
<h3> Example </h3>
<p> The following command and output example use an XSB file generated by compiling 
  the schema (in EasyPo.xsd) that accompanies the SubstitutionGroup sample. </p>
<pre>dumpxsb PurchaseOrderDocument.xsb</pre>
<p> Output: </p>
<pre>PurchaseOrderDocument.xsb
  Magic cookie: da7ababe
  Major version: 2
  Minor version: 22
  Release number: 0
  Filetype: FILETYPE_SCHEMAPOINTER
  String pool (2):
  1 = &quot;schema.system.s633ECC92E6CC0ACA137B11B7B38CA3A8&quot;
  Type system: schema.system.s633ECC92E6CC0ACA137B11B7B38CA3A8</pre>
<h2> <a name="inst2xsd"></a>inst2xsd (Instance to Schema Tool) </h2>
<p> Generates XML schema from XML instance files. </p>
<h3> Syntax </h3>
<pre><strong>inst2xsd </strong>[<em>options</em>] <em>instance.xml</em>*</pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-design </strong>[<strong>rd </strong>|<strong> ss </strong>|<strong> 
    vb</strong>] </dt>
  <dd> The XML schema design type to use for the generated schema. </dd>
  <dd> <strong>rd</strong> &#8212; Use russian doll design; local elements and 
    local types. </dd>
  <dd> <strong>ss</strong> &#8212; Use salami slice design; global elements and 
    local types. </dd>
  <dd> <strong>vb</strong> (default) &#8212; Use venetian blind design; local 
    elements and global complex types. </dd>
</dl>
<dt> <strong>-simple-content-types</strong> [<strong>smart</strong> | <strong>string</strong>] 
</dt>
<dd> The manner for detecting content types (leaf text) </dd>
<dd> <strong>smart</strong> (default) &#8212; Use a likely type, such as xs:byte 
  for a value of &quot;123&quot;. </dd>
<dd> <strong>string</strong> &#8212; Use xs:string as the type. </dd>
<dt>&nbsp; </dt>
<dt> <strong>-enumerations</strong> [<strong>never</strong> | <em>number</em>] 
</dt>
<dd> Whether to use enumerations. </dd>
<dd> <strong>never</strong> &#8212; Never use enumerations. </dd>
<dd> <em>number</em> (default: 10) &#8212; Use <em>number</em> as the threshold 
  for enumerations. Specifying &quot;2&quot; will create enumerations for elements 
  with no more than two different values. </dd>
<dt>&nbsp; </dt>
<dt> <strong>-outDir</strong> [<em>dir</em>] </dt>
<dd> The directory for output files. </dd>
<dd> <em>dir</em> &#8212; Directory path. Default is '.' (the current directory). 
</dd>
<dt>&nbsp; </dt>
<dt> <strong>-outPrefix</strong> [<em>file_name_prefix</em>] </dt>
<dd> The prefix for output file names. </dd>
<dd> <em>file_name_prefix</em> &#8212; Prefix to use. Default is &quot;schema&quot;. 
</dd>
<dt>&nbsp; </dt>
<dt> <strong>-validate</strong> </dt>
<dd> Validate input instances against generated schemas. </dd>
<dt>&nbsp; </dt>
<dt> <strong>-verbose</strong> </dt>
<dd> Print more informational messages. </dd>
<dt>&nbsp; </dt>
<dt> <strong>-license</strong> </dt>
<dd> Print license information. </dd>
<dt>&nbsp; </dt>
<dt> <strong>-help</strong> </dt>
<dd> Print help information. </dd>
<h3> Example </h3>
<p> The following example generates schema0.xsd from Purchase-Order.xml, with 
  salami slice schema design, simple content types detected where possible, and 
  enumerations limited to elements with four different values. </p>
<pre>inst2xsd -design ss -simple-content-types smart -enumerations 4 Purchase-Order.xml</pre>
<h2> <a name="scomp"></a>scomp (Schema Compiler) </h2>
<p> Compiles schema into Java XMLBeans classes and metadata. Schema-related work 
  with XMLBeans begins by compiling schema to generated Java types. You can use 
  scomp to compile schema from the command line. XMLBeans also provides an Ant 
  task, <a href="antXmlbean.html">xmlbeans</a>, which you can use to compile schemas. 
  For run-time schema compilation that doesn't generate files, see the org.apache.xmlbeans.XmlBeans.compileXsd 
  methods.</p>
<p>For more information about the types resulting from compiling schema, see <a href="conJavaTypesGeneratedFromUserDerived.html">Java 
  Types Generated from User-Derived Schema Types</a>, <a href="conXMLBeansSupportBuiltInSchemaTypes.html">XMLBeans 
  Support for Built-In Schema Types</a>, and <a href="conMethodsForGeneratedJavaTypes.html">Methods 
  for Types Generated From Schema</a>. </p>
<p>For more information on getting started with XMLBeans, see <a href="conGettingStartedwithXMLBeans.html">Getting 
  Started with XMLBeans</a>.</p>
<h3> Syntax </h3>
<pre><strong>scomp</strong> [<em>options</em>] [<em>dirs</em>]* [<em>schemaFile.xsd</em>]* [<em>service.wsdl</em>]* [<em>config.xsdconfig</em>]*</pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-cp</strong> [<em>pathA;pathB;pathC</em>] </dt>
  <dd> Classpath specifying classes to include during compilation. </dd>
  <dd> <em>pathA;pathB;pathC</em> &#8212; Class search path of directories and 
    JAR files. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-d</strong> [<em>dir</em>] </dt>
  <dd> Target directory for CLASS and XSB files. </dd>
  <dd> <em>dir</em> &#8212; The directory path. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-src</strong> [<em>dir</em>] </dt>
  <dd> Target directory for generated JAVA files. </dd>
  <dd> <em>dir</em> &#8212; The directory path. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-srconly</strong> </dt>
  <dd> Do not compile JAVA files or jar the output. </dd>
  <dt>&nbsp; </dt>
  <dd> Note that XSB files are needed in order for CLASS files compiled from the 
    sources to be useful as XMLBeans classes. To get <em>only JAVA files</em>, 
    use -src to specify a directory for the JAVA files. To get <em>JAVA and XSB 
    files in the same directory</em>, use -d to specify a directory that will 
    include both. To get <em>JAVA and XSB files in separate directories</em>, 
    use -src for the JAVA file destination and -d for the XSB file destination. 
  </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-out</strong> [<em>jarFileName</em>] </dt>
  <dd> The name of the output JAR that will contain the result of compilation. 
    The default is &quot;xmltypes.jar&quot;. </dd>
  <dd> <em>jarFileName</em> &#8212; The name for the JAR containing generated 
    files. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-dl</strong> </dt>
  <dd> Permit network downloads for imports and includes (this permission is off 
    by default). </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-noupa</strong> </dt>
  <dd> Do not enforce the unique particle attribution rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-nopvr</strong> </dt>
  <dd> Do not enforce the particle valid (restriction) rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-noann</strong> </dt>
  <dd> Ignore annotations. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-novdoc</strong> </dt>
  <dd> Do not validate contents of &lt;documentation&gt; elements. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-compiler</strong> </dt>
  <dd> Path to external Java compiler. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-javasource</strong> [<em>version</em>] </dt>
  <dd> Generate Java source compatible for the specified Java version (1.4 or 
    1.5). </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-ms</strong> </dt>
  <dd> Initial memory for external Java compiler; the default is &quot;8m&quot;. 
  </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-mx</strong> </dt>
  <dd> Maximum memory for external Java compiler; the default is &quot;256m&quot;. 
  </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-debug</strong> </dt>
  <dd> Compile with debug symbols. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-quiet</strong> </dt>
  <dd> Print fewer informational messages. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-verbose</strong> </dt>
  <dd> Print more informational messages. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-version</strong> </dt>
  <dd> Print version information. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-license</strong> </dt>
  <dd> Print license information. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-allowmdef</strong> &quot;[<em>namespace</em>] [<em>namespace</em>] 
    [<em>namespace</em>]&quot; </dt>
  <dd> Ignore multiple defs in given namespaces. Use <code> ##local </code> to 
    specify the no-namespace in that list. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-catalog</strong> [<em>fileName</em>] </dt>
  <dd> Catalog file to use for resolving external entities. With this option, 
    scomp uses <code> org.apache.xml.resolver.tools.CatalogResolver </code> for 
    resolving. Note that to use this option, your classpath must include resolver.jar 
    from http://xml.apache.org/commons/components/resolver/index.html). Copy resolver.jar 
    to the XMLBEANS_HOME/lib directory, so that the script can pick it up from 
    there. You can use the <a href="#sdownload">sdownload</a> tool to ensure that 
    required schemas are present for compilation. </dd>
  <dd> <em>fileName &#8212; </em>A path to the catalog file. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>dirs</em> </dt>
  <dd> Directories containing XSD (and possibly XSDCONFIG) files that should be 
    compiled. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>schemaFile.xsd</em> </dt>
  <dd> The names of XSD files that should be compiled. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>service.wsdl</em> </dt>
  <dd> A WSDL file for which types should be generated. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>config.xsdconfig</em> </dt>
  <dd> The name of an XSDCONFIG file. Use an XSDCONFIG file to guide the naming 
    of generated classes and packages. Without an XSDCONFIG file, scomp uses the 
    schema's type names and URI for classes and packages. </dd>
</dl>
<h3> Example </h3>
<p> In the following example, scomp compiles EasyPO.xsd, guiding type naming with 
  po.xsdconfig. scomp puts generated CLASS and XSB files into a classes directory 
  one level up, and JAVA source files into a src directory one level up. Source 
  files will be compatible with Java version 1.5. </p>
<pre>scomp -d ..\classes -src ..\src -javasource 1.5 EasyPO.xsd po.xsdconfig</pre>
<p> Here, scomp compiles all of the contents of the schemas directory and puts 
  the generated files into poschema.jar one level up. </p>
<pre>scomp -out ..\poschema.jar schemas</pre>
<p> The following example generates JAVA source and XSB files from the schema 
  in EasyPO.xsd. No CLASS files are generated, and the JAVA and XSB files are 
  put into src and xsb directories, respectively. </p>
<pre>scomp -srconly -src ..\src -d ..\xsb EasyPO.xsd</pre>
<p> When the schema features imports or includes and you want to use a catalog, 
  you can tell scomp to use the default catalog resolver (<code>org.apache.xml.resolver.tools.CatalogResolver</code>); 
  you specify a catalog file with the -catalog option, as in the example below. 
  (Note that this requires resolver.jar, as noted above for the -catalog option.) 
  In this example, scomp compiles schemaThatUsesRequiredSchema.xsd into myschemas.jar, 
  resolving imports from requiredSchema.xsd through xsdownload.xml. The <a href="#sdownload">sdownload</a> 
  tool is executed first &#8212; this ensures that requiredSchema.xsd is present 
  for compilation, but does not actually download requiredSchema.xsd unless the 
  URL at which it's found isn't already cached. This is more efficient than using 
  scomp's -dl option, which attempts to download every time.</p>
<pre>sdownload "http://some.org/requiredSchema.xsd" 
scomp -out ..\myschemas.jar -catalog xsdownload.xml schemaThatUsesRequiredSchema.xsd</pre>
<p> When a schema features multiple element declarations of the same qname, such 
  as multiple &lt;xs:any&gt; particles, you might want to disable to &quot;unique 
  particle validation&quot; rule, which would ordinarily invalidate the schema. 
  To do this, use the -noupa option, as in the following example. </p>
<pre>scomp -out ..\myschemas.jar -noupa schemas</pre>
<h2> <a name="scopy"></a>scopy (Schema Copier) </h2>
<p> Copies the XML schema at the specified URL to the specified file. </p>
<h3> Syntax </h3>
<pre><strong>schemacopy</strong> <em>sourceurl</em> [<em>targetfile</em>]</pre>
<h4> Options </h4>
<dl>
  <dt> <strong>sourceurl</strong> </dt>
  <dd> The URL at which the schema is located. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>targetfile</em> </dt>
  <dd> The file to which the schema should be copied. </dd>
</dl>
<h2> <a name="sdownload"></a>sdownload (Schema Downloader) </h2>
<p> Maintains &quot;xsdownload.xml,&quot; an index of locally downloaded XSD files. 
  URLs that are specified are downloaded if they aren't already cached. If no 
  files or URLs are specified, all indexed files are relevant. </p>
<p> You can use this tool when using <a href="#scomp">scomp</a>, in conjunction 
  with scomp's -catalog option, to ensure the presence of schemas that are required 
  for compilation because they're imported or included. This is an alternative 
  to using scomp's -dl option, which would hit the Internet on every invocation 
  of scomp. When you use sdownload with -catalog, the download occurs only if 
  the URL is not already cached. See the scomp section for an example.</p>
<h3> Syntax </h3>
<pre><strong>sdownload</strong> [<strong>-dir</strong> <em>directory</em>] [<strong>-refresh</strong>] [<strong>-recurse</strong>] [<strong>-sync</strong>] [<em>url/file</em>]</pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-dir </strong><em>directory</em> </dt>
  <dd> The directory for the xsdownload.xml file (the default is &quot;.&quot;). 
  </dd>
  <dd> <em>directory</em> &#8212; The directory path. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-sync</strong> </dt>
  <dd> Synchronize the index to any local XSD files in the tree. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-recurse</strong> </dt>
  <dd> Recursively download imported and included XSD files. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-refresh</strong> </dt>
  <dd> Re-download all indexed XSD files. </dd>
</dl>
<h2> <a name="sfactor"></a>sfactor (Schema Factoring Tool) </h2>
<p> Factors redundant definitions out of a set of schemas and uses imports instead. 
</p>
<h3> Syntax </h3>
<pre><strong>sfactor</strong> [<strong>-import</strong> <em>common.xsd</em>] [<strong>-out</strong> <em>outputdir</em>] <em>inputdir [-license]</em></pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-import</strong> </dt>
  <dd> The XSD file to contain redundant definitions for importing. </dd>
  <dd> <em>common.xsd</em> &#8212; A path to the file. </dd>
  <dt> <strong>-out</strong> <em>outputdir</em> </dt>
  <dd> The directory into which to place XSD files resulting from refactoring, 
    plus a commonly imported common.xsd. </dd>
  <dt> inputdir </dt>
  <dd> The directory containing the XSD files with redundant definitions. </dd>
  <dt> -license </dt>
  <dd> Print license information. </dd>
</dl>
<h2> <a name="svalidate"></a>svalidate (Streaming Instance Validator) </h2>
<p> Validates the specified instance against the specified schema. Unlike the 
  <a href="#validate">validate</a> tool, svalidate uses a streaming model through 
  which you can validate much larger instances with less memory (if the schema 
  permits it).</p>
<h3> Syntax </h3>
<pre><strong>svalidate</strong> [<em>options</em>] <em>schema.xsd</em> <em>instance.xml</em></pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-dl</strong> </dt>
  <dd> Enable network downloads for imports and includes. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-nopvr</strong> </dt>
  <dd> Disable particle valid (restriction) rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-noupa</strong> </dt>
  <dd> Disable unique particle attribution rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-license</strong> </dt>
  <dd> Print license information. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>schema.xsd</em> </dt>
  <dd> The schema against which to validate. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>instance.xm</em>l </dt>
  <dd> The instance to validate. </dd>
</dl>
<h2> <a name="validate" id="validate"></a>validate (Instance Validator) </h2>
<p> Validates a the specified instance against the specified schema. Compare this 
  tool with the <a href="#svalidate">svalidate</a> tool, which is useful for validating 
  very large documents. </p>
<h3> Syntax </h3>
<pre><strong>validate</strong> [<em>options</em>] <em>schema.xsd</em> <em>instance.xml</em></pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-dl</strong> </dt>
  <dd> Enable network downloads for imports and includes. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-nopvr</strong> </dt>
  <dd> Disable particle valid (restriction) rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-noupa</strong> </dt>
  <dd> Disable unique particle attribution rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-license</strong> </dt>
  <dd> Print license information. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>schema.xsd</em> </dt>
  <dd> The schema against which to validate. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>instance.xml</em> </dt>
  <dd> The instance to validate. </dd>
</dl>
<h3> Example </h3>
<p> The following simple example validates PurchaseOrder.xml against EasyPO.xsd. 
</p>
<pre>validate ..\schemas\EasyPO.xsd PurchaseOrder.xml</pre>
<p> In this example, MySchema imports types from another schema and also includes 
  multiple particles defined as &lt;xsd:any&gt; types. The validate command here 
  locates the external schemas for importing (providing there is network access 
  to the schemas) and ignores the validation rule whereby multiple particles of 
  the same qname render the schema invalid. </p>
<pre>validate -dl -noupa ..\schemas\MySchema.xsd AnInstance.xml</pre>
<h2> <a name="xpretty"></a>xpretty (XML Pretty Printer) </h2>
<p> Pretty prints the specified XML to the console. </p>
<h3> Syntax </h3>
<pre><strong>xpretty</strong> [<em>options</em>] <em>file.xml</em></pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-indent</strong> <em>numberOfSpaces</em> </dt>
  <dd> Indent the specified number of spaces. </dd>
  <dd> <em>numberOfSpaces</em> &#8212; The number of spaces to indent. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-license</strong> </dt>
  <dd> Print license information. </dd>
</dl>
<h2> <a name="xsd2inst"></a>xsd2inst (Schema to Instance Tool) </h2>
<p> Prints an XML instance from the specified global element using the specified 
  schema. </p>
<h3> Syntax </h3>
<pre><strong>xsd2inst</strong> <em>schemafile.xsd</em> <strong>-name</strong> <em>globalElementName</em></pre>
<h4> Options </h4>
<dl>
  <dt> <em>schemafile.xsd</em> </dt>
  <dd> The schema file defining the element to print. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-name</strong> </dt>
  <dd> The name of the global element </dd>
  <dd> <em>globalElementName </em>&#8212; The local name of the global element 
    to use as the root of the printed instance. </dd>
</dl>
<h3> Example </h3>
<p> The following command and output use the schema that accompanies the SubstitutionGroup 
  sample. </p>
<pre>xsd2inst easypo.xsd -name invoice-header</pre>
<p> Output </p>
<pre>&lt;eas:invoice-header xmlns:eas=&quot;http://xmlbeans.apache.org/samples/substitutiongroup/easypo&quot;&gt;
    &lt;eas:ship-to&gt;
        &lt;eas:name&gt;string&lt;/eas:name&gt;
        &lt;eas:address&gt;string&lt;/eas:address&gt;
    &lt;/eas:ship-to&gt;
    &lt;eas:bill-to&gt;
        &lt;eas:name&gt;string&lt;/eas:name&gt;
        &lt;eas:address&gt;string&lt;/eas:address&gt;
    &lt;/eas:bill-to&gt;
    &lt;!--Optional:--&gt;
    &lt;eas:product id=&quot;3&quot;/&gt;
    &lt;!--Optional:--&gt;
    &lt;eas:comment&gt;string&lt;/eas:comment&gt;
&lt;/eas:invoice-header&gt;</pre>
<h2> <a name="xsdtree"></a>xsdtree (Schema Type Hierarchy Printer) </h2>
<p> Prints inheritance hierarchy of types defined in a schema. </p>
<h3> Syntax </h3>
<pre><strong>xsdtree</strong> [<strong>-noanon</strong>] [<strong>-nopvr</strong>] [<strong>-noupa</strong>] [<strong>-partial</strong>] [<strong>-license</strong>] <em>schemafile.xsd*</em></pre>
<h4> Options </h4>
<dl>
  <dt> <strong>-noanon</strong> </dt>
  <dd> Don't include anonymous types in the tree. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-nopvr</strong> </dt>
  <dd> Disable particle valid (restriction) rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-noupa</strong> </dt>
  <dd> Disable unique particle attribution rule. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-partial</strong> </dt>
  <dd> Print only part of the hierarchy. </dd>
  <dt>&nbsp; </dt>
  <dt> <strong>-license</strong> </dt>
  <dd> Print license information. </dd>
  <dt>&nbsp; </dt>
  <dt> <em>schemafile.xsd</em> </dt>
  <dd> The file containing the schema whose hierarchy should be printed. </dd>
</dl>
<h3> Example </h3>
<p> The following command and output use the schema that accompanies the SubstitutionGroup 
  sample. </p>
<pre>xsdtree easypo.xsd</pre>
<p> Output: </p>
<pre>xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;
xmlns:eas=&quot;http://xmlbeans.apache.org/samples/substitutiongroup/easypo&quot;
+-xs:anyType (builtin)
    +-xs:anySimpleType (builtin)
    | +-xs:string (builtin)
    | +-xs:normalizedString (builtin)
    | +-xs:token (builtin)
    | +-type of color element in eas:clothing-type (enumeration)
    +-type of element eas:invoice-header
    +-type of element eas:purchase-order
    +-eas:product-type
    | +-eas:clothing-type
    | +-eas:book-type
    +-eas:name-address</pre>
<h2> <a name="xmlbeans_ant"></a>xmlbean Ant task </h2>
<p> Compiles a set of XSD and/or WSDL files into XMLBeans types. See <a href="antXmlbean.html">xmlbean 
  Ant Task</a> for more complete documentation on the task. </p>
<div> 
  <p class="relatedtopics"> Related Topics </p>
  <p> <a href="conGettingStartedwithXMLBeans.html">Getting Started with XMLBeans</a> 
  </p>
</div>
<!-- InstanceEndEditable --> 
<script language="JavaScript">

</script>
	</body>
</html>
