org.apache.ws.jaxme.xs.impl
Class XSLogicalParser

java.lang.Object
  extended by org.apache.ws.jaxme.xs.impl.XSLogicalParser
Direct Known Subclasses:
DTDParser

public class XSLogicalParser
extends java.lang.Object

Implementation of a logical parser.

Author:
Jochen Wiedmann

Nested Class Summary
static class XSLogicalParser.AddedImport
          This class is used to ensure, that schemata aren't loaded twice.
 
Constructor Summary
XSLogicalParser()
           
 
Method Summary
protected  void add(XsESchema pSyntaxSchema, java.lang.Object pChild)
          Adds the given object to the schema.
 void addImport(java.lang.String pNamespace, java.lang.String pSchemaLocation)
          Adds a schema being imported by the parser.
 void addImport(java.lang.String pNamespace, java.lang.String pSchemaLocation, org.w3c.dom.Node pSchema)
          Adds a schema being imported by the parser.
protected  void addSyntaxSchema(XsESchema pSyntaxSchema)
           
protected  void clearSyntaxSchemas()
           
protected  void createSubstitutionGroups(XSSchema pSchema)
           
 XSLogicalParser.AddedImport[] getAddedImports()
          Returns the array of added imports, typically empty.
 XsESchema getCurrentSyntaxSchema()
          Returns the syntax schema, which is currently being parsed.
protected  XSContext getData()
           
protected  org.xml.sax.InputSource getInputSource(java.lang.String pReferencingSystemId, java.lang.String pURI)
          Converts the given URI into an instance of InputSource.
 XSSchema getSchema()
          Returns the schema, which is currently being parsed.
 XsESchema[] getSyntaxSchemas()
          Provides context information to the schema which is currently being parsed.
 XSContentHandler getXSContentHandler(java.lang.String pSystemId)
          This is the logical parsers frontend for parsing a stream of SAX events.
protected  void importSchema(XsESchema pImportingSchema, java.lang.String pNamespace, org.w3c.dom.Node pNode, java.lang.String pSchemaLocation)
           
protected  void importSchema(XsESchema pImportingSchema, java.lang.String pNamespace, java.lang.String pSchemaLocation, org.xml.sax.Locator pLocator)
          Handles xs:import.
protected  void includeSchema(XsESchema pIncludingSchema, XsEInclude pInclude, org.xml.sax.Locator pLocator, java.lang.String pSchemaLocation)
          Handles xs:include.
 boolean isValidating()
          Returns whether the parser is validating.
 XSSchema parse(org.xml.sax.InputSource pSource)
          This is the logical parsers frontend for parsing the given InputSource.
 XSSchema parse(org.w3c.dom.Node pNode)
          This is the logical parsers frontend for parsing a DOM node.
protected  void parse(XsESchema pSyntaxSchema, java.lang.String pSchemaLocation)
          Parses the given InputSource syntactically and converts the objects that it finds into logical objects.
protected  XsESchema parseSyntax(org.xml.sax.Locator pLocator, java.lang.String pSchemaLocation)
           
protected  void parseSyntax(org.xml.sax.Locator pLocator, java.lang.String pSchemaLocation, XsESchema pSchema)
           
protected  XsESchema parseSyntax(org.w3c.dom.Node pNode)
           
protected  void redefine(XsESchema pSyntaxSchema, XsERedefine pRedefine, XsRedefinable pChild)
          Redefines the given XsRedefinable.
protected  void redefineSchema(XsESchema pRedefiningSchema, XsERedefine pRedefine)
          Handles xs:refefine.
protected  void removeSyntaxSchema()
           
protected  void setSchema(XSSchema pSchema)
          Sets the schema, which is currently being parsed.
 void setValidating(boolean pValidating)
          Sets whether the parser is validating.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XSLogicalParser

public XSLogicalParser()
Method Detail

getData

protected XSContext getData()

setValidating

public void setValidating(boolean pValidating)

Sets whether the parser is validating.


isValidating

public boolean isValidating()

Returns whether the parser is validating.


addImport

public void addImport(java.lang.String pNamespace,
                      java.lang.String pSchemaLocation)

Adds a schema being imported by the parser. This feature is useful, if a schema silently assumes the presence of additional datatypes. For example, a WSDL definition will contain references to SOAP datatypes without explicit import.

In practice, the declaration will silently create an "xs:import" node.

Parameters:
pNamespace - Matches the "xs:import" nodes "namespace" attribute. In particular it may be null, in which case the imported schema may not have a targetNamespace.
pSchemaLocation - Matches the "xs:import" nodes "schemaLocation" attribute. In particular it may be null.

addImport

public void addImport(java.lang.String pNamespace,
                      java.lang.String pSchemaLocation,
                      org.w3c.dom.Node pSchema)

Adds a schema being imported by the parser. The schema is provided as a DOM node. This feature is useful, if a schema silently assumes the presence of additional datatypes. For example, a WSDL definition will contain references to SOAP datatypes without explicit import.

Parameters:
pNamespace - Matches the "xs:import" nodes "namespace" attribute. In particular it may be null, in which case the imported schema may not have a targetNamespace.
pSchemaLocation - System ID of the schema being imported, if known, or null. Knowing the system ID is important only, if you need to prevent recursive parsing of schemata.
pSchema - A DOM node with the schema being imported.

getAddedImports

public XSLogicalParser.AddedImport[] getAddedImports()

Returns the array of added imports, typically empty.


getSchema

public XSSchema getSchema()

Returns the schema, which is currently being parsed.


setSchema

protected void setSchema(XSSchema pSchema)

Sets the schema, which is currently being parsed.


parseSyntax

protected XsESchema parseSyntax(org.w3c.dom.Node pNode)
                         throws org.xml.sax.SAXException
Throws:
org.xml.sax.SAXException

getInputSource

protected org.xml.sax.InputSource getInputSource(java.lang.String pReferencingSystemId,
                                                 java.lang.String pURI)
                                          throws org.xml.sax.SAXException

Converts the given URI into an instance of InputSource.

Throws:
org.xml.sax.SAXException

parseSyntax

protected XsESchema parseSyntax(org.xml.sax.Locator pLocator,
                                java.lang.String pSchemaLocation)
                         throws org.xml.sax.SAXException,
                                java.io.IOException,
                                javax.xml.parsers.ParserConfigurationException
Throws:
org.xml.sax.SAXException
java.io.IOException
javax.xml.parsers.ParserConfigurationException

parseSyntax

protected void parseSyntax(org.xml.sax.Locator pLocator,
                           java.lang.String pSchemaLocation,
                           XsESchema pSchema)
                    throws org.xml.sax.SAXException,
                           java.io.IOException,
                           javax.xml.parsers.ParserConfigurationException
Throws:
org.xml.sax.SAXException
java.io.IOException
javax.xml.parsers.ParserConfigurationException

redefine

protected void redefine(XsESchema pSyntaxSchema,
                        XsERedefine pRedefine,
                        XsRedefinable pChild)
                 throws org.xml.sax.SAXException

Redefines the given XsRedefinable.

Throws:
org.xml.sax.SAXException

add

protected void add(XsESchema pSyntaxSchema,
                   java.lang.Object pChild)
            throws org.xml.sax.SAXException

Adds the given object to the schema.

Throws:
org.xml.sax.SAXException

redefineSchema

protected void redefineSchema(XsESchema pRedefiningSchema,
                              XsERedefine pRedefine)
                       throws org.xml.sax.SAXException,
                              java.io.IOException,
                              javax.xml.parsers.ParserConfigurationException

Handles xs:refefine.

Throws:
org.xml.sax.SAXException
java.io.IOException
javax.xml.parsers.ParserConfigurationException

includeSchema

protected void includeSchema(XsESchema pIncludingSchema,
                             XsEInclude pInclude,
                             org.xml.sax.Locator pLocator,
                             java.lang.String pSchemaLocation)
                      throws org.xml.sax.SAXException,
                             java.io.IOException,
                             javax.xml.parsers.ParserConfigurationException

Handles xs:include.

Throws:
org.xml.sax.SAXException
java.io.IOException
javax.xml.parsers.ParserConfigurationException

importSchema

protected void importSchema(XsESchema pImportingSchema,
                            java.lang.String pNamespace,
                            java.lang.String pSchemaLocation,
                            org.xml.sax.Locator pLocator)
                     throws org.xml.sax.SAXException,
                            java.io.IOException,
                            javax.xml.parsers.ParserConfigurationException

Handles xs:import.

Throws:
org.xml.sax.SAXException
java.io.IOException
javax.xml.parsers.ParserConfigurationException

importSchema

protected void importSchema(XsESchema pImportingSchema,
                            java.lang.String pNamespace,
                            org.w3c.dom.Node pNode,
                            java.lang.String pSchemaLocation)
                     throws org.xml.sax.SAXException,
                            java.io.IOException,
                            javax.xml.parsers.ParserConfigurationException
Throws:
org.xml.sax.SAXException
java.io.IOException
javax.xml.parsers.ParserConfigurationException

parse

protected void parse(XsESchema pSyntaxSchema,
                     java.lang.String pSchemaLocation)
              throws javax.xml.parsers.ParserConfigurationException,
                     org.xml.sax.SAXException,
                     java.io.IOException

Parses the given InputSource syntactically and converts the objects that it finds into logical objects. These logical objects are added to the given XSSchema.

Throws:
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.IOException

createSubstitutionGroups

protected void createSubstitutionGroups(XSSchema pSchema)
                                 throws org.xml.sax.SAXException
Throws:
org.xml.sax.SAXException

getXSContentHandler

public XSContentHandler getXSContentHandler(java.lang.String pSystemId)
                                     throws org.xml.sax.SAXException

This is the logical parsers frontend for parsing a stream of SAX events.

Parameters:
pSystemId - System Id (schema location of the schema being parsed, if known. Null otherwise. Knowing the system id is important only, if you want to prevent recursive includes.
Throws:
org.xml.sax.SAXException

parse

public XSSchema parse(org.w3c.dom.Node pNode)
               throws org.xml.sax.SAXException

This is the logical parsers frontend for parsing a DOM node.

Throws:
org.xml.sax.SAXException

parse

public XSSchema parse(org.xml.sax.InputSource pSource)
               throws javax.xml.parsers.ParserConfigurationException,
                      org.xml.sax.SAXException,
                      java.io.IOException

This is the logical parsers frontend for parsing the given InputSource. If the parsed schema includes or imports other schemas, they are also parsed and added to the parsers object tree.

Throws:
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.IOException
See Also:
#getXSContentHandler()

clearSyntaxSchemas

protected void clearSyntaxSchemas()

addSyntaxSchema

protected void addSyntaxSchema(XsESchema pSyntaxSchema)

removeSyntaxSchema

protected void removeSyntaxSchema()

getSyntaxSchemas

public XsESchema[] getSyntaxSchemas()

Provides context information to the schema which is currently being parsed. The schema with index 0 is the outermost schema, on which the parser is actually invoked.


getCurrentSyntaxSchema

public XsESchema getCurrentSyntaxSchema()

Returns the syntax schema, which is currently being parsed.