XSLChoose
Date: 2016-07-03

com.icl.saxon.style

## Class XSLChoose

- java.lang.Object
- - com.icl.saxon.om.AbstractNode
  - - com.icl.saxon.tree.NodeImpl
    - - com.icl.saxon.tree.ElementImpl
      - - com.icl.saxon.tree.ElementWithAttributes
        - - com.icl.saxon.style.StyleElement
          - - com.icl.saxon.style.XSLChoose

- All Implemented Interfaces:
    NodeInfo, javax.xml.transform.dom.DOMLocator, javax.xml.transform.Source, javax.xml.transform.SourceLocator, org.w3c.dom.Element, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, org.xml.sax.Locator

      public class XSLChoose
      extends StyleElement

  An xsl:choose elements in the stylesheet.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `sequence`

    - ### Fields inherited from class com.icl.saxon.style.StyleElement

      `attributeSets, extensionNamespaces, REPORT_ALWAYS, REPORT_IF_INSTANTIATED, REPORT_UNLESS_FORWARDS_COMPATIBLE, reportingCircumstances, staticContext, validationError, version`

    - ### Fields inherited from class com.icl.saxon.tree.ElementWithAttributes

      `attributeList, namespaceList`

    - ### Fields inherited from class com.icl.saxon.tree.ElementImpl

      `nameCode, root`

    - ### Fields inherited from class com.icl.saxon.tree.NodeImpl

      `emptyArray, index, parent`

    - ### Fields inherited from class com.icl.saxon.om.AbstractNode

      `NODE_LETTER`

    - ### Fields inherited from interface org.w3c.dom.Node

      `ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

    - ### Fields inherited from interface com.icl.saxon.om.NodeInfo

      `ATTRIBUTE, COMMENT, ELEMENT, NAMESPACE, NODE, NONE, NUMBER_OF_TYPES, PI, ROOT, TEXT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XSLChoose()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addChild(NodeImpl node, int index)` Add a child node to this node.
    `void` | `compact(int size)` Compact the space used by this node
    `void` | `copyStringValue(Outputter out)` Copy the string-value of this node to a given outputter
    `boolean` | `doesPostProcessing()` Determine whether this element does any processing after instantiating any children.
    `void` | `dropChildren()` Drop a branch of the tree.
    `AxisEnumeration` | `enumerateChildren(NodeTest test)` Get an enumeration of the children of this node
    `org.w3c.dom.NodeList` | `getChildNodes()` Return a `NodeList` that contains all children of this node.
    `org.w3c.dom.Node` | `getFirstChild()` Get the first child node of the element
    `org.w3c.dom.Node` | `getLastChild()` Get the last child node of the element
    `java.lang.String` | `getNodeValue()` Get the node value as defined in the DOM.
    `protected NodeImpl` | `getNthChild(int n)` Get the nth child node of the element (numbering from 0)
    `protected long` | `getSequenceNumber()` Get the node sequence number (in document order).
    `java.lang.String` | `getStringValue()` Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
    `boolean` | `hasChildNodes()` Determine if the node has any children.
    `boolean` | `isInstruction()` Determine whether this node is an instruction.
    `void` | `prepareAttributes()` Set the attribute list for the element.
    `void` | `process(Context context)` Process: called to do the real work of this stylesheet element.
    `void` | `removeChild(int index)` Remove node at given index.
    `void` | `renumberChildren()` Renumber the children of a given parent node.
    `void` | `useChildrenArray(NodeImpl[] array)` Supply an array to be used for the array of children.
    `void` | `validate()` Check that the element is valid.

    - ### Methods inherited from class com.icl.saxon.style.StyleElement

      `bindVariable, checkEmpty, checkNotTopLevel, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compileError, compileError, definesExcludedNamespace, definesExtensionElement, fallbackProcessing, findAttributeSets, forwardsCompatibleModeIsEnabled, getContainingStyleSheet, getPrecedence, getPreparedStyleSheet, getPrincipalStyleSheet, getStandardNames, getStyleSheetFunction, getVariableBinding, getVariableNames, getVersion, handleSortKeys, isExcludedNamespace, isExtensionNamespace, isTopLevel, makeAttributeValueTemplate, makeExpression, makePattern, mayContainTemplateBody, preprocess, processAllAttributes, processAttributes, processAttributeSets, processChildren, processExcludedNamespaces, processExtensionElementAttribute, processVersionAttribute, reportAbsence, setValidationError, styleError, styleError, substituteFor, validateChildren, validateSubtree`

    - ### Methods inherited from class com.icl.saxon.tree.ElementWithAttributes

      `addNamespaceNodes, copy, getAttribute, getAttributeList, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getAttributeValue, getAttributeValue, getAttributeValue, getLength, getNamedItem, getNamedItemNS, getNamespaceCodes, getPrefixForURI, getURICodeForPrefix, hasAttribute, hasAttributeNS, hasAttributes, initialise, item, outputNamespaceNodes, removeAttribute, removeAttributeNode, removeAttributeNS, removeNamedItem, removeNamedItemNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setNamedItem, setNamedItemNS, setNamespaceDeclarations`

    - ### Methods inherited from class com.icl.saxon.tree.ElementImpl

      `copy, generateId, getBaseURI, getDocumentRoot, getLineNumber, getNameCode, getNodeType, getSystemId, makeNameCode, setLineNumber, setNameCode, setSystemId`

    - ### Methods inherited from class com.icl.saxon.tree.NodeImpl

      `compareOrder, getDisplayName, getDocumentElement, getEnumeration, getFingerprint, getLocalName, getNamePool, getNextInDocument, getNextSibling, getOriginatingNode, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getURI, isSameNodeInfo, removeNode`

    - ### Methods inherited from class com.icl.saxon.om.AbstractNode

      `appendChild, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, disallowUpdate, getColumnNumber, getData, getDoctype, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getName, getNamespaceURI, getNodeName, getOwnerDocument, getOwnerElement, getParentNode, getPublicId, getSchemaTypeInfo, getSpecified, getTagName, getTextContent, getUserData, getValue, getWholeText, importNode, insertBefore, insertData, isDefaultNamespace, isElementContentWhitespace, isEqualNode, isId, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, replaceData, replaceWholeText, setData, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setNodeValue, setPrefix, setTextContent, setUserData, setValue, splitText, substringData, supports`

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

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

    - ### Methods inherited from interface org.xml.sax.Locator

      `getColumnNumber, getLineNumber, getPublicId, getSystemId`

    - ### Methods inherited from interface org.w3c.dom.Element

      `getElementsByTagName, getElementsByTagNameNS, getSchemaTypeInfo, getTagName, setIdAttribute, setIdAttributeNode, setIdAttributeNS`

    - ### Methods inherited from interface org.w3c.dom.Node

      `appendChild, cloneNode, compareDocumentPosition, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData`

- - ### Field Detail

    - #### sequence

          protected int sequence

  - ### Constructor Detail

    - #### XSLChoose

          public XSLChoose()

  - ### Method Detail

    - #### isInstruction

          public boolean isInstruction()

      Determine whether this node is an instruction.
      Overrides:
        `isInstruction` in class `StyleElement`
      Returns:
        true - it is an instruction

    - #### doesPostProcessing

          public boolean doesPostProcessing()

      Determine whether this element does any processing after instantiating any children. This implementation says it doesn't, thus enabling tail recursion.
      Overrides:
        `doesPostProcessing` in class `StyleElement`

    - #### prepareAttributes

          public void prepareAttributes()
                                 throws javax.xml.transform.TransformerConfigurationException

      Description copied from class: `StyleElement`
      Set the attribute list for the element. This is called to process the attributes (note the distinction from processAttributes in the superclass). Must be supplied in a subclass
      Specified by:
        `prepareAttributes` in class `StyleElement`
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### validate

          public void validate()
                        throws javax.xml.transform.TransformerConfigurationException

      Description copied from class: `StyleElement`
      Check that the element is valid. This is called once for each element, after the entire tree has been built. As well as validation, it can perform first-time initialisation. The default implementation does nothing; it is normally overriden in subclasses.
      Overrides:
        `validate` in class `StyleElement`
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### process

          public void process(Context context)
                       throws javax.xml.transform.TransformerException

      Description copied from class: `StyleElement`
      Process: called to do the real work of this stylesheet element. This method must be implemented in each subclass.
      Specified by:
        `process` in class `StyleElement`
      Parameters:
        `context` - The context in the source XML document, giving access to the current node, the current variables, etc.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### 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 roots) 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.
      Overrides:
        `getSequenceNumber` in class `NodeImpl`

    - #### hasChildNodes

          public final boolean hasChildNodes()

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

    - #### enumerateChildren

          public final AxisEnumeration enumerateChildren(NodeTest test)

      Get an enumeration of the children of this node

    - #### getFirstChild

          public final org.w3c.dom.Node getFirstChild()

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

    - #### getLastChild

          public final org.w3c.dom.Node getLastChild()

      Get the last child node of the element
      Specified by:
        `getLastChild` in interface `org.w3c.dom.Node`
      Overrides:
        `getLastChild` in class `NodeImpl`
      Returns:
        the last child of the element, or null if there are no children

    - #### getChildNodes

          public final org.w3c.dom.NodeList getChildNodes()

      Return a `NodeList` that contains all children of this node. If there are no children, this is a `NodeList` containing no nodes.
      Specified by:
        `getChildNodes` in interface `org.w3c.dom.Node`
      Overrides:
        `getChildNodes` in class `NodeImpl`

    - #### getNthChild

          protected final NodeImpl getNthChild(int n)

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

    - #### getStringValue

          public java.lang.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.

    - #### copyStringValue

          public void copyStringValue(Outputter out)
                               throws javax.xml.transform.TransformerException

      Copy the string-value of this node to a given outputter
      Specified by:
        `copyStringValue` in interface `NodeInfo`
      Overrides:
        `copyStringValue` in class `AbstractNode`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### useChildrenArray

          public void useChildrenArray(NodeImpl[] array)

      Supply an array to be used for the array of children. For system use only.

    - #### addChild

          public 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.

    - #### removeChild

          public void removeChild(int index)

      Remove node at given index. Will always be followed by a renumberChildren().

    - #### renumberChildren

          public void renumberChildren()

      Renumber the children of a given parent node. For system use only

    - #### dropChildren

          public void dropChildren()

      Drop a branch of the tree. The target element remains in the tree, but its children are disconnected from the parent. Unless there are other references to the children (e.g. in a variable) they will be deleted from memory next time the garbage collector comes round.

    - #### compact

          public void compact(int size)

      Compact the space used by this node

    - #### getNodeValue

          public java.lang.String getNodeValue()

      Get the node value as defined in the DOM. This is not the same as the XPath string-value.
      Specified by:
        `getNodeValue` in interface `org.w3c.dom.Node`
      Overrides:
        `getNodeValue` in class `AbstractNode`