blob: e9a29216f9d4d31bb73ff33fa74530a7333f34e1 [file] [log] [blame]
/**
* Copyright (c) 2002-2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
*/
package org.eclipse.xsd;
import java.util.Collection;
import org.w3c.dom.Element;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Concrete Component</b></em>'.
* It is the root of all concrete components.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link org.eclipse.xsd.XSDConcreteComponent#getElement <em>Element</em>}</li>
* <li>{@link org.eclipse.xsd.XSDConcreteComponent#getContainer <em>Container</em>}</li>
* <li>{@link org.eclipse.xsd.XSDConcreteComponent#getRootContainer <em>Root Container</em>}</li>
* <li>{@link org.eclipse.xsd.XSDConcreteComponent#getSchema <em>Schema</em>}</li>
* <li>{@link org.eclipse.xsd.XSDConcreteComponent#getDiagnostics <em>Diagnostics</em>}</li>
* </ul>
*
* @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent()
* @model abstract="true"
* @generated
*/
public interface XSDConcreteComponent extends EObject
{
/**
* Returns the value of the '<em><b>Element</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* This is the underlying DOM element associated with this component,
* i.e., the {@link #updateElement() serialization} of this component.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Element</em>' attribute.
* @see #setElement(Element)
* @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Element()
* @model dataType="org.eclipse.xsd.DOMElement"
* @generated
*/
Element getElement();
/**
* Sets the value of the '{@link org.eclipse.xsd.XSDConcreteComponent#getElement <em>Element</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Element</em>' attribute.
* @see #getElement()
* @generated
*/
void setElement(Element value);
/**
* Ensures that the underlying DOM {@link #getElement element} both exists and is up-to-date with respect to the model,
* i.e., it serializes the component and maintains an association with that serialization.
* @see #updateElement(boolean)
* @see #getElement
*/
void updateElement();
/**
* Ensures that the underlying DOM {@link #getElement element} both exists and is up-to-date with respect to the model,
* i.e., it serializes the component and maintains an association with that serialization.
* For <code>deep == true</code>,
* or when <code>{@link #getElement getElement()} == null</code>,
* this does the same thing as {@link #updateElement()};
* otherwise, it updates just the DOM element associated with this component to reflect the current state.
* @see #updateElement()
* @see #getElement
*/
void updateElement(boolean deep);
/**
* Returns the value of the '<em><b>Container</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* This represents the concrete container of this component,
* i.e., the inverse of the black diamond relations in the UML model.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Container</em>' reference.
* @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Container()
* @model resolveProxies="false" transient="true" changeable="false" volatile="true"
* @generated
*/
XSDConcreteComponent getContainer();
/**
* Returns the value of the '<em><b>Root Container</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* This walks the {@link #getContainer() containers}
* until it hits one that has no container.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Root Container</em>' reference.
* @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_RootContainer()
* @model resolveProxies="false" required="true" transient="true" changeable="false" volatile="true"
* @generated
*/
XSDConcreteComponent getRootContainer();
/**
* Returns the value of the '<em><b>Schema</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* This walks the {@link #getContainer() containers}
* until it reaches a schema.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Schema</em>' reference.
* @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Schema()
* @model resolveProxies="false" transient="true" changeable="false" volatile="true"
* @generated
*/
XSDSchema getSchema();
/**
* Returns the value of the '<em><b>Diagnostics</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.xsd.XSDDiagnostic}.
* <!-- begin-user-doc -->
* <p>
* These diagnostics are produced by {@link #validate() validation}.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Diagnostics</em>' containment reference list.
* @see org.eclipse.xsd.XSDPackage#getXSDConcreteComponent_Diagnostics()
* @model containment="true" transient="true"
* @generated
*/
EList<XSDDiagnostic> getDiagnostics();
/**
* Called to indicate that the given element has changed;
* the element should typically be the same as the one returned {@link #getElement}.
* It is expected that clients will not call this themselves
* since the DOM event listeners attached to the underlying DOM will invoke these automatically.
*/
void elementChanged(Element changedElement);
/**
* Called to indicate that the given element has changed attributes;
* the element should typically be the same as the one returned {@link #getElement}.
* It is expected that clients will not call this themselves
* since the DOM event listeners attached to the underlying DOM will invoke these automatically.
*/
void elementAttributesChanged(Element changedElement);
/**
* Called to indicate that the given element has changed contents;
* the element should typically be the same as the one returned {@link #getElement}.
* It is expected that clients will not call this themselves
* since the DOM event listeners attached to the underlying DOM will invoke these automatically.
*/
void elementContentsChanged(Element changedElement);
/**
* Returns the resolved type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveTypeDefinition(java.lang.String, java.lang.String)
* @see #resolveTypeDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved type definition.
*/
XSDTypeDefinition resolveTypeDefinitionURI(String uri);
/**
* Returns the resolved type definition of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveTypeDefinitionURI(java.lang.String)
* @see #resolveTypeDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved type definition.
*/
XSDTypeDefinition resolveTypeDefinition(String namespace, String localName);
/**
* Returns the resolved type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveTypeDefinitionURI(java.lang.String)
* @see #resolveTypeDefinition(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved type definition.
*/
XSDTypeDefinition resolveTypeDefinition(String localName);
/**
* Returns the resolved simple type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveSimpleTypeDefinition(java.lang.String, java.lang.String)
* @see #resolveSimpleTypeDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved simple type definition.
*/
XSDSimpleTypeDefinition resolveSimpleTypeDefinitionURI(String uri);
/**
* Returns the resolved simple type definition of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveSimpleTypeDefinitionURI(java.lang.String)
* @see #resolveSimpleTypeDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved simple type definition.
*/
XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String namespace, String localName);
/**
* Returns the resolved simple type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveSimpleTypeDefinitionURI(java.lang.String)
* @see #resolveSimpleTypeDefinition(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved simple type definition.
*/
XSDSimpleTypeDefinition resolveSimpleTypeDefinition(String localName);
/**
* Returns the resolved complex type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveComplexTypeDefinition(java.lang.String, java.lang.String)
* @see #resolveComplexTypeDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved complex type definition.
*/
XSDComplexTypeDefinition resolveComplexTypeDefinitionURI(String uri);
/**
* Returns the resolved complex type definition of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveComplexTypeDefinitionURI(java.lang.String)
* @see #resolveComplexTypeDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved complex type definition.
*/
XSDComplexTypeDefinition resolveComplexTypeDefinition(String namespace, String localName);
/**
* Returns the resolved complex type definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveComplexTypeDefinitionURI(java.lang.String)
* @see #resolveComplexTypeDefinition(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved complex type definition.
*/
XSDComplexTypeDefinition resolveComplexTypeDefinition(String localName);
/**
* Returns the resolved attribute declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveAttributeDeclaration(java.lang.String, java.lang.String)
* @see #resolveAttributeDeclaration(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved attribute declaration.
*/
XSDAttributeDeclaration resolveAttributeDeclarationURI(String uri);
/**
* Returns the resolved attribute declaration of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveAttributeDeclarationURI(java.lang.String)
* @see #resolveAttributeDeclaration(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved attribute declaration.
*/
XSDAttributeDeclaration resolveAttributeDeclaration(String namespace, String localName);
/**
* Returns the resolved attribute declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveAttributeDeclarationURI(java.lang.String)
* @see #resolveAttributeDeclaration(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved attribute declaration.
*/
XSDAttributeDeclaration resolveAttributeDeclaration(String localName);
/**
* Returns the resolved element declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveElementDeclaration(java.lang.String, java.lang.String)
* @see #resolveElementDeclaration(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved element declaration.
*/
XSDElementDeclaration resolveElementDeclarationURI(String uri);
/**
* Returns the resolved element declaration of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveElementDeclarationURI(java.lang.String)
* @see #resolveElementDeclaration(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved element declaration.
*/
XSDElementDeclaration resolveElementDeclaration(String namespace, String localName);
/**
* Returns the resolved element declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveElementDeclarationURI(java.lang.String)
* @see #resolveElementDeclaration(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved element declaration.
*/
XSDElementDeclaration resolveElementDeclaration(String localName);
/**
* Returns the resolved attribute group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveAttributeGroupDefinition(java.lang.String, java.lang.String)
* @see #resolveAttributeGroupDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved attribute group definition.
*/
XSDAttributeGroupDefinition resolveAttributeGroupDefinitionURI(String uri);
/**
* Returns the resolved attribute group definition the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveAttributeGroupDefinitionURI(java.lang.String)
* @see #resolveAttributeGroupDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved attribute group definition
*/
XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String namespace, String localName);
/**
* Returns the resolved attribute group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveAttributeGroupDefinitionURI(java.lang.String)
* @see #resolveAttributeGroupDefinition(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved attribute group definition.
*/
XSDAttributeGroupDefinition resolveAttributeGroupDefinition(String localName);
/**
* Returns the resolved model group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveModelGroupDefinition(java.lang.String, java.lang.String)
* @see #resolveModelGroupDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved model group definition.
*/
XSDModelGroupDefinition resolveModelGroupDefinitionURI(String uri);
/**
* Returns the resolved model group definition of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveModelGroupDefinitionURI(java.lang.String)
* @see #resolveModelGroupDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved model group definition.
*/
XSDModelGroupDefinition resolveModelGroupDefinition(String namespace, String localName);
/**
* Returns the resolved model group definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveModelGroupDefinitionURI(java.lang.String)
* @see #resolveModelGroupDefinition(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved model group definition.
*/
XSDModelGroupDefinition resolveModelGroupDefinition(String localName);
/**
* Returns the resolved identity constraint definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveIdentityConstraintDefinition(java.lang.String, java.lang.String)
* @see #resolveIdentityConstraintDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved identity constraint definition.
*/
XSDIdentityConstraintDefinition resolveIdentityConstraintDefinitionURI(String uri);
/**
* Returns the resolved identity constraint definition of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveIdentityConstraintDefinitionURI(java.lang.String)
* @see #resolveIdentityConstraintDefinition(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved identity constraint definition.
*/
XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String namespace, String localName);
/**
* Returns the resolved identity constraint definition of the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveIdentityConstraintDefinitionURI(java.lang.String)
* @see #resolveIdentityConstraintDefinition(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved identity constraint definition.
*/
XSDIdentityConstraintDefinition resolveIdentityConstraintDefinition(String localName);
/**
* Returns the resolved notation declaration of the given {@link org.eclipse.xsd.XSDNamedComponent#getURI() URI}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveNotationDeclaration(java.lang.String, java.lang.String)
* @see #resolveNotationDeclaration(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getURI()
* @param uri the URI to resolve.
* @return the resolved notation declaration.
*/
XSDNotationDeclaration resolveNotationDeclarationURI(String uri);
/**
* Returns the resolved notation declaration of the given
* {@link org.eclipse.xsd.XSDNamedComponent#getTargetNamespace() namespace} and {@link org.eclipse.xsd.XSDNamedComponent#getName() name}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #resolveNotationDeclarationURI(java.lang.String)
* @see #resolveNotationDeclaration(java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getTargetNamespace()
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param namespace the namespace to resolve.
* @param localName the name to resolve.
* @return the resolved notation declaration.
*/
XSDNotationDeclaration resolveNotationDeclaration(String namespace, String localName);
/**
* Returns the resolved notation declaration the given {@link org.eclipse.xsd.XSDNamedComponent#getName() name}
* within the {@link #getSchema() schema}.
* An unresolved instance is synthesized to hold the namespace and name if an existing instance cannot be found.
* @see #getSchema()
* @see org.eclipse.xsd.XSDSchema#getTargetNamespace()
* @see #resolveNotationDeclarationURI(java.lang.String)
* @see #resolveNotationDeclaration(java.lang.String, java.lang.String)
* @see org.eclipse.xsd.XSDNamedComponent#getName()
* @param localName the name to resolve.
* @return the resolved notation declaration
*/
XSDNotationDeclaration resolveNotationDeclaration(String localName);
/**
* Returns the collection of components that have an {@link org.eclipse.xsd.XSDAnnotation annotation}
* containing an {@link org.eclipse.xsd.XSDAnnotation#getApplicationInformation() appinfo} with given source URI.
* @see org.eclipse.xsd.XSDAnnotation#getApplicationInformationSources()
* @param sourceURI the source URI to match.
* @return the collection of matching components.
*/
Collection<XSDConcreteComponent> getComponentsWithApplicationInformation(String sourceURI);
/**
* Returns the collection of components that have an {@link org.eclipse.xsd.XSDAnnotation annotation}
* containing a {@link org.eclipse.xsd.XSDAnnotation#getUserInformation() documentation} with given source URI.
* @see org.eclipse.xsd.XSDAnnotation#getApplicationInformationSources()
* @param sourceURI the source URI to match.
* @return the collection of matching components.
*/
Collection<XSDConcreteComponent> getComponentsWithUserInformation(String sourceURI);
/**
* Validates whether this component conforms to the constraints defined in the XML Schema standard.
* {@link #getDiagnostics() Diagnostics} are produced to report any problems.
* The effect of calling this for a component not directly or indirectly contained by a {@link org.eclipse.xsd.XSDSchema schema}
* is undefined, and is likely to result in null pointer exceptions.
* @see #getDiagnostics()
* @see #clearDiagnostics()
*/
void validate();
/**
* Clears any {@link #getDiagnostics() diagnostics} associated with the component and all those it contains.
* @see #validate()
* @see #getDiagnostics()
*/
void clearDiagnostics();
/**
* Creates a clone of the component.
* The clone may be deep and may share the DOM of this component.
* @param deep whether the clone should be deep.
* @param shareDOM whether the clone should share the original DOM
* @return a clone of the component.
*/
XSDConcreteComponent cloneConcreteComponent(boolean deep, boolean shareDOM);
/**
* Returns whether the given component is contained by this component.
* @param xsdConcreteComponent a component.
* @return whether the component is contained by this component.
*/
boolean contains(XSDConcreteComponent xsdConcreteComponent);
}