## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.6

Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members

# ElemTemplateElement Class Reference

`#include <ElemTemplateElement.hpp>`

Inheritance diagram for ElemTemplateElement

Collaboration diagram for ElemTemplateElement:

List of all members.

## Public Methods

- ElemTemplateElement ( StylesheetConstructionContext& constructionContext, Stylesheet& stylesheetTree, int lineNumber, int columnNumber, int xslToken)
    Construct a template element instance. More...
- ElemTemplateElement ( Stylesheet& stylesheetTree, int xslToken, int lineNumber = XalanLocator::getUnknownValue(), int columnNumber = XalanLocator::getUnknownValue())
    Special constructor used by dummy elements which do not exist in the final stylesheet. More...
- virtual ~ElemTemplateElement ()
- virtual const LocatorType* getLocator () const
    Get the Locator for the node. More...
- virtual bool isAttrOK ( const XalanDOMChar* attrName, const AttributeListType& atts, int which, StylesheetConstructionContext& constructionContext) const
    See if this is a xmlns attribute or in a non-XSLT. More...
- bool processSpaceAttr ( const XalanDOMChar* aname, const AttributeListType& atts, int which, StylesheetConstructionContext& constructionContext)
    Tell whether or not this is a xml:space attribute and, if so, process it. More...
- virtual void execute (StylesheetExecutionContext& executionContext) const
    Execute the element's primary function. More...
- virtual void executeChildren (StylesheetExecutionContext& executionContext) const
    Process the children of a template. More...
- virtual void executeChildren ( StylesheetExecutionContext& executionContext, XalanNode* sourceNode) const
    Set the current node and process the children of a template. More...
- const XalanDOMString& childrenToString ( StylesheetExecutionContext& executionContext, XalanDOMString& result) const
    Take the contents of a template element, process it, and convert it to a string. More...
- void childrenToResultAttribute ( StylesheetExecutionContext& executionContext, const XalanDOMString& theName) const
    Take the contents of a template element, process it, and convert it to a string. More...
- void childrenToResultComment (StylesheetExecutionContext& executionContext) const
    Take the contents of a template element, process it, and convert it to a string. More...
- void childrenToResultPI ( StylesheetExecutionContext& executionContext, const XalanDOMString& theTarget) const
    Take the contents of a template element, process it, and convert it to a string. More...
- int getXSLToken () const
    Get an integer representation of the element type. More...
- int getLineNumber () const
    Get the line number in the stylesheet where the element appears. More...
- int getColumnNumber () const
    Get the column number in the stylesheet where the element appears. More...
- virtual bool isWhitespace () const
    Tell if the element will generate text which is XML whitespace. More...
- virtual const XalanDOMString& getElementName () const = 0
    Get a string for the name of the element. More...
- virtual const XalanQName& getNameAttribute () const
    Get the QName associated with any name attribute of this element. More...
- virtual void addToStylesheet ( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet)
    Called during compilation when an instance is not parented by another element, and thus, is a child of the stylesheet.. More...
- virtual void processSortElement ( StylesheetConstructionContext& constructionContext, Stylesheet& theStylesheet, const AttributeListType& atts, const LocatorType* locator = 0)
    Called during compilation to process xsl:sort elements in the stylesheet. More...
- virtual void setDefaultTemplate (bool value)
    Sets a flag indicating this is the default template. More...
- const NamespacesHandler& getNamespacesHandler () const
    Get the namespaces handler for this element. More...
- const Stylesheet& getStylesheet () const
    Retrieve the stylesheet from which this element comes. More...
- void setFinishedConstruction (bool fValue)
    Set the flag indicating construction of the element is completed. More...
- bool getFinishedConstruction () const
    Get the flag indicating construction of the element is completed.
- virtual void postConstruction ( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler)
    Called after construction is completed.
- virtual ElemTemplateElement* getFirstChildElem () const
    Get the first child. More...
- virtual void setFirstChildElem (ElemTemplateElement* theChild)
    Set the first child. More...
- virtual ElemTemplateElement* getLastChildElem () const
    Get the last child. More...
- virtual ElemTemplateElement* getNextSiblingElem () const
    Get the next sibling. More...
- virtual void setNextSiblingElem (ElemTemplateElement* theSibling)
    Set the next sibling. More...
- virtual ElemTemplateElement* getPreviousSiblingElem () const
    Get the previous sibling. More...
- virtual void setPreviousSiblingElem (ElemTemplateElement* theSibling)
    Set the previous sibling. More...
- virtual ElemTemplateElement* getParentNodeElem () const
    Get the parent node. More...
- virtual void setParentNodeElem (ElemTemplateElement* theParent)
    Set the parent node. More...
- virtual ElemTemplateElement* appendChildElem (ElemTemplateElement* newChild)
    Append a child. More...
- virtual const XalanDOMString* getNamespaceForPrefix (const XalanDOMString& prefix) const
    Retrieve a namespace corresponding to a prefix. More...
- virtual const XalanDOMString& getURI () const
    Retrieve the base URI for the resolver. More...
- bool hasParams () const
- bool hasVariables () const
- bool hasSingleTextChild () const
- bool hasChildren () const
- bool hasDirectTemplate () const
- bool canGenerateAttributes () const
- bool isDefaultTemplate () const

## Static Public Methods

- bool isValidNCName (const XalanDOMString& s)
    Validate that the string is an NCName. More...

## Protected Methods

- void canGenerateAttributes (bool value)
- void hasPrefix (bool value)
- bool hasPrefix () const
- void preserveSpace (bool value)
- bool preserveSpace () const
- void disableOutputEscaping (bool value)
- bool disableOutputEscaping () const
- bool processPrefixControl ( StylesheetConstructionContext& constructionContext, const Stylesheet& stylesheetTree, const XalanDOMString& localName, const XalanDOMChar* attrValue)
    Process the exclude-result-prefixes or the extension-element-prefixes attributes, for the purpose of prefix exclusion. More...
- const XalanDOMString* getNamespaceForPrefixInternal (const XalanDOMString& prefix) const
    Get the namespace for a given prefix. More...
- virtual void transformChild ( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child) const
    Given an element, find the corresponding template and process the contents. More...
- virtual void transformChild ( StylesheetExecutionContext& executionContext, const ElemTemplateElement& xslInstruction, const ElemTemplateElement* theTemplate, XalanNode* child, XalanNode::NodeType nodeType) const
    Given an element, find the corresponding template and process the contents. More...
- virtual bool childTypeAllowed (int xslToken) const
    Given an xsl token type, determine whether or not a child of that type is allowed. More...
- virtual void namespacesPostConstruction ( StylesheetConstructionContext& constructionContext, const NamespacesHandler& theParentHandler, NamespacesHandler& theHandler)
    Called after construction is completed. More...
- const NamespacesHandler& getNamespaces () const

## Static Protected Attributes

- const XalanDOMString s_emptyString

## Constructor & Destructor Documentation

ElemTemplateElement::ElemTemplateElement ( | StylesheetConstructionContext & constructionContext,
| Stylesheet & stylesheetTree,
| int lineNumber,
| int columnNumber,
| int xslToken )

Construct a template element instance.

Parameters:

  constructionContext | context when object constructed
  stylesheetTree | owning stylesheet
  lineNumber | line in the XSLT file where the element occurs
  columnNumber | column index in the XSLT file where the element occurs
  xslToken | an integer representing the type of instance.

ElemTemplateElement::ElemTemplateElement ( | Stylesheet & stylesheetTree,
| int xslToken,
| int lineNumber = XalanLocator::getUnknownValue(),
| int columnNumber = XalanLocator::getUnknownValue() )

Special constructor used by dummy elements which do not exist in the final stylesheet.

Parameters:

  stylesheetTree | owning stylesheet
  lineNumber | line in the XSLT file where the element occurs
  columnNumber | column index in the XSLT file where the element occurs
  xslToken | an integer representing the type of instance.

virtual ElemTemplateElement::~ElemTemplateElement ( | )`[virtual]`

## Member Function Documentation

void ElemTemplateElement::addToStylesheet ( | StylesheetConstructionContext & constructionContext,
| Stylesheet & theStylesheet )`[virtual]`

Called during compilation when an instance is not parented by another element, and thus, is a child of the stylesheet..

Parameters:

  constructionContext | The current construction context
  theStylesheet | The owning stylesheet

Returns:
  nothing

Reimplemented in ElemTemplate, and ElemVariable.

ElemTemplateElement * ElemTemplateElement::appendChildElem ( | ElemTemplateElement * newChild )`[virtual]`

Append a child.

theParent - the new value for the parent.

Returns:
  nothing

Reimplemented in ElemApplyImport.

void ElemTemplateElement::canGenerateAttributes ( | bool value )`[protected]`

bool ElemTemplateElement::canGenerateAttributes ( | ) const`[]`

bool ElemTemplateElement::childTypeAllowed ( | int xslToken ) const`[protected, virtual]`

Given an xsl token type, determine whether or not a child of that type is allowed.

This is so derived types can determine whether a particular type of child is allowed for the instance. It is called from appendChildElem().

The default is to allow no types (no children)

Parameters:

  xslToken | The xsl token value of the child.

Returns:
  true if the child is allowed, or false if not.

Reimplemented in ElemApplyTemplates, ElemAttribute, ElemAttributeSet, ElemCallTemplate, ElemChoose, ElemComment, ElemEmpty, ElemPI, and ElemText.

void ElemTemplateElement::childrenToResultAttribute ( | StylesheetExecutionContext & executionContext,
| const XalanDOMString & theName ) const

Take the contents of a template element, process it, and convert it to a string.

Then, add an attribute to the result tree using the provided name and the string value.

Parameters:

  executionContext | The current execution context
  theName | The name for the result attribute

void ElemTemplateElement::childrenToResultComment ( | StylesheetExecutionContext & executionContext ) const

Take the contents of a template element, process it, and convert it to a string.

Then, add a comment to the result tree using the string value.

Parameters:

  executionContext | The current execution context

void ElemTemplateElement::childrenToResultPI ( | StylesheetExecutionContext & executionContext,
| const XalanDOMString & theTarget ) const

Take the contents of a template element, process it, and convert it to a string.

Then, add a processing instruction to the result tree using the string value, and the provided target.

Parameters:

  executionContext | The current execution context
  theName | The name for the result attribute

const XalanDOMString & ElemTemplateElement::childrenToString ( | StylesheetExecutionContext & executionContext,
| XalanDOMString & result ) const

Take the contents of a template element, process it, and convert it to a string.

Returns a const reference to the resulting string value. Note that this may _not_ be the XalanDOMString instance passed in, if an optimization is available to return a pre-existing string.

Parameters:

  executionContext | The current execution context
  result | result of executing the elements children

Returns:
  a reference to a string containing the result.

bool ElemTemplateElement::disableOutputEscaping ( | ) const`[protected]`

void ElemTemplateElement::disableOutputEscaping ( | bool value )`[protected]`

void ElemTemplateElement::execute ( | StylesheetExecutionContext & executionContext ) const`[virtual]`

Execute the element's primary function.

Subclasses of this function may recursively execute down the element tree.

Parameters:

  executionContext | The current execution context

Reimplemented in ElemApplyImport, ElemApplyTemplates, ElemAttribute, ElemAttributeSet, ElemCallTemplate, ElemChoose, ElemComment, ElemCopy, ElemCopyOf, ElemDecimalFormat, ElemElement, ElemEmpty, ElemExtensionCall, ElemFallback, ElemForEach, ElemIf, ElemLiteralResult, ElemMessage, ElemNumber, ElemOtherwise, ElemPI, ElemParam, ElemTemplate, ElemTextLiteral, ElemUse, ElemValueOf, ElemVariable, and ElemWhen.

void ElemTemplateElement::executeChildren ( | StylesheetExecutionContext & executionContext,
| XalanNode * sourceNode ) const`[virtual]`

Set the current node and process the children of a template.

Parameters:

  processor | XSLT processor instance
  sourceNode | current node

Reimplemented in ElemTemplate.

void ElemTemplateElement::executeChildren ( | StylesheetExecutionContext & executionContext ) const`[virtual]`

Process the children of a template.

Parameters:

  processor | XSLT processor instance

Reimplemented in ElemTemplate.

int ElemTemplateElement::getColumnNumber ( | ) const`[]`

Get the column number in the stylesheet where the element appears.

Returns:
  the column number in the stylesheet

const XalanDOMString & ElemTemplateElement::getElementName ( | ) const`[pure virtual]`

Get a string for the name of the element.

Useful for debugging purposes, and error reporting.

Returns:
  A string containing the name of the element.

Reimplemented in ElemApplyImport, ElemApplyTemplates, ElemAttribute, ElemAttributeSet, ElemCallTemplate, ElemChoose, ElemComment, ElemCopy, ElemCopyOf, ElemDecimalFormat, ElemElement, ElemEmpty, ElemFallback, ElemForEach, ElemIf, ElemLiteralResult, ElemMessage, ElemNumber, ElemOtherwise, ElemPI, ElemParam, ElemSort, ElemTemplate, ElemText, ElemTextLiteral, ElemUse, ElemValueOf, ElemVariable, ElemWhen, and ElemWithParam.

bool ElemTemplateElement::getFinishedConstruction ( | ) const`[]`

Get the flag indicating construction of the element is completed.

ElemTemplateElement * ElemTemplateElement::getFirstChildElem ( | ) const`[virtual]`

Get the first child.

Returns:
  first child node of this node

ElemTemplateElement * ElemTemplateElement::getLastChildElem ( | ) const`[virtual]`

Get the last child.

Returns:
  last child node of this node

int ElemTemplateElement::getLineNumber ( | ) const`[]`

Get the line number in the stylesheet where the element appears.

Returns:
  the line number in the stylesheet

const LocatorType * ElemTemplateElement::getLocator ( | ) const`[virtual]`

Get the Locator for the node.

This may return 0.

Returns:
  The Locator for the node.

const XalanQName & ElemTemplateElement::getNameAttribute ( | ) const`[virtual]`

Get the QName associated with any name attribute of this element.

If the element has no name attribute, this will be an empty QName.

Returns:
  A string containing the name of the element.

Reimplemented in ElemTemplate, and ElemVariable.

virtual const XalanDOMString* ElemTemplateElement::getNamespaceForPrefix ( | const XalanDOMString & prefix ) const`[virtual]`

Retrieve a namespace corresponding to a prefix.

This assumes that the PrevixResolver holds its own namespace context, or is a namespace context itself.

Parameters:

  prefix | Prefix to resolve

Returns:
  namespace that prefix resolves to, or null if prefix is not found

Reimplemented from PrefixResolver.

const XalanDOMString * ElemTemplateElement::getNamespaceForPrefixInternal ( | const XalanDOMString & prefix ) const`[protected]`

Get the namespace for a given prefix.

Parameters:

  prefix | The prefix to search for
  fExists | If not null, set to true if the namespace was defined.

Returns:
  The namespace string.

const NamespacesHandler & ElemTemplateElement::getNamespaces ( | ) const`[protected]`

const NamespacesHandler & ElemTemplateElement::getNamespacesHandler ( | ) const`[]`

Get the namespaces handler for this element.

Returns:
  The element's NamespacesHandler instance.

ElemTemplateElement * ElemTemplateElement::getNextSiblingElem ( | ) const`[virtual]`

Get the next sibling.

Returns:
  next sibling node of this node

ElemTemplateElement * ElemTemplateElement::getParentNodeElem ( | ) const`[virtual]`

Get the parent node.

Returns:
  parent node of this node

ElemTemplateElement * ElemTemplateElement::getPreviousSiblingElem ( | ) const`[virtual]`

Get the previous sibling.

Returns:
  previous sibling node of this node

const Stylesheet & ElemTemplateElement::getStylesheet ( | ) const`[]`

Retrieve the stylesheet from which this element comes.

Returns:
  reference to source stylesheet

virtual const XalanDOMString& ElemTemplateElement::getURI ( | ) const`[virtual]`

Retrieve the base URI for the resolver.

Returns:
  URI string

Reimplemented from PrefixResolver.

int ElemTemplateElement::getXSLToken ( | ) const`[]`

Get an integer representation of the element type.

Returns:
  integer representation of the element, defined in the Constants class

See also:
  class Constants

bool ElemTemplateElement::hasChildren ( | ) const`[]`

bool ElemTemplateElement::hasDirectTemplate ( | ) const`[]`

bool ElemTemplateElement::hasParams ( | ) const`[]`

bool ElemTemplateElement::hasPrefix ( | ) const`[protected]`

void ElemTemplateElement::hasPrefix ( | bool value )`[protected]`

bool ElemTemplateElement::hasSingleTextChild ( | ) const`[]`

bool ElemTemplateElement::hasVariables ( | ) const`[]`

bool ElemTemplateElement::isAttrOK ( | const XalanDOMChar * attrName,
| const AttributeListType & atts,
| int which,
| StylesheetConstructionContext & constructionContext ) const`[virtual]`

See if this is a xmlns attribute or in a non-XSLT.

Parameters:

  attrName | qualified name of attribute
  atts | attribute list where the element comes from (not used at this time)
  which | index into the attribute list (not used at this time)
  constructionContext | The current construction context

Returns:
  true if this is a namespace name

Reimplemented in ElemLiteralResult.

bool ElemTemplateElement::isDefaultTemplate ( | ) const`[]`

bool ElemTemplateElement::isValidNCName ( | const XalanDOMString & s )`[static]`

Validate that the string is an NCName.

Parameters:

  s | name in question

Returns:
  true if the string is a valid NCName according to XML rules

See also:
  http://www.w3.org/TR/REC-xml-names#NT-NCName

bool ElemTemplateElement::isWhitespace ( | ) const`[virtual]`

Tell if the element will generate text which is XML whitespace.

Returns:
  true if the text is pure whitespace

Reimplemented in ElemTextLiteral.

void ElemTemplateElement::namespacesPostConstruction ( | StylesheetConstructionContext & constructionContext,
| const NamespacesHandler & theParentHandler,
| NamespacesHandler & theHandler )`[protected, virtual]`

Called after construction is completed.

This is a hook for deriving classes to handle post-construction with the instances HamespaceHandler instance, which is otherwise only available through a const accessor.

Reimplemented in ElemElement, and ElemLiteralResult.

void ElemTemplateElement::postConstruction ( | StylesheetConstructionContext & constructionContext,
| const NamespacesHandler & theParentHandler )`[virtual]`

Called after construction is completed.

Reimplemented in ElemCallTemplate, ElemForEach, ElemLiteralResult, and ElemUse.

bool ElemTemplateElement::preserveSpace ( | ) const`[protected]`

void ElemTemplateElement::preserveSpace ( | bool value )`[protected]`

bool ElemTemplateElement::processPrefixControl ( | StylesheetConstructionContext & constructionContext,
| const Stylesheet & stylesheetTree,
| const XalanDOMString & localName,
| const XalanDOMChar * attrValue )`[protected]`

Process the exclude-result-prefixes or the extension-element-prefixes attributes, for the purpose of prefix exclusion.

Parameters:

  constructionContext | context when object consructed
  stylesheetTree | The current Stylesheet object.
  localName | The local name of the attribute.
  attrValue | The value of the attribute.

void ElemTemplateElement::processSortElement ( | StylesheetConstructionContext & constructionContext,
| Stylesheet & theStylesheet,
| const AttributeListType & atts,
| const LocatorType * locator = 0 )`[virtual]`

Called during compilation to process xsl:sort elements in the stylesheet.

Parameters:

  constructionContext | The current construction context
  theStylesheet | The owning stylesheet
  atts | The list of attributes for the sort element
  locator | A Locator instance for error reporting, if available.

Returns:
  nothing

Reimplemented in ElemForEach.

bool ElemTemplateElement::processSpaceAttr ( | const XalanDOMChar * aname,
| const AttributeListType & atts,
| int which,
| StylesheetConstructionContext & constructionContext )

Tell whether or not this is a xml:space attribute and, if so, process it.

Parameters:

  aname | name of the attribute in question
  atts | attribute list that owns the attribute
  which | index of the attribute into the attribute list
  constructionContext | The current construction context

Returns:
  true if this is a xml:space attribute

void ElemTemplateElement::setDefaultTemplate ( | bool value )`[virtual]`

Sets a flag indicating this is the default template.

Parameters:

  value | The value of flag.

void ElemTemplateElement::setFinishedConstruction ( | bool fValue )`[]`

Set the flag indicating construction of the element is completed.

Parameters:

  fValue | The value to set

void ElemTemplateElement::setFirstChildElem ( | ElemTemplateElement * theChild )`[virtual]`

Set the first child.

theChild - the new value for the first child.

Returns:
  nothing

void ElemTemplateElement::setNextSiblingElem ( | ElemTemplateElement * theSibling )`[virtual]`

Set the next sibling.

theSibling - the new value for the next sibling.

Returns:
  nothing

void ElemTemplateElement::setParentNodeElem ( | ElemTemplateElement * theParent )`[virtual]`

Set the parent node.

theParent - the new value for the parent.

Returns:
  nothing

Reimplemented in ElemVariable.

void ElemTemplateElement::setPreviousSiblingElem ( | ElemTemplateElement * theSibling )`[virtual]`

Set the previous sibling.

theSibling - the new value for the previous sibling.

Returns:
  nothing

void ElemTemplateElement::transformChild ( | StylesheetExecutionContext & executionContext,
| const ElemTemplateElement & xslInstruction,
| const ElemTemplateElement * theTemplate,
| XalanNode * child,
| XalanNode::NodeType nodeType ) const`[protected, virtual]`

Given an element, find the corresponding template and process the contents.

Parameters:

  executionContext | The current execution context
  xslInstruction | The calling element
  template | The template to use if xsl:for-each, or null.
  child | The source context node.
  nodeType | The type of child.

void ElemTemplateElement::transformChild ( | StylesheetExecutionContext & executionContext,
| const ElemTemplateElement & xslInstruction,
| const ElemTemplateElement * theTemplate,
| XalanNode * child ) const`[protected, virtual]`

Given an element, find the corresponding template and process the contents.

Parameters:

  executionContext | The current execution context
  xslInstruction | The calling element
  template | The template to use if xsl:for-each, or null.
  child | The source context node.

Reimplemented in ElemApplyTemplates.

## Member Data Documentation

const XalanDOMString ElemTemplateElement::s_emptyString`[static, protected]`

The documentation for this class was generated from the following file:

- ElemTemplateElement.hpp

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.6 Copyright © 2000, 2001, 2002, 2003 The Apache Software Foundation. All Rights Reserved.