org.apache.xalan.templates

## Class ElemForEach

- java.lang.Object
- - org.apache.xml.utils.UnImplNode
  - - org.apache.xalan.templates.ElemTemplateElement
    - - org.apache.xalan.templates.ElemForEach

- All Implemented Interfaces:
    java.io.Serializable, javax.xml.transform.SourceLocator, XSLTVisitable, PrefixResolver, ExpressionNode, ExpressionOwner, WhitespaceStrippingElementMatcher, org.w3c.dom.Document, org.w3c.dom.Element, org.w3c.dom.Node, org.w3c.dom.NodeList
  Direct Known Subclasses:
    ElemCallTemplate

      public class ElemForEach
      extends ElemTemplateElement
      implements ExpressionOwner

  Implement xsl:for-each.

  See Also:
    for-each in XSLT Specification, Serialized Form
  Usage:
    **For advanced use only**

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `boolean` | `m_doc_cache_off` This is set by an "xalan-doc-cache-off" pi, or the old "xalan:doc-cache-off" pi.

    - ### 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`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ElemForEach()` Construct a element representing xsl:for-each.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ElemTemplateElement` | `appendChild(ElemTemplateElement newChild)` Add a child to the child list
    `void` | `callChildVisitors(XSLTVisitor visitor, boolean callAttributes)` Call the children visitors.
    `void` | `compose(StylesheetRoot sroot)` This function is called after everything else has been recomposed, and allows the template to set remaining values that may be based on some other property that depends on recomposition.
    `void` | `endCompose(StylesheetRoot sroot)` This after the template's children have been composed.
    `void` | `execute(TransformerImpl transformer)` Execute the xsl:for-each transformation
    `Expression` | `getExpression()` Get the raw Expression object that this class wraps.
    `java.lang.String` | `getNodeName()` Return the node name.
    `Expression` | `getSelect()` Get the "select" attribute.
    `ElemSort` | `getSortElem(int i)` Get a xsl:sort element associated with this element.
    `int` | `getSortElemCount()` Get the count xsl:sort elements associated with this element.
    `int` | `getXSLToken()` Get an int constant identifying the type of element.
    `void` | `setExpression(Expression exp)` Set the raw expression object for this object.
    `void` | `setSelect(XPath xpath)` Set the "select" attribute.
    `void` | `setSortElem(ElemSort sortElem)` Set a xsl:sort element associated with this element.
    `DTMIterator` | `sortNodes(XPathContext xctxt, java.util.Vector keys, DTMIterator sourceNodes)` Sort given nodes
    `void` | `transformSelectedNodes(TransformerImpl transformer)` Perform a query if needed, and call transformNode for each child.

    - ### Methods inherited from class org.apache.xalan.templates.ElemTemplateElement

      `appendChild, callVisitors, canAcceptVariables, canStripWhiteSpace, compareTo, containsExcludeResultPrefix, error, error, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getBaseIdentifier, getChildNodes, getColumnNumber, getDeclaredPrefixes, getDOMBackPointer, getEndColumnNumber, getEndLineNumber, getFirstChild, getFirstChildElem, getLastChild, getLastChildElem, getLength, getLineNumber, getLocalName, getNamespaceForPrefix, getNamespaceForPrefix, getNextSibling, getNextSiblingElem, getNodeType, getOwnerDocument, getOwnerXSLTemplate, getParentElem, getParentNode, getParentNodeElem, getPreviousSibling, getPreviousSiblingElem, getPublicId, getStylesheet, getStylesheetComposed, getStylesheetRoot, getSystemId, getTagName, getUid, getXmlSpace, handlesNullPrefixes, hasChildNodes, hasTextLitOnly, hasVariableDecl, insertBefore, isCompiledTemplate, item, recompose, removeChild, replaceChild, replaceChild, resolvePrefixTables, runtimeInit, setDOMBackPointer, setEndLocaterInfo, setLocaterInfo, setParentElem, setPrefixes, setPrefixes, setUid, setXmlSpace, shouldStripWhiteSpace`

    - ### Methods inherited from class org.apache.xml.utils.UnImplNode

      `adoptNode, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, getActualEncoding, getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getBaseURI, getDoctype, getDocumentElement, getDocumentURI, getDomConfig, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getInputEncoding, getNamespaceURI, getNodeValue, getOwnerElement, getPrefix, getSchemaTypeInfo, getSpecified, getStrictErrorChecking, getTextContent, getUserData, getWholeText, getXmlEncoding, getXmlStandalone, getXmlVersion, hasAttribute, hasAttributeNS, hasAttributes, importNode, insertData, isDefaultNamespace, isEqualNode, isId, isSameNode, isSupported, isWhitespaceInElementContent, lookupNamespaceURI, lookupPrefix, normalize, normalizeDocument, removeAttribute, removeAttributeNode, removeAttributeNS, removeChild, renameNode, replaceData, replaceWholeText, setActualEncoding, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setData, setDocumentURI, setIdAttribute, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setInputEncoding, setNodeValue, setPrefix, setStrictErrorChecking, setTextContent, setUserData, setValue, setXmlEncoding, setXmlStandalone, setXmlVersion, splitText, substringData`

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

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

- - ### Field Detail

    - #### m_doc_cache_off

          public boolean m_doc_cache_off

      This is set by an "xalan-doc-cache-off" pi, or the old "xalan:doc-cache-off" pi. The old form of the PI only works for XML parsers that are not namespace aware. It tells the engine that documents created in the location paths executed by this element will not be reparsed. It's set by StylesheetHandler during construction. Note that this feature applies _only_ to xsl:for-each elements in its current incarnation; a more general cache management solution is desperately needed.

  - ### Constructor Detail

    - #### ElemForEach

          public ElemForEach()

      Construct a element representing xsl:for-each.

  - ### Method Detail

    - #### setSelect

          public void setSelect(XPath xpath)

      Set the "select" attribute.
      Parameters:
        `xpath` - The XPath expression for the "select" attribute.

    - #### getSelect

          public Expression getSelect()

      Get the "select" attribute.
      Returns:
        The XPath expression for the "select" attribute.

    - #### compose

          public void compose(StylesheetRoot sroot)
                       throws javax.xml.transform.TransformerException

      This function is called after everything else has been recomposed, and allows the template to set remaining values that may be based on some other property that depends on recomposition. NEEDSDOC @param sroot
      Overrides:
        `compose` in class `ElemTemplateElement`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### endCompose

          public void endCompose(StylesheetRoot sroot)
                          throws javax.xml.transform.TransformerException

      This after the template's children have been composed.
      Overrides:
        `endCompose` in class `ElemTemplateElement`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### getSortElemCount

          public int getSortElemCount()

      Get the count xsl:sort elements associated with this element.
      Returns:
        The number of xsl:sort elements.

    - #### getSortElem

          public ElemSort getSortElem(int i)

      Get a xsl:sort element associated with this element.
      Parameters:
        `i` - Index of xsl:sort element to get
      Returns:
        xsl:sort element at given index

    - #### setSortElem

          public void setSortElem(ElemSort sortElem)

      Set a xsl:sort element associated with this element.
      Parameters:
        `sortElem` - xsl:sort element to set

    - #### getXSLToken

          public int getXSLToken()

      Get an int constant identifying the type of element.
      Overrides:
        `getXSLToken` in class `ElemTemplateElement`
      Returns:
        The token ID for this element
      See Also:
        `Constants`

    - #### getNodeName

          public java.lang.String getNodeName()

      Return the node name.
      Specified by:
        `getNodeName` in interface `org.w3c.dom.Node`
      Overrides:
        `getNodeName` in class `ElemTemplateElement`
      Returns:
        The element's name

    - #### execute

          public void execute(TransformerImpl transformer)
                       throws javax.xml.transform.TransformerException

      Execute the xsl:for-each transformation
      Overrides:
        `execute` in class `ElemTemplateElement`
      Parameters:
        `transformer` - non-null reference to the the current transform-time state.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### sortNodes

          public DTMIterator sortNodes(XPathContext xctxt,
                                       java.util.Vector keys,
                                       DTMIterator sourceNodes)
                                throws javax.xml.transform.TransformerException

      Sort given nodes
      Parameters:
        `xctxt` - The XPath runtime state for the sort.
        `keys` - Vector of sort keyx
        `sourceNodes` - Iterator of nodes to sort
      Returns:
        iterator of sorted nodes
      Throws:
        `javax.xml.transform.TransformerException`

    - #### transformSelectedNodes

          public void transformSelectedNodes(TransformerImpl transformer)
                                      throws javax.xml.transform.TransformerException

      Perform a query if needed, and call transformNode for each child.
      Parameters:
        `transformer` - non-null reference to the the current transform-time state.
      Throws:
        `javax.xml.transform.TransformerException` - Thrown in a variety of circumstances.
      Usage:
        **For advanced use only**

    - #### appendChild

          public ElemTemplateElement appendChild(ElemTemplateElement newChild)

      Add a child to the child list.
      Overrides:
        `appendChild` in class `ElemTemplateElement`
      Parameters:
        `newChild` - Child to add to child list
      Returns:
        Child just added to child list

    - #### callChildVisitors

          public void callChildVisitors(XSLTVisitor visitor,
                                        boolean callAttributes)

      Call the children visitors.
      Parameters:
        `visitor` - The visitor whose appropriate method will be called.

    - #### getExpression

          public Expression getExpression()

      Description copied from interface: `ExpressionOwner`
      Get the raw Expression object that this class wraps.
      Specified by:
        `getExpression` in interface `ExpressionOwner`
      Returns:
        the raw Expression object, which should not normally be null.
      See Also:
        `ExpressionOwner.getExpression()`

    - #### setExpression

          public void setExpression(Expression exp)

      Description copied from interface: `ExpressionOwner`
      Set the raw expression object for this object.
      Specified by:
        `setExpression` in interface `ExpressionOwner`
      Parameters:
        `exp` - the raw Expression object, which should not normally be null.
      See Also:
        `ExpressionOwner.setExpression(Expression)`

Copyright © 2023 Apache XML Project. All Rights Reserved.