All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xerces.dom.ASModelImpl Maven / Gradle / Ivy

Go to download

Xerces2 provides high performance, fully compliant XML parsers in the Apache Xerces family. This new version of Xerces continues to build upon the Xerces Native Interface (XNI), a complete framework for building parser components and configurations that is extremely modular and easy to program. The Apache Xerces2 parser is the reference implementation of XNI but other parser components, configurations, and parsers can be written using the Xerces Native Interface. For complete design and implementation documents, refer to the XNI Manual. Xerces2 provides fully conforming XML Schema 1.0 and 1.1 processors. An experimental implementation of the "XML Schema Definition Language (XSD): Component Designators (SCD) Candidate Recommendation (January 2010)" is also provided for evaluation. For more information, refer to the XML Schema page. Xerces2 also provides a complete implementation of the Document Object Model Level 3 Core and Load/Save W3C Recommendations and provides a complete implementation of the XML Inclusions (XInclude) W3C Recommendation. It also provides support for OASIS XML Catalogs v1.1. Xerces2 is able to parse documents written according to the XML 1.1 Recommendation, except that it does not yet provide an option to enable normalization checking as described in section 2.13 of this specification. It also handles namespaces according to the XML Namespaces 1.1 Recommendation, and will correctly serialize XML 1.1 documents if the DOM level 3 load/save APIs are in use.

There is a newer version: 2.12.2
Show newest version
/*
 * The Apache Software License, Version 1.1
 *
 *
 * Copyright (c) 2001, 2002 The Apache Software Foundation.  
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer. 
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:  
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Xerces" and "Apache Software Foundation" must
 *    not be used to endorse or promote products derived from this
 *    software without prior written permission. For written 
 *    permission, please contact [email protected].
 *
 * 5. Products derived from this software may not be called "Apache",
 *    nor may "Apache" appear in their name, without prior written
 *    permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation and was
 * originally based on software copyright (c) 1999, International
 * Business Machines, Inc., http://www.apache.org.  For more
 * information on the Apache Software Foundation, please see
 * .
 */

package org.apache.xerces.dom;

import java.util.Vector;

import org.w3c.dom.DOMException;
import org.apache.xerces.dom3.as.*;
import org.apache.xerces.impl.xs.SchemaGrammar;

/**
 * To begin with, an abstract schema is a generic structure that could 
 * contain both internal and external subsets. An ASModel is an 
 * abstract object that could map to a DTD , an XML Schema , a database 
 * schema, etc. An ASModel could represent either an internal 
 * or an external subset; hence an abstract schema could be composed of an 
 * ASModel representing the internal subset and an 
 * ASModel representing the external subset. Note that the 
 * ASModel representing the external subset could consult the 
 * ASModel representing the internal subset. Furthermore, the 
 * ASModel representing the internal subset could be set to 
 * null by the setInternalAS method as a mechanism for 
 * "removal". In addition, only one ASModel representing the 
 * external subset can be specified as "active" and it is possible that none 
 * are "active". Finally, the ASModel contains the factory 
 * methods needed to create a various types of ASObjects like 
 * ASElementDeclaration, ASAttributeDeclaration, 
 * etc. 
 * 

See also the * Document Object Model (DOM) Level 3 Abstract Schemas and Load and Save Specification. * @deprecated * @author Pavani Mukthipudi * @author Neil Graham * @version $Id: ASModelImpl.java,v 1.5 2003/03/24 20:27:12 elena Exp $ */ public class ASModelImpl implements ASModel { // // Data // boolean fNamespaceAware = true; // conceptually, an ASModel may contain grammar information and/or // other ASModels. These two fields divide that function. protected Vector fASModels; protected SchemaGrammar fGrammar = null; // // Constructors // public ASModelImpl() { fASModels = new Vector(); } public ASModelImpl(boolean isNamespaceAware) { fASModels = new Vector(); fNamespaceAware = isNamespaceAware; } // // ASObject methods // /** * A code representing the underlying object as defined above. */ public short getAsNodeType() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The ASModel object associated with this * ASObject. For a node of type AS_MODEL, this * is null. */ public ASModel getOwnerASModel() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The ASModel object associated with this * ASObject. For a node of type AS_MODEL, this * is null. */ public void setOwnerASModel(ASModel ownerASModel) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The name of this ASObject depending on the * ASObject type. */ public String getNodeName() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The name of this ASObject depending on the * ASObject type. */ public void setNodeName(String nodeName) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The namespace prefix of this node, or null if it is * unspecified. */ public String getPrefix() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The namespace prefix of this node, or null if it is * unspecified. */ public void setPrefix(String prefix) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Returns the local part of the qualified name of this * ASObject. */ public String getLocalName() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Returns the local part of the qualified name of this * ASObject. */ public void setLocalName(String localName) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The namespace URI of this node, or null if it is * unspecified. defines how a namespace URI is attached to schema * components. */ public String getNamespaceURI() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The namespace URI of this node, or null if it is * unspecified. defines how a namespace URI is attached to schema * components. */ public void setNamespaceURI(String namespaceURI) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Creates a copy of this ASObject. See text for * cloneNode off of Node but substitute AS * functionality. * @param deep Setting the deep flag on, causes the whole * subtree to be duplicated. Setting it to false only * duplicates its immediate child nodes. * @return Cloned ASObject. */ public ASObject cloneASObject(boolean deep) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } // // ASModel methods // /** * true if this ASModel defines the document * structure in terms of namespaces and local names ; false * if the document structure is defined only in terms of * QNames. */ public boolean getIsNamespaceAware() { return fNamespaceAware; } /** * 0 if used internally, 1 if used externally, 2 if not all. An exception * will be raised if it is incompatibly shared or in use as an internal * subset. */ public short getUsageLocation() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The URI reference. */ public String getAsLocation() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The URI reference. */ public void setAsLocation(String asLocation) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The hint to locating an ASModel. */ public String getAsHint() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * The hint to locating an ASModel. */ public void setAsHint(String asHint) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * If usage is EXTERNAL_SUBSET or NOT_USED, and the * ASModel is simply a container of other ASModels. */ public boolean getContainer() { return (fGrammar != null); } /** * Instead of returning an all-in-one ASObject with * ASModel methods, have discernible top-level/"global" * element declarations. If one attempts to add, set, or remove a node * type other than the intended one, a hierarchy exception (or * equivalent is thrown). */ public ASNamedObjectMap getElementDeclarations() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Instead of returning an all-in-one ASObject with * ASModel methods, have discernible top-level/"global" * attribute declarations. If one attempts to add, set, or remove a node * type other than the intended one, a hierarchy exception (or * equivalent is thrown). */ public ASNamedObjectMap getAttributeDeclarations() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Instead of returning an all-in-one ASObject with * ASModel methods, have discernible top-level/"global" * notation declarations. If one attempts to add, set, or remove a node * type other than the intended one, a hierarchy exception (or * equivalent is thrown). */ public ASNamedObjectMap getNotationDeclarations() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Instead of returning an all-in-one ASObject with * ASModel methods, have discernible top-level/"global" * entity declarations. If one attempts to add, set, or remove a node * type other than the intended one, a hierarchy exception (or * equivalent is thrown). */ public ASNamedObjectMap getEntityDeclarations() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Instead of returning an all-in-one ASObject with * ASModel methods, have discernible top-level/"global * content model declarations. If one attempts to add, set, or remove a * node type other than the intended one, a hierarchy exception (or * equivalent is thrown). */ public ASNamedObjectMap getContentModelDeclarations() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * This method will allow the nesting or "importation" of ASModels. * @param abstractSchema ASModel to be set. Subsequent calls will nest * the ASModels within the specified ownerASModel. */ public void addASModel(ASModel abstractSchema) { fASModels.addElement(abstractSchema); } /** * To retrieve a list of nested ASModels without reference to names. * @return A list of ASModels. */ public ASObjectList getASModels() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Removes only the specified ASModel from the list of * ASModels. * @param as AS to be removed. */ public void removeAS(ASModel as) { fASModels.removeElement(as); } /** * Determines if an ASModel itself is valid, i.e., confirming * that it's well-formed and valid per its own formal grammar. * @return true if the ASModel is valid, * false otherwise. */ public boolean validate() { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Imports ASObject into ASModel. * @param asobject ASObject to be imported. */ public void importASObject(ASObject asobject) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Inserts ASObject into ASModel. * @param asobject ASObject to be inserted. */ public void insertASObject(ASObject asobject) { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Creates an element declaration for the element type specified. * @param namespaceURI The namespace URI of the element type * being declared. * @param name The name of the element. The format of the name could be * an NCName as defined by XML Namespaces or a Name as defined by XML * 1.0; it's ASModel-dependent. * @return A new ASElementDeclaration object with * name attribute set to tagname and * namespaceURI set to systemId. Other * attributes of the element declaration are set through * ASElementDeclaration interface methods. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. */ public ASElementDeclaration createASElementDeclaration(String namespaceURI, String name) throws DOMException { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Creates an attribute declaration. * @param namespaceURI The namespace URI of the attribute being declared. * @param name The name of the attribute. The format of the name could be * an NCName as defined by XML Namespaces or a Name as defined by XML * 1.0; it's ASModel-dependent. * @return A new ASAttributeDeclaration object with * appropriate attributes set by input parameters. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the input name * parameter contains an illegal character. */ public ASAttributeDeclaration createASAttributeDeclaration(String namespaceURI, String name) throws DOMException { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Creates a new notation declaration. * @param namespaceURI The namespace URI of the notation being declared. * @param name The name of the notation. The format of the name could be * an NCName as defined by XML Namespaces or a Name as defined by XML * 1.0; it's ASModel-dependent. * @param systemId The system identifier for the notation declaration. * @param publicId The public identifier for the notation declaration. * @return A new ASNotationDeclaration object with * notationName attribute set to name and * publicId and systemId set to the * corresponding fields. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. */ public ASNotationDeclaration createASNotationDeclaration(String namespaceURI, String name, String systemId, String publicId) throws DOMException { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Creates an ASEntityDeclaration. * @param name The name of the entity being declared. * @return A new ASEntityDeclaration object with * entityName attribute set to name. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. */ public ASEntityDeclaration createASEntityDeclaration(String name) throws DOMException { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } /** * Creates an object which describes part of an * ASElementDeclaration's content model. * @param minOccurs The minimum occurrence for the subModels of this * ASContentModel. * @param maxOccurs The maximum occurrence for the subModels of this * ASContentModel. * @param operator operator of type AS_CHOICE, * AS_SEQUENCE, AS_ALL or * AS_NONE. * @return A new ASContentModel object. * @exception DOMASException * A DOMASException, e.g., minOccurs > maxOccurs. */ public ASContentModel createASContentModel(int minOccurs, int maxOccurs, short operator) throws DOMASException { String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null); throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } // convenience methods public SchemaGrammar getGrammar() { return fGrammar; } public void setGrammar(SchemaGrammar grammar) { fGrammar = grammar; } public Vector getInternalASModels() { return fASModels; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy