com.saxonica.schema.sdoc

## Class XSDSchema

- java.lang.Object
- - net.sf.saxon.tree.linked.NodeImpl
  - - net.sf.saxon.tree.linked.ElementImpl
    - - com.saxonica.schema.sdoc.SchemaElement
      - - com.saxonica.schema.sdoc.XSDSchema

- All Implemented Interfaces:
    Source, SourceLocator, PullEvent, FingerprintedNode, Item, MutableNodeInfo, NamespaceResolver, NodeInfo, Sequence, SteppingNode, SiblingCountingNode

      public class XSDSchema
      extends SchemaElement

  An xs:schema element in an XML Schema document

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.saxonica.schema.sdoc.SchemaElement

      `SchemaElement.XPathStaticContext`

  - ### Field Summary

    - ### Fields inherited from class com.saxonica.schema.sdoc.SchemaElement

      `NAMESPACE_ANY, NAMESPACE_LOCAL, NAMESPACE_OTHER, NAMESPACE_TARGET, REQUIRE_NULL_NS, REQUIRE_TARGET_NS, USE_DEFAULT_NS, USE_DEFAULT_NS_WITHOUT_IMPORT`

    - ### Fields inherited from class net.sf.saxon.tree.linked.NodeImpl

      `NODE_LETTER`

    - ### Fields inherited from interface net.sf.saxon.om.NodeInfo

      `ALL_NAMESPACES, IS_DTD_TYPE, IS_NILLED, LOCAL_NAMESPACES, NO_NAMESPACES`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XSDSchema()` Create an XSDSchema object, representing the xs:schema element in a schema document

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addChild(NodeImpl node, int index)` Add a child node to this node.
    `void` | `addGlobalParam(GlobalParam param)` Declare a global parameter for XPath expressions in this schema document (Saxon extension)
    `void` | `compact(int size)` Compact the space used by this node
    `boolean` | `defaultOpenContentAppliesToEmpty()` Ask if the default open content wildcard applies to types that would otherwise have an EMPTY content model
    `Set<String>` | `getAllowedExtensions()` Get the set of extensions allowed in this schema document
    `String` | `getAttributeFormDefault()` Returns the attributeFormDefault property of this Schema.
    `int` | `getBlockDefault()` Returns the default BlockList for this Schema.
    `AttributeGroupReference` | `getDefaultAttributeGroupReference()` Get a reference to the default attribute group
    `String` | `getDefaultOpenContentMode()` Get the default open content mode, as a string (interleave or suffix)
    `Wildcard` | `getDefaultOpenContentWildcard()` Get the default open content wildcard, if any
    `String` | `getElementFormDefault()` Returns the elementFormDefault property of this Schema.
    `int` | `getErrorCount()` Get the number of errors detected in this schema document
    `Executable` | `getExecutable()` Get the Executable corresponding to this schema document.
    `int` | `getFinalDefault()` Returns the default value of "final" for this Schema.
    `NodeImpl` | `getFirstChild()` Get the first child node of the element
    `GlobalParam` | `getGlobalParam(StructuredQName name)` Get the GlobalParam object representing a named parameter (Saxon extension)
    `Collection<GlobalParam>` | `getGlobalParams()` Return the set of global parameters defined in this schema document
    `NodeImpl` | `getLastChild()` Get the last child node of the element
    `protected NodeImpl` | `getNthChild(int n)` Get the nth child node of the element (numbering from 0)
    `int` | `getNumberOfChildren()` Determine how many children the node has
    `protected int` | `getRawSequenceNumber()`
    `SingleNamespaceSchema` | `getSchema()` Get the PreparedSchema to which schema components are being added
    `SchemaCompiler` | `getSchemaCompiler()` Get the SchemaCompiler in use
    `protected long` | `getSequenceNumber()` Get the node sequence number (in document order).
    `String` | `getStringValue()` Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
    `CharSequence` | `getStringValueCS()` Get the value of the item as a CharSequence.
    `String` | `getTargetNamespace()` Get the target namespace of this schema document.
    `String` | `getXPathDefaultNamespace()` Get the value of the defaultXPathDefaultNamespace attribute defined on this element
    `boolean` | `hasChildNodes()` Determine if the node has any children.
    `void` | `incrementErrorCount()` Increment the number of errors detected in this schema document
    `void` | `insertChildren(NodeInfo[] source, boolean atStart, boolean inherit)` Insert a sequence of nodes as children of this node.
    `protected void` | `insertChildrenAt(NodeInfo[] source, int index, boolean inherit)` Insert children before or after a given existing child
    `boolean` | `isChameleon()` Determine if this is a chameleon schema document, that is, one with no targetNamespace of its own, whose effective target namespace (and for many purposes, default namespace) are set to the targetNamespace of the referring schema document.
    `protected boolean` | `isFinalState(int state)` For elements whose content model is parsed using a finite state machine, test whether a given state is a final state.
    `boolean` | `isImportedNamespace(String uri)` Determine whether a given URI is that of a namespace that has been imported into this schema document.
    `protected AxisIterator` | `iterateChildren(NodeTest test)` Get an enumeration of the children of this node
    `void` | `postValidate(SchemaCompiler compiler)` Process child elements after validation
    `void` | `prepareAttributes()` Validate and process the attributes on this element in the schema document
    `protected void` | `removeChild(NodeImpl child)` Remove a given child
    `protected void` | `replaceChildrenAt(NodeInfo[] source, int index, boolean inherit)` Replace child at a given index by new children
    `void` | `setAttributeFormDefault(String attributeFormDefault)` Sets the attributeFormDefault property of this Schema.
    `void` | `setBlockDefault(int value)` Sets the default Block values for this Schema.
    `protected void` | `setChildren(Object children)` Set the children of this node
    `void` | `setDefaultOpenContent(Wildcard wildcard, String mode, boolean appliesToEmpty)` Set the open content wildcard and mode
    `void` | `setElementFormDefault(String elementFormDefault)` Sets the elementFormDefault property of this Schema.
    `void` | `setFinalDefault(int value)` Set the default "final" list for this Schema.
    `protected void` | `setRawSequenceNumber(int seq)`
    `void` | `setReferrer(SchemaElement referrer)` Set the xs:include, xs:import, or xs:redefine element that caused this schema document to be loaded
    `void` | `setSchema(SingleNamespaceSchema schema)` Set the SingleNamespaceSchema to which schema components are being added
    `void` | `setSchemaCompiler(SchemaCompiler manager)` Set the SchemaCompiler in use
    `void` | `validate(SchemaCompiler compiler)` Validate this schema element, checking all document-level constraints
    `protected void` | `validateChildren(SchemaCompiler compiler)` Validate the children of this node, recursively.

    - ### Methods inherited from class com.saxonica.schema.sdoc.SchemaElement

      `allocateAnonymousTypeCode, allowAttributes, checkContentModel, checkLocalTargetNamespace, checkMutuallyExclusiveAttributes, checkOnlyChildIsAnnotation, checkPermittedType, duplicate, duplicateElement, error, error, getContainingComplexType, getContainingSimpleType, getFingerprint, getNameCode, getSchemaNodeFactory, getXSDSchema, illegalElement, indefiniteArticle, invalidAttributeValue, isTopLevel, makeNamespaceContext, missingAttribute, missingChildElement, mustBeFirstElement, mustBeLastElement, mustPrecede, mutuallyExclusive, mutuallyExclusiveAttributes, mutuallyExclusiveElementAndAttribute, parseBooleanAttribute, parseFinalOrBlock, processAllAttributes, processAllowedNamespaces, processDisallowedNamespaces, processDisallowedQNames, processId, processMaxOccurs, processMinOccurs, requireAttribute, setSchemaNodeFactory, validateSubtree, warning`

    - ### Methods inherited from class net.sf.saxon.tree.linked.ElementImpl

      `addAttribute, addNamespace, copy, delete, fixupInsertedNamespaces, generateId, getAttributeList, getAttributeValue, getAttributeValue, getBaseURI, getColumnNumber, getDeclaredNamespaces, getDocumentRoot, getLineNumber, getNameCode, getNamespaceList, getNodeKind, getPrefixForURI, getRoot, getSchemaType, getSystemId, getTypeAnnotation, getURIForPrefix, gsetAttributeCollection, initialise, isId, isNilled, iteratePrefixes, removeAttribute, removeTypeAnnotation, rename, replaceStringValue, setAttributeList, setLocation, setNameCode, setNamespaceDeclarations, setNamespaceList, setSystemId, setTypeAnnotation`

    - ### Methods inherited from class net.sf.saxon.tree.linked.NodeImpl

      `atomize, compareOrder, comparePosition, equals, getConfiguration, getDisplayName, getDocumentNumber, getFingerprint, getLocalPart, getNamePool, getNextInDocument, getNextSibling, getParent, getPhysicalRoot, getPrefix, getPreviousInDocument, getPreviousSibling, getPublicId, getRawParent, getSiblingPosition, getSuccessorElement, getURI, head, insertSiblings, isDeleted, isIdref, isSameNodeInfo, iterate, iterateAxis, iterateAxis, newBuilder, replace, setRawParent, setSiblingPosition`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.NodeInfo

      `hashCode`

- - ### Constructor Detail

    - #### XSDSchema

          public XSDSchema()

      Create an XSDSchema object, representing the xs:schema element in a schema document

  - ### Method Detail

    - #### getSchema

          public SingleNamespaceSchema getSchema()

      Get the PreparedSchema to which schema components are being added
      Overrides:
        `getSchema` in class `SchemaElement`
      Returns:
        the PreparedSchema containing the compiled schema components

    - #### getExecutable

          public Executable getExecutable()

      Get the Executable corresponding to this schema document. This is a container for the XPath expressions it contains.
      Returns:
        the Executable for XPath expressions

    - #### getAllowedExtensions

          public Set<String> getAllowedExtensions()

      Get the set of extensions allowed in this schema document
      Returns:
        the set of allowed extensions (from the saxon:extensions attribute)

    - #### setSchema

          public void setSchema(SingleNamespaceSchema schema)

      Set the SingleNamespaceSchema to which schema components are being added
      Parameters:
        `schema` - the SingleNamespaceSchema containing the compiled schema components

    - #### setSchemaCompiler

          public void setSchemaCompiler(SchemaCompiler manager)

      Set the SchemaCompiler in use
      Parameters:
        `manager` - the schema compiler

    - #### getSchemaCompiler

          public SchemaCompiler getSchemaCompiler()

      Get the SchemaCompiler in use
      Returns:
        the schema compiler

    - #### setReferrer

          public void setReferrer(SchemaElement referrer)

      Set the xs:include, xs:import, or xs:redefine element that caused this schema document to be loaded
      Parameters:
        `referrer` - the referring xs:include, xs:import, or xs:redefine element

    - #### isChameleon

          public boolean isChameleon()

      Determine if this is a chameleon schema document, that is, one with no targetNamespace of its own, whose effective target namespace (and for many purposes, default namespace) are set to the targetNamespace of the referring schema document.
      Returns:
        true if this document is a chameleon

    - #### prepareAttributes

          public void prepareAttributes()
                                 throws SchemaException

      Validate and process the attributes on this element in the schema document
      Specified by:
        `prepareAttributes` in class `SchemaElement`
      Throws:
        `SchemaException` - if any errors are found in the attributes

    - #### isImportedNamespace

          public boolean isImportedNamespace(String uri)

      Determine whether a given URI is that of a namespace that has been imported into this schema document.
      Parameters:
        `uri` - the namespace URI ("" for the null namespace)
      Returns:
        true if the namespace has been imported, false otherwise

    - #### validate

          public void validate(SchemaCompiler compiler)
                        throws SchemaException

      Validate this schema element, checking all document-level constraints
      Overrides:
        `validate` in class `SchemaElement`
      Parameters:
        `compiler` - used for reporting errors
      Throws:
        `SchemaException` - if any XML representation constraints are violated

    - #### validateChildren

          protected void validateChildren(SchemaCompiler compiler)
                                   throws SchemaException

      Validate the children of this node, recursively.
      Overrides:
        `validateChildren` in class `SchemaElement`
      Parameters:
        `compiler` - used for error reporting
      Throws:
        `SchemaException` - if the subtree is not valid

    - #### isFinalState

          protected boolean isFinalState(int state)

      Description copied from class: `SchemaElement`
      For elements whose content model is parsed using a finite state machine, test whether a given state is a final state. The default implementation of this method is never used; it exists for the benefit of subclasses that do not use this mechanism
      Overrides:
        `isFinalState` in class `SchemaElement`
      Parameters:
        `state` - the state to be tested
      Returns:
        true if the given state is a final state

    - #### postValidate

          public void postValidate(SchemaCompiler compiler)
                            throws SchemaException

      Process child elements after validation
      Overrides:
        `postValidate` in class `SchemaElement`
      Parameters:
        `compiler` - used for reporting errors
      Throws:
        `SchemaException` - if errors are found

    - #### getTargetNamespace

          public String getTargetNamespace()

      Get the target namespace of this schema document.
      Returns:
        "" for the no-namespace case

    - #### getAttributeFormDefault

          public String getAttributeFormDefault()

      Returns the attributeFormDefault property of this Schema.
      Returns:
        the attributeFormDefault property of this Schema, or null if no default Form was set. If no default Form has been set, the user should assume Form.Unqualified. The value is returned as a string, "qualified" or "unqualified".

    - #### getBlockDefault

          public int getBlockDefault()

      Returns the default BlockList for this Schema.
      Returns:
        the default BlockList for this Schema, as an integer with bit-significant fields

    - #### getElementFormDefault

          public String getElementFormDefault()

      Returns the elementFormDefault property of this Schema.
      Returns:
        the elementFormDefault property of this Schema. The value is returned as a string ("qualified" or "unqualified"), or null if no default Form was set. If no default Form has been set, the user should assume "unqualified".

    - #### getFinalDefault

          public int getFinalDefault()

      Returns the default value of "final" for this Schema.
      Returns:
        final the default value of "final" for this Schema.

    - #### getDefaultOpenContentWildcard

          public Wildcard getDefaultOpenContentWildcard()

      Get the default open content wildcard, if any
      Returns:
        the default open content wildcard if there is one, otherwise null

    - #### getDefaultOpenContentMode

          public String getDefaultOpenContentMode()

      Get the default open content mode, as a string (interleave or suffix)
      Returns:
        the default open content mode, or null if none is defined

    - #### defaultOpenContentAppliesToEmpty

          public boolean defaultOpenContentAppliesToEmpty()

      Ask if the default open content wildcard applies to types that would otherwise have an EMPTY content model
      Returns:
        true if open content applies by default to empty types

    - #### setAttributeFormDefault

          public void setAttributeFormDefault(String attributeFormDefault)

      Sets the attributeFormDefault property of this Schema.
      Parameters:
        `attributeFormDefault` - the Form value of the attributeFormDefault property for this Schema, as a string, "qualified" or "unqualified". The caller is responsible for validating the value.

    - #### setBlockDefault

          public void setBlockDefault(int value)

      Sets the default Block values for this Schema.
      Parameters:
        `value` - the default Block values to set for this Schema, as a bit-significant integer.

    - #### setElementFormDefault

          public void setElementFormDefault(String elementFormDefault)

      Sets the elementFormDefault property of this Schema.
      Parameters:
        `elementFormDefault` - the Form value of the elementFormDefault property for this Schema.

    - #### setFinalDefault

          public void setFinalDefault(int value)

      Set the default "final" list for this Schema.
      Parameters:
        `value` - the default final values to set for this Schema, as a bit-significant integer

    - #### setDefaultOpenContent

          public void setDefaultOpenContent(Wildcard wildcard,
                                   String mode,
                                   boolean appliesToEmpty)

      Set the open content wildcard and mode
      Parameters:
        `wildcard` - the default open content wildcard
        `mode` - the default open content mode, as a string
        `appliesToEmpty` - true if the default open content wildcard applies to types that would otherwise have variety empty

    - #### getXPathDefaultNamespace

          public String getXPathDefaultNamespace()

      Get the value of the defaultXPathDefaultNamespace attribute defined on this element
      Returns:
        the value of the defaultXPathDefaultNamespace attribute, or "##local" if no value has been defined for the attribute

    - #### getDefaultAttributeGroupReference

          public AttributeGroupReference getDefaultAttributeGroupReference()

      Get a reference to the default attribute group
      Returns:
        a reference to the default attribute group if there is one, or null otherwise

    - #### getErrorCount

          public int getErrorCount()

      Get the number of errors detected in this schema document
      Returns:
        the number of errors detected

    - #### incrementErrorCount

          public void incrementErrorCount()

      Increment the number of errors detected in this schema document

    - #### addGlobalParam

          public void addGlobalParam(GlobalParam param)
                              throws SchemaException

      Declare a global parameter for XPath expressions in this schema document (Saxon extension)
      Parameters:
        `param` - the details of the parameter
      Throws:
        `SchemaException` - if the variable name is a duplicate

    - #### getGlobalParam

          public GlobalParam getGlobalParam(StructuredQName name)

      Get the GlobalParam object representing a named parameter (Saxon extension)
      Parameters:
        `name` - the parameter name
      Returns:
        the GlobalParam object if a parameter with this name exists, else null

    - #### getGlobalParams

          public Collection<GlobalParam> getGlobalParams()

      Return the set of global parameters defined in this schema document
      Returns:
        the set of global parameters

    - #### getSequenceNumber

          protected final long getSequenceNumber()

      Get the node sequence number (in document order). Sequence numbers are monotonic but not consecutive. In the current implementation, parent nodes (elements and document nodes) have a zero least-significant word, while namespaces, attributes, text nodes, comments, and PIs have the top word the same as their owner and the bottom half reflecting their relative position. For nodes added by XQUery Update, the sequence number is -1L
      Overrides:
        `getSequenceNumber` in class `NodeImpl`
      Returns:
        the sequence number if there is one, or -1L otherwise.

    - #### getRawSequenceNumber

          protected final int getRawSequenceNumber()

    - #### setRawSequenceNumber

          protected final void setRawSequenceNumber(int seq)

    - #### setChildren

          protected final void setChildren(Object children)

      Set the children of this node
      Parameters:
        `children` - null if there are no children, a single NodeInfo if there is one child, an array of NodeInfo if there are multiple children

    - #### hasChildNodes

          public final boolean hasChildNodes()

      Determine if the node has any children.
      Specified by:
        `hasChildNodes` in interface `NodeInfo`
      Overrides:
        `hasChildNodes` in class `NodeImpl`
      Returns:
        `true` if the node has any children, `false` if the node has no children.

    - #### getNumberOfChildren

          public final int getNumberOfChildren()

      Determine how many children the node has
      Returns:
        the number of children of this parent node

    - #### iterateChildren

          protected final AxisIterator iterateChildren(NodeTest test)

      Get an enumeration of the children of this node
      Parameters:
        `test` - A NodeTest to be satisfied by the child nodes, or null if all child node are to be returned
      Returns:
        an iterator over the children of this node

    - #### getFirstChild

          public final NodeImpl getFirstChild()

      Get the first child node of the element
      Specified by:
        `getFirstChild` in interface `SteppingNode`
      Overrides:
        `getFirstChild` in class `NodeImpl`
      Returns:
        the first child node of the required type, or null if there are no children

    - #### getLastChild

          public final NodeImpl getLastChild()

      Get the last child node of the element
      Overrides:
        `getLastChild` in class `NodeImpl`
      Returns:
        the last child of the element, or null if there are no children

    - #### getNthChild

          protected final NodeImpl getNthChild(int n)

      Get the nth child node of the element (numbering from 0)
      Parameters:
        `n` - identifies the required child
      Returns:
        the last child of the element, or null if there is no n'th child

    - #### removeChild

          protected void removeChild(NodeImpl child)

      Remove a given child
      Parameters:
        `child` - the child to be removed

    - #### getStringValue

          public String getStringValue()

      Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
      Returns:
        the accumulated character content of the element, including descendant elements.
      See Also:
        `Item.getStringValueCS()`

    - #### getStringValueCS

          public CharSequence getStringValueCS()

      Description copied from class: `NodeImpl`
      Get the value of the item as a CharSequence. This is in some cases more efficient than the version of the method that returns a String.
      Specified by:
        `getStringValueCS` in interface `Item`
      Overrides:
        `getStringValueCS` in class `NodeImpl`
      Returns:
        the string value of the item
      See Also:
        `Item.getStringValue()`

    - #### addChild

          protected void addChild(NodeImpl node,
                      int index)

      Add a child node to this node. For system use only. Note: normalizing adjacent text nodes is the responsibility of the caller.
      Parameters:
        `node` - the node to be added as a child of this node. This must be an instance of `NodeImpl`. It will be modified as a result of this call (by setting its parent property and sibling position)
        `index` - the position where the child is to be added

    - #### insertChildren

          public void insertChildren(NodeInfo[] source,
                            boolean atStart,
                            boolean inherit)

      Insert a sequence of nodes as children of this node.

      This method takes no action unless the target node is a document node or element node. It also takes no action in respect of any supplied nodes that are not elements, text nodes, comments, or processing instructions.

      The supplied nodes will form the new children. Adjacent text nodes will be merged, and zero-length text nodes removed. The supplied nodes may be modified in situ, for example to change their parent property and to add namespace bindings, or they may be copied, at the discretion of the implementation.

      Specified by:
        `insertChildren` in interface `MutableNodeInfo`
      Overrides:
        `insertChildren` in class `NodeImpl`
      Parameters:
        `source` - the nodes to be inserted. The implementation determines what implementation classes of node it will accept; this implementation will accept text, comment, and processing instruction nodes belonging to any implementation, but elements must be instances of `ElementImpl`. The supplied nodes will be modified in situ, for example to change their parent property and to add namespace bindings, if they are instances of `ElementImpl`; otherwise they will be copied. If the nodes are copied, then on return the supplied source array will contain the copy rather than the original.
        `atStart` - true if the new nodes are to be inserted before existing children; false if they are to be inserted after existing children
        `inherit` - true if the inserted nodes are to inherit the namespaces of their new parent; false if such namespaces are to be undeclared
      Throws:
        `IllegalArgumentException` - if the supplied nodes use a node implementation that this implementation does not accept.

    - #### insertChildrenAt

          protected void insertChildrenAt(NodeInfo[] source,
                              int index,
                              boolean inherit)

      Insert children before or after a given existing child
      Parameters:
        `source` - the children to be inserted. We allow any kind of text, comment, or processing instruction node, but element nodes must be instances of this NodeInfo implementation.
        `index` - the position before which they are to be inserted: 0 indicates insertion before the first child, 1 insertion before the second child, and so on.
        `inherit` - true if the inserted nodes are to inherit the namespaces that are in-scope for their new parent; false if such namespaces should be undeclared on the children

    - #### replaceChildrenAt

          protected void replaceChildrenAt(NodeInfo[] source,
                               int index,
                               boolean inherit)

      Replace child at a given index by new children
      Parameters:
        `source` - the children to be inserted
        `index` - the position at which they are to be inserted: 0 indicates replacement of the first child, replacement of the second child, and so on. The effect is undefined if index is out of range
        `inherit` - set to true if the new child elements are to inherit the in-scope namespaces of their new parent
      Throws:
        `IllegalArgumentException` - if any of the replacement nodes is not an element, text, comment, or processing instruction node

    - #### compact

          public void compact(int size)

      Compact the space used by this node
      Parameters:
        `size` - the number of actual children

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.