Package com.icl.saxon.style
Class XSLGeneralVariable
- 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.XSLGeneralVariable
-
- All Implemented Interfaces:
NodeInfo,DOMLocator,Source,SourceLocator,Element,NamedNodeMap,Node,Locator
- Direct Known Subclasses:
SAXONAssign,SAXONReturn,SQLColumn,XSLParam,XSLVariable,XSLWithParam
public abstract class XSLGeneralVariable extends StyleElement
This class defines common behaviour across xsl:variable, xsl:param, and xsl:with-param
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanassignableprotected booleanglobalprotected Procedureprocedureprotected booleanredundantprotected Expressionselectprotected intsequenceprotected StringsimpleTextprotected intvariableFingerprint-
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
-
-
Constructor Summary
Constructors Constructor Description XSLGeneralVariable()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddChild(NodeImpl node, int index)Add a child node to this node.voidcheckDuplicateDeclaration()Check whether this declaration duplicates another onevoidcompact(int size)Compact the space used by this nodevoidcopyStringValue(Outputter out)Copy the string-value of this node to a given outputtervoiddropChildren()Drop a branch of the tree.AxisEnumerationenumerateChildren(NodeTest test)Get an enumeration of the children of this nodeNodeListgetChildNodes()Return aNodeListthat contains all children of this node.NodegetFirstChild()Get the first child node of the elementNodegetLastChild()Get the last child node of the elementStringgetNodeValue()Get the node value as defined in the DOM.protected NodeImplgetNthChild(int n)Get the nth child node of the element (numbering from 0)ProceduregetOwningProcedure()Get the owning Procedure definition, if this is a local variableProceduregetProcedure()Get associated Procedure (for details of stack frame, if this is a global variable containing local variable declarations)protected ValuegetSelectValue(Context context)Get the value of the select expression if present or the content of the element otherwiseprotected longgetSequenceNumber()Get the node sequence number (in document order).StringgetStringValue()Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.intgetVariableFingerprint()Get the fingerprint of the variable nameStringgetVariableName()Get the display name of the variable.booleanhasChildNodes()Determine if the node has any children.booleanisAssignable()Test whether it is permitted to assign to the variable using the saxon:assign extension element.booleanisGlobal()booleanmayContainTemplateBody()Determine whether this type of element is allowed to contain a template-bodyvoidprepareAttributes()Set the attribute list for the element.voidpreprocess()Preprocess: this ensures space is available for local variables declared within this global variablevoidremoveChild(int index)Remove node at given index.voidrenumberChildren()Renumber the children of a given parent node.voiduseChildrenArray(NodeImpl[] array)Supply an array to be used for the array of children.voidvalidate()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, doesPostProcessing, fallbackProcessing, findAttributeSets, forwardsCompatibleModeIsEnabled, getContainingStyleSheet, getPrecedence, getPreparedStyleSheet, getPrincipalStyleSheet, getStandardNames, getStyleSheetFunction, getVariableBinding, getVariableNames, getVersion, handleSortKeys, isExcludedNamespace, isExtensionNamespace, isInstruction, isTopLevel, makeAttributeValueTemplate, makeExpression, makePattern, process, 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.w3c.dom.Element
getElementsByTagName, getElementsByTagNameNS, getSchemaTypeInfo, getTagName, setIdAttribute, setIdAttributeNode, setIdAttributeNS
-
Methods inherited from interface org.xml.sax.Locator
getColumnNumber, getLineNumber, getPublicId, getSystemId
-
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
-
variableFingerprint
protected int variableFingerprint
-
select
protected Expression select
-
simpleText
protected String simpleText
-
global
protected boolean global
-
procedure
protected Procedure procedure
-
assignable
protected boolean assignable
-
redundant
protected boolean redundant
-
sequence
protected int sequence
-
-
Method Detail
-
mayContainTemplateBody
public boolean mayContainTemplateBody()
Determine whether this type of element is allowed to contain a template-body- Overrides:
mayContainTemplateBodyin classStyleElement- Returns:
- true: yes, it may contain a template-body
-
isGlobal
public boolean isGlobal()
-
isAssignable
public boolean isAssignable()
Test whether it is permitted to assign to the variable using the saxon:assign extension element. This will only be true if the extra attribute saxon:assignable="yes" is present.
-
getOwningProcedure
public Procedure getOwningProcedure() throws TransformerConfigurationException
Get the owning Procedure definition, if this is a local variable
-
preprocess
public void preprocess() throws TransformerConfigurationExceptionPreprocess: this ensures space is available for local variables declared within this global variable- Overrides:
preprocessin classStyleElement- Throws:
TransformerConfigurationException
-
getVariableName
public String getVariableName()
Get the display name of the variable.
-
getVariableFingerprint
public int getVariableFingerprint()
Get the fingerprint of the variable name
-
prepareAttributes
public void prepareAttributes() throws TransformerConfigurationExceptionDescription copied from class:StyleElementSet 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:
prepareAttributesin classStyleElement- Throws:
TransformerConfigurationException
-
validate
public void validate() throws TransformerConfigurationExceptionDescription copied from class:StyleElementCheck 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:
validatein classStyleElement- Throws:
TransformerConfigurationException
-
checkDuplicateDeclaration
public void checkDuplicateDeclaration() throws TransformerConfigurationExceptionCheck whether this declaration duplicates another one
-
getSelectValue
protected Value getSelectValue(Context context) throws TransformerException
Get the value of the select expression if present or the content of the element otherwise- Throws:
TransformerException
-
getProcedure
public Procedure getProcedure()
Get associated Procedure (for details of stack frame, if this is a global variable containing local variable declarations)
-
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:
getSequenceNumberin classNodeImpl
-
hasChildNodes
public final boolean hasChildNodes()
Determine if the node has any children.- Specified by:
hasChildNodesin interfaceNode- Specified by:
hasChildNodesin interfaceNodeInfo- Overrides:
hasChildNodesin classNodeImpl- Returns:
trueif the node has any children,falseif the node has no children.
-
enumerateChildren
public final AxisEnumeration enumerateChildren(NodeTest test)
Get an enumeration of the children of this node
-
getFirstChild
public final Node getFirstChild()
Get the first child node of the element- Specified by:
getFirstChildin interfaceNode- Overrides:
getFirstChildin classNodeImpl- Returns:
- the first child node of the required type, or null if there are no children
-
getLastChild
public final Node getLastChild()
Get the last child node of the element- Specified by:
getLastChildin interfaceNode- Overrides:
getLastChildin classNodeImpl- Returns:
- the last child of the element, or null if there are no children
-
getChildNodes
public final NodeList getChildNodes()
Return aNodeListthat contains all children of this node. If there are no children, this is aNodeListcontaining no nodes.- Specified by:
getChildNodesin interfaceNode- Overrides:
getChildNodesin classNodeImpl
-
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 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 TransformerException
Copy the string-value of this node to a given outputter- Specified by:
copyStringValuein interfaceNodeInfo- Overrides:
copyStringValuein classAbstractNode- Throws:
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 String getNodeValue()
Get the node value as defined in the DOM. This is not the same as the XPath string-value.- Specified by:
getNodeValuein interfaceNode- Overrides:
getNodeValuein classAbstractNode
-
-