<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc on Thu Sep 25 16:46:56 PDT 2003 -->
<TITLE>
SchemaTypeSystem (XMLBeans Documentation)
</TITLE>
<META NAME="keywords" CONTENT="org.apache.xmlbeans.SchemaTypeSystem,SchemaTypeSystem interface">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="SchemaTypeSystem (XMLBeans Documentation)";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/xmlbeans/SimpleValue.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="SchemaTypeSystem.html" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.xmlbeans</FONT>
<BR>
Interface SchemaTypeSystem</H2>
<DL>
<DT><B>All Superinterfaces:</B> <DD><A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html">SchemaTypeLoader</A></DD>
</DL>
<HR>
<DL>
<DT>public interface <B>SchemaTypeSystem</B><DT>extends <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html">SchemaTypeLoader</A></DL>

<P>
A finite set of XML Schema component definitions.
 <p>
 Every <A HREF="../../../org/apache/xmlbeans/SchemaComponent.html"><CODE>SchemaComponent</CODE></A> such as a <A HREF="../../../org/apache/xmlbeans/SchemaType.html"><CODE>SchemaType</CODE></A>,
 <A HREF="../../../org/apache/xmlbeans/SchemaGlobalElement.html"><CODE>SchemaGlobalElement</CODE></A>, <A HREF="../../../org/apache/xmlbeans/SchemaGlobalAttribute.html"><CODE>SchemaGlobalAttribute</CODE></A>,
 <A HREF="../../../org/apache/xmlbeans/SchemaModelGroup.html"><CODE>SchemaModelGroup</CODE></A>, <A HREF="../../../org/apache/xmlbeans/SchemaAttributeGroup.html"><CODE>SchemaAttributeGroup</CODE></A>, or
 <A HREF="../../../org/apache/xmlbeans/SchemaIdentityConstraint.html"><CODE>SchemaIdentityConstraint</CODE></A>, is defined in exactly one
 SchemaTypeSystem.  (See <A HREF="../../../org/apache/xmlbeans/SchemaComponent.html#getTypeSystem()"><CODE>SchemaComponent.getTypeSystem()</CODE></A>.)
 A single SchemaTypeSystem can include definitions
 from any number of namespaces; one SchemaTypeSystem consists simply
 of a set of component definitions that were compiled together.
 <p>
 Since every component is defined in a single SchemaTypeSystem, no
 SchemaTypeSystem other than <A HREF="../../../org/apache/xmlbeans/XmlBeans.html#getBuiltinTypeSystem()"><CODE>XmlBeans.getBuiltinTypeSystem()</CODE></A>
 includes any of the the built-in types.  That means
 you cannot ordinarily load instances using a single
 SchemaTypeSystem by itself. Instead, you will want to combine a path of
 SchemaTypeSystems together using <A HREF="../../../org/apache/xmlbeans/XmlBeans.html#typeLoaderUnion(org.apache.xmlbeans.SchemaTypeLoader[])"><CODE>XmlBeans.typeLoaderUnion(org.apache.xmlbeans.SchemaTypeLoader[])</CODE></A>
 to form a SchemaTypeLoader that can be used for loading instances.
 <p>
 For example, the following code compiles the schema in myXSDFile
 in the presence of only the minimal builtin type system.
 The resulting SchemaTypeSystem <code>sts</code> contains only the definitions
 from myXSD file.  In order to load and validate an instance within
 the context of those types, we must next construct a
 <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html"><CODE>SchemaTypeLoader</CODE></A> <code>stl</code> that contains both
 the builtin type system and the types defined within the myXSD file.
 <pre>
 SchemaTypeSystem sts = XmlBeans.compileXsd(new XmlObject[]
    { XmlObject.Factory.parse(myXSDFile) },
    XmlBeans.getBuiltinTypeSystem(),
    null);
 SchemaTypeLoader stl = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[]
    { sts, XmlBeans.getBuiltinTypeSystem() });
 XmlObject mydoc = stl.parse(instanceFile, null, null);
 System.out.println("Document valid: " + mydoc.validate());
 </pre>
 <p>
 As you can see, for working with instances, you typically want to
 work with a SchemaTypeLoader constructed from a path rather than
 a solitary SchemaTypeSystem.  See <A HREF="../../../org/apache/xmlbeans/XmlBeans.html#loadXsd(org.apache.xmlbeans.XmlObject[])"><CODE>XmlBeans.loadXsd(org.apache.xmlbeans.XmlObject[])</CODE></A> for
 a convenient alternative to <A HREF="../../../org/apache/xmlbeans/XmlBeans.html#compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)"><CODE>XmlBeans.compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)</CODE></A>.
 <p>
 A SchemaTypeSystem is useful when you need to enumerate the exact set
 of component definitions derived from a set of XSD files, for example,
 when you are analyzing the contents of the XSD files themselves.
 Here is how to use a SchemaTypeSystem to inspect a set of schema
 definitions:
 <ol>
 <li>First, use <A HREF="../../../org/apache/xmlbeans/XmlBeans.html#compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)"><CODE>XmlBeans.compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)</CODE></A> to compile any number
     of schema files.  If the schema files are valid, result will
     be a SchemaTypeSystem that contains all the component definitions
     from those files.  It will contain no other component definitions.
 <li>Alternatively, call <A HREF="../../../org/apache/xmlbeans/SchemaComponent.html#getTypeSystem()"><CODE>SchemaComponent.getTypeSystem()</CODE></A> on
     a precompiled schema component to discover the SchemaTypeSystem
     within which that component was originally compiled.
 <li>Once you have a SchemaTypeSystem, call:
   <ul>
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#globalTypes()"><CODE>globalTypes()</CODE></A> for all the global type definitions.
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#globalElements()"><CODE>globalElements()</CODE></A> for all the global element definitions.
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#globalAttributes()"><CODE>globalAttributes()</CODE></A> for all the global attribute definitions.
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#modelGroups()"><CODE>modelGroups()</CODE></A> for all the named model group definitions.
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#attributeGroups()"><CODE>attributeGroups()</CODE></A> for all the attribute group definitions.
   </ul>
 <li>In addition, there are special types generated for XML Beans thare
     are not formally part of the Schema specification:
   <ul>
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#documentTypes()"><CODE>documentTypes()</CODE></A> returns all the document types.
   <li> <A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#attributeTypes()"><CODE>attributeTypes()</CODE></A> returns all the attribute types.
   </ul>
 </ol>
 
 <p>
 A document type is a type that contains a single global element; there
 is one document type for each global element definition in a
 SchemaTypeSystem.  In an instance document, only the root XmlObject
 can have a document type as its type.
 <p>
 Similarly, an attribute type is a type that contains a single global
 attribute, and there is one attribute type for each global attribute
 definition in a SchemaTypeSystem.  It is possible to have a root
 XmlObject representing a fragment whose type is an attribute type,
 but attribute types are present mainly for symmetry and to simplify
 code such as the type-tree-walking code below.
 <p>
 The global component methods above only provide a view of the top-level
 components of a SchemaTypeSystem and do not include any nested
 definitions.  To view all the nested definitions, you will want to
 traverse the entire tree of <A HREF="../../../org/apache/xmlbeans/SchemaType.html"><CODE>SchemaType</CODE></A> defintions within a
 SchemaTypeSystem by examining the <A HREF="../../../org/apache/xmlbeans/SchemaType.html#getAnonymousTypes()"><CODE>SchemaType.getAnonymousTypes()</CODE></A>
 within each <A HREF="../../../org/apache/xmlbeans/SchemaType.html"><CODE>SchemaType</CODE></A> recursively.
 <p>The following code is a standard treewalk that visits every
 <A HREF="../../../org/apache/xmlbeans/SchemaType.html"><CODE>SchemaType</CODE></A> in the SchemaTypeSystem once, including nested
 definitions.
 <pre>
 List allSeenTypes = new ArrayList();
 allSeenTypes.addAll(Arrays.asList(typeSystem.documentTypes()));
 allSeenTypes.addAll(Arrays.asList(typeSystem.attributeTypes()));
 allSeenTypes.addAll(Arrays.asList(typeSystem.globalTypes()));
 for (int i = 0; i < allSeenTypes.size(); i++)
 {
     SchemaType sType = (SchemaType)allSeenTypes.get(i);
     System.out.prinlnt("Visiting " + sType.toString());
     allSeenTypes.addAll(Arrays.asList(sType.getAnonymousTypes()));
 }
 </pre>
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../org/apache/xmlbeans/SchemaType.html"><CODE>SchemaType</CODE></A>, 
<A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html"><CODE>SchemaTypeLoader</CODE></A>, 
<A HREF="../../../org/apache/xmlbeans/XmlBeans.html#compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)"><CODE>XmlBeans.compileXsd(org.apache.xmlbeans.XmlObject[], org.apache.xmlbeans.SchemaTypeLoader, org.apache.xmlbeans.XmlOptions)</CODE></A>, 
<A HREF="../../../org/apache/xmlbeans/XmlBeans.html#typeLoaderUnion(org.apache.xmlbeans.SchemaTypeLoader[])"><CODE>XmlBeans.typeLoaderUnion(org.apache.xmlbeans.SchemaTypeLoader[])</CODE></A>, 
<A HREF="../../../org/apache/xmlbeans/XmlBeans.html#getBuiltinTypeSystem()"><CODE>XmlBeans.getBuiltinTypeSystem()</CODE></A></DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->


<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaAttributeGroup.html">SchemaAttributeGroup</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#attributeGroups()">attributeGroups</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the attribute groups defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#attributeTypes()">attributeTypes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the attribute types defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#documentTypes()">documentTypes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the document types defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html">ClassLoader</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#getClassLoader()">getClassLoader</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the classloader used by this loader for resolving types.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#getName()">getName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaGlobalAttribute.html">SchemaGlobalAttribute</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#globalAttributes()">globalAttributes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the global attributes defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaGlobalElement.html">SchemaGlobalElement</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#globalElements()">globalElements</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the global elements defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#globalTypes()">globalTypes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the global types defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaModelGroup.html">SchemaModelGroup</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#modelGroups()">modelGroups</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the model groups defined in this loader.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#resolve()">resolve</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initializes a type system (resolves all handles within the type system).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaComponent.html">SchemaComponent</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#resolveHandle(java.lang.String)">resolveHandle</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html">String</A>&nbsp;handle)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Locates a type, element, or attribute using the handle.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#saveToDirectory(java.io.File)">saveToDirectory</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html">File</A>&nbsp;classDir)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Saves this type to a directory.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/xmlbeans/SchemaTypeSystem.html#typeForHandle(java.lang.String)">typeForHandle</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html">String</A>&nbsp;handle)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Locates a type, element, or attribute using the handle.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.xmlbeans.SchemaTypeLoader"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from interface org.apache.xmlbeans.<A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html">SchemaTypeLoader</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#compilePath(java.lang.String, org.apache.xmlbeans.XmlOptions)">compilePath</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#compileQuery(java.lang.String, org.apache.xmlbeans.XmlOptions)">compileQuery</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findAttribute(javax.xml.namespace.QName)">findAttribute</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findAttributeGroup(javax.xml.namespace.QName)">findAttributeGroup</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findAttributeGroupRef(javax.xml.namespace.QName)">findAttributeGroupRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findAttributeRef(javax.xml.namespace.QName)">findAttributeRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findAttributeType(javax.xml.namespace.QName)">findAttributeType</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findAttributeTypeRef(javax.xml.namespace.QName)">findAttributeTypeRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findDocumentType(javax.xml.namespace.QName)">findDocumentType</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findDocumentTypeRef(javax.xml.namespace.QName)">findDocumentTypeRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findElement(javax.xml.namespace.QName)">findElement</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findElementRef(javax.xml.namespace.QName)">findElementRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findIdentityConstraintRef(javax.xml.namespace.QName)">findIdentityConstraintRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findModelGroup(javax.xml.namespace.QName)">findModelGroup</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findModelGroupRef(javax.xml.namespace.QName)">findModelGroupRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findType(javax.xml.namespace.QName)">findType</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#findTypeRef(javax.xml.namespace.QName)">findTypeRef</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#getSourceAsStream(java.lang.String)">getSourceAsStream</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#isNamespaceDefined(java.lang.String)">isNamespaceDefined</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#newInstance(org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">newInstance</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#newValidatingXMLInputStream(weblogic.xml.stream.XMLInputStream, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">newValidatingXMLInputStream</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#newXmlSaxHandler(org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">newXmlSaxHandler</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(java.io.File, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(java.io.InputStream, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(org.w3c.dom.Node, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(java.io.Reader, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(java.lang.String, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(java.net.URL, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#parse(weblogic.xml.stream.XMLInputStream, org.apache.xmlbeans.SchemaType, org.apache.xmlbeans.XmlOptions)">parse</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#typeForClassname(java.lang.String)">typeForClassname</A>, <A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html#typeForSignature(java.lang.String)">typeForSignature</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->


<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="getName()"><!-- --></A><H3>
getName</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html">String</A> <B>getName</B>()</PRE>
<DL>
<DD>Returns the name of this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="globalTypes()"><!-- --></A><H3>
globalTypes</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A>[] <B>globalTypes</B>()</PRE>
<DL>
<DD>Returns the global types defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="documentTypes()"><!-- --></A><H3>
documentTypes</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A>[] <B>documentTypes</B>()</PRE>
<DL>
<DD>Returns the document types defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="attributeTypes()"><!-- --></A><H3>
attributeTypes</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A>[] <B>attributeTypes</B>()</PRE>
<DL>
<DD>Returns the attribute types defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="globalElements()"><!-- --></A><H3>
globalElements</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaGlobalElement.html">SchemaGlobalElement</A>[] <B>globalElements</B>()</PRE>
<DL>
<DD>Returns the global elements defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="globalAttributes()"><!-- --></A><H3>
globalAttributes</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaGlobalAttribute.html">SchemaGlobalAttribute</A>[] <B>globalAttributes</B>()</PRE>
<DL>
<DD>Returns the global attributes defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="modelGroups()"><!-- --></A><H3>
modelGroups</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaModelGroup.html">SchemaModelGroup</A>[] <B>modelGroups</B>()</PRE>
<DL>
<DD>Returns the model groups defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="attributeGroups()"><!-- --></A><H3>
attributeGroups</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaAttributeGroup.html">SchemaAttributeGroup</A>[] <B>attributeGroups</B>()</PRE>
<DL>
<DD>Returns the attribute groups defined in this loader.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="resolve()"><!-- --></A><H3>
resolve</H3>
<PRE>
public void <B>resolve</B>()</PRE>
<DL>
<DD>Initializes a type system (resolves all handles within the type system).
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="resolveHandle(java.lang.String)"><!-- --></A><H3>
resolveHandle</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaComponent.html">SchemaComponent</A> <B>resolveHandle</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html">String</A>&nbsp;handle)</PRE>
<DL>
<DD>Locates a type, element, or attribute using the handle.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="typeForHandle(java.lang.String)"><!-- --></A><H3>
typeForHandle</H3>
<PRE>
public <A HREF="../../../org/apache/xmlbeans/SchemaType.html">SchemaType</A> <B>typeForHandle</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html">String</A>&nbsp;handle)</PRE>
<DL>
<DD>Locates a type, element, or attribute using the handle.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getClassLoader()"><!-- --></A><H3>
getClassLoader</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html">ClassLoader</A> <B>getClassLoader</B>()</PRE>
<DL>
<DD>Returns the classloader used by this loader for resolving types.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="saveToDirectory(java.io.File)"><!-- --></A><H3>
saveToDirectory</H3>
<PRE>
public void <B>saveToDirectory</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html">File</A>&nbsp;classDir)</PRE>
<DL>
<DD>Saves this type to a directory.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../org/apache/xmlbeans/SchemaTypeLoader.html"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/xmlbeans/SimpleValue.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="SchemaTypeSystem.html" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<HR>

</BODY>
</HTML>
