Class ElemForEach

All Implemented Interfaces:
Serializable, SourceLocator, XSLTVisitable, PrefixResolver, ExpressionNode, ExpressionOwner, WhitespaceStrippingElementMatcher, Document, Element, Node, NodeList
Direct Known Subclasses:
ElemCallTemplate

public class ElemForEach extends ElemTemplateElement implements ExpressionOwner
Implement xsl:for-each.
 <!ELEMENT xsl:for-each
  (#PCDATA
   %instructions;
   %result-elements;
   | xsl:sort)
 >

 <!ATTLIST xsl:for-each
   select %expr; #REQUIRED
   %space-att;
 >
 
See Also:
  • Field Details

    • 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 Details

    • ElemForEach

      public ElemForEach()
      Construct a element representing xsl:for-each.
  • Method Details

    • 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 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:
      TransformerException
    • endCompose

      public void endCompose(StylesheetRoot sroot) throws TransformerException
      This after the template's children have been composed.
      Overrides:
      endCompose in class ElemTemplateElement
      Throws:
      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:
    • getNodeName

      public String getNodeName()
      Return the node name.
      Specified by:
      getNodeName in interface Node
      Overrides:
      getNodeName in class ElemTemplateElement
      Returns:
      The element's name
    • execute

      public void execute(TransformerImpl transformer) throws 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:
      TransformerException
    • sortNodes

      public DTMIterator sortNodes(XPathContext xctxt, Vector keys, DTMIterator sourceNodes) throws 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:
      TransformerException
    • transformSelectedNodes

      public void transformSelectedNodes(TransformerImpl transformer) throws 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:
      TransformerException - Thrown in a variety of circumstances.
    • appendChild

      public ElemTemplateElement appendChild(ElemTemplateElement newChild)
      Add a child to the child list. <!ELEMENT xsl:apply-templates (xsl:sort|xsl:with-param)*> <!ATTLIST xsl:apply-templates select %expr; "node()" mode %qname; #IMPLIED >
      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:
    • 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: