## com.icl.saxon.style
Class XSLDocument

    java.lang.Object
      |
      +--com.icl.saxon.om.AbstractNode
            |
            +--com.icl.saxon.tree.NodeImpl
                  |
                  +--com.icl.saxon.tree.ParentNodeImpl
                        |
                        +--com.icl.saxon.tree.ElementImpl
                              |
                              +--com.icl.saxon.tree.ElementWithAttributes
                                    |
                                    +--com.icl.saxon.style.StyleElement
                                          |
                                          +--com.icl.saxon.style.XSLGeneralOutput
                                                |
                                                +--com.icl.saxon.style.XSLDocument

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

public class XSLDocument
extends com.icl.saxon.style.XSLGeneralOutput

An xsl:document (formerly saxon:output) element in the stylesheet.
The xsl:document element takes an attribute href="filename". The filename will often contain parameters, e.g. {position()} to ensure that a different file is produced for each element instance.
There is a further attribute method=xml|html|text which determines the format of the output file (default XML). Alternatively the xsl:document element may take a next-in-chain attribute in which case output is directed to another stylesheet. Any unrecognized namespaced attributes are interepreted as attribute value templates, and their values are added to the output properties, for use by a user-defined Emitter.

Field Summary

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, sequence`

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_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
`XSLDocument()`

Method Summary
`boolean` `isInstruction()` Determine whether this node is an instruction.
`boolean` `mayContainTemplateBody()` Determine whether this type of element is allowed to contain a template-body
`void` `prepareAttributes()` Set the attribute list for the element.
`protected javax.xml.transform.sax.TransformerHandler` `prepareNextStylesheet(java.lang.String href, Context context)` Prepare another stylesheet to handle the output of this one
`void` `process(Context context)` Process: called to do the real work of this stylesheet element.
`protected java.util.Properties` `updateOutputProperties(java.util.Properties details, Context context)` Evaluate any properties defined as attribute value templates; validate them; and return the values as additions to a set of Properties
`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, doesPostProcessing, fallbackProcessing, findAttributeSets, forwardsCompatibleModeIsEnabled, getContainingStyleSheet, getPrecedence, getPreparedStyleSheet, getPrincipalStyleSheet, getStandardNames, getStyleSheetFunction, getVariableBinding, getVariableNames, getVersion, handleSortKeys, isExcludedNamespace, isExtensionNamespace, isTopLevel, makeAttributeValueTemplate, makeExpression, makePattern, 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
`addChild, compact, copy, copyStringValue, dropChildren, enumerateChildren, generateId, getBaseURI, getChildNodes, getDocumentRoot, getFirstChild, getLastChild, getLineNumber, getNameCode, getNodeType, getNodeValue, getNthChild, getSequenceNumber, getStringValue, getSystemId, hasChildNodes, makeNameCode, removeChild, renumberChildren, setLineNumber, setNameCode, setSystemId, useChildrenArray`

Methods inherited from class com.icl.saxon.tree.NodeImpl
`compareOrder, getDisplayName, getDocumentElement, getEnumeration, getFingerprint, getLocalName, getNamePool, getNextInDocument, getNextSibling, getOriginatingNode, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getURI, isSameNode, removeNode`

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

`appendChild, appendData, cloneNode, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, disallowUpdate, getColumnNumber, getData, getDoctype, getElementById, getElementsByTagName, getElementsByTagNameNS, getImplementation, getName, getNamespaceURI, getNodeName, getOwnerDocument, getOwnerElement, getParentNode, getPublicId, getSpecified, getTagName, getValue, importNode, insertBefore, insertData, isSupported, normalize, removeChild, replaceChild, replaceData, setData, setNodeValue, setPrefix, 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, getTagName`

Methods inherited from interface org.w3c.dom.Node
`appendChild, cloneNode, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix`

Constructor Detail

### XSLDocument

    public XSLDocument()

Method Detail

### isInstruction

    public boolean isInstruction()

  Determine whether this node is an instruction.

  Overrides:
    `isInstruction` in class `StyleElement`
  Returns:
    true - it is an instruction

### mayContainTemplateBody

    public boolean mayContainTemplateBody()

  Determine whether this type of element is allowed to contain a template-body

  Overrides:
    `mayContainTemplateBody` in class `StyleElement`
  Returns:
    true: yes, it may contain a template-body

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

  Overrides:
    `prepareAttributes` in class `com.icl.saxon.style.XSLGeneralOutput`
    `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`
    `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.
    `javax.xml.transform.TransformerException`

### updateOutputProperties

    protected java.util.Properties updateOutputProperties(java.util.Properties details,
                                                          Context context)
                                                   throws javax.xml.transform.TransformerException

  Evaluate any properties defined as attribute value templates; validate them; and return the values as additions to a set of Properties

    `javax.xml.transform.TransformerException`

### prepareNextStylesheet

    protected javax.xml.transform.sax.TransformerHandler prepareNextStylesheet(java.lang.String href,
                                                                               Context context)
                                                                        throws javax.xml.transform.TransformerException

  Prepare another stylesheet to handle the output of this one

    `javax.xml.transform.TransformerException`