Class DocumentBuilder
Class DomDestination
Class DynamicContext
Class DynamicError
Class EmptyEnumerator
Class ExtensionFunctionCall
Class NullDestination
Class Processor
Class QName
Class SchemaManager
Class SchemaValidator
Class Serializer
Class StaticContext
Class StaticError
Class TextWriterDestination
Class XPathCompiler
Class XPathExecutable
Class XPathSelector
Class XQueryCompiler
Class XQueryEvaluator
Class XQueryExecutable
Class XdmAnyFunctionType
Class XdmAnyItemType
Class XdmAnyNodeType
Class XdmAtomicType
Class XdmAtomicValue
Class XdmDestination
Class XdmEmptySequence
Class XdmFunctionItem
Class XdmItem
Class XdmItemType
Class XdmNode
Class XdmNodeKind
Class XdmSequenceType
Class XdmValue
Class XmlDestination
Class XsltCompiler
Class XsltExecutable
Class XsltTransformer
Enum RecoveryPolicy
Enum SchemaValidationMode
Enum TreeModel
Enum WhitespacePolicy
Enum XdmAxis
Interface IMessageListener
Interface IQueryResolver
Interface IResultDocumentHandler
Interface IXdmEnumerator
Interface IXmlLocation
Interface SchemaResolver
public class XsltCompiler
An XsltCompiler
object allows XSLT 2.0 stylesheets to be compiled.
The compiler holds information that represents the static context
for the compilation.
To construct an XsltCompiler
, use the factory method
NewXsltCompiler
on the Processor
object.
An XsltCompiler
may be used repeatedly to compile multiple
queries. Any changes made to the XsltCompiler
(that is, to the
static context) do not affect queries that have already been compiled.
An XsltCompiler
may be used concurrently in multiple threads, but
it should not then be modified once initialized.
Property Summary | |
---|---|
Uri |
BaseUri
The base URI of the stylesheet, which forms part of the static context
of the stylesheet. This is used for resolving any relative URIs appearing
within the stylesheet, for example in |
Processor |
Processor Get the Processor from which this XsltCompiler was constructed |
XmlResolver |
XmlResolver
An |
bool |
SchemaAware
The |
string |
XsltLanguageVersion
The |
IList |
ErrorList List of errors. The caller should supply an empty list before calling Compile; the processor will then populate the list with error information obtained during the compilation. Each error will be included as an object of type StaticError. If no error list is supplied by the caller, error information will be written to the standard error stream. |
Method Summary | |
---|---|
void |
DeclareCollation(System.Uri uri, System.Globalization.CompareInfo compareInfo, System.Globalization.CompareOptions options, bool isDefault)
Create a collation based on a given |
XsltExecutable |
Compile(System.IO.Stream input) Compile a stylesheet supplied as a Stream. |
JCompilerInfo |
GetUnderlyingCompilerInfo() Get the underlying CompilerInfo object, which provides more detailed (but less stable) control over some compilation options |
void |
SetParameter(QName name, XdmValue value) Externally set the value of a static parameter (new facility in XSLT 3.0) |
XsltExecutable |
Compile(System.IO.TextReader input) Compile a stylesheet supplied as a TextReader. |
XsltExecutable |
Compile(System.Uri uri) Compile a stylesheet, retrieving the source using a URI. |
XsltExecutable |
Compile(System.Xml.XmlReader reader) Compile a stylesheet, delivered using an XmlReader. |
XsltExecutable |
Compile(XdmNode node)
Compile a stylesheet, located at an XdmNode. This may be a document node whose
child is an |
XsltExecutable |
CompileAssociatedStylesheet(XdmNode source) Locate and compile a stylesheet identified by an <?xml-stylesheet?> processing instruction within a source document. |
Property Detail |
---|
public Uri BaseUri {get; set; }
The base URI of the stylesheet, which forms part of the static context
of the stylesheet. This is used for resolving any relative URIs appearing
within the stylesheet, for example in xsl:include
and xsl:import
declarations, in schema locations defined to xsl:import-schema
,
or as an argument to the document()
or doc()
function.
This base URI is used only if the input supplied to the Compile
method
does not provide its own base URI. It is therefore used on the version of the
method that supplies input from a Stream
. On the version that supplies
input from an XmlReader
, this base URI is used only if the XmlReader
does not have its own base URI.
public Processor Processor {get; set; }
Get the Processor from which this XsltCompiler was constructed
public XmlResolver XmlResolver {get; set; }
An XmlResolver
, which will be used to resolve URI references while compiling
a stylesheet
If no XmlResolver
is set for the XsltCompiler
, the XmlResolver
is used that was set on the Processor
at the time NewXsltCompiler
was called.
public bool SchemaAware {get; set; }
The SchemaAware
property determines whether the stylesheet is schema-aware. By default, a stylesheet
is schema-aware if it contains one or more xsl:import-schema
declarations. This option allows
a stylesheet to be marked as schema-aware even if it does not contain such a declaration.
If the stylesheet is not schema-aware, then schema-validated input documents will be rejected.
The reason for this option is that it is expensive to generate code that can handle typed input documents when they will never arise in practice.
The initial setting of this property is false, regardless of whether or not the Processor
is schema-aware. Setting this property to true if the processor is not schema-aware
will cause an Exception.
public string XsltLanguageVersion {get; set; }
The XsltLanguageVersion
property determines whether the version of the XSLT language specification
implemented by the compiler. The values 2.0 and 3.0 refer to the XSLT 2.0 and XSLT
3.0 (formerly XSLT 2.1) specifications.
The value 0.0 (which is the initial default) indicates that the value is to be taken
from the version
attribute of the xsl:stylesheet
element.
Values that are not numerically equal to one of the above values are rejected.
A warning is output (unless suppressed) when the XSLT language version supported by
the processor
is different from the value of the version
attribute of the xsl:stylesheet
element.
XSLT 3.0 features are supported only in Saxon-PE and Saxon-EE. Setting the value to 3.0 under Saxon-HE will cause an error if (and only if) the stylesheet actually uses XSLT 3.0 constructs.
public IList ErrorList {get; set; }
List of errors. The caller should supply an empty list before calling Compile; the processor will then populate the list with error information obtained during the compilation. Each error will be included as an object of type StaticError. If no error list is supplied by the caller, error information will be written to the standard error stream.
By supplying a custom List with a user-written add() method, it is possible to intercept error conditions as they occur.
Method Detail |
---|
public void DeclareCollation(System.Uri uri, System.Globalization.CompareInfo compareInfo, System.Globalization.CompareOptions options, bool isDefault)
Create a collation based on a given CompareInfo
and CompareOptions
uri
-
compareInfo
-
CompareInfo
, which determines the language-specific
collation rules to be used
options
-
isDefault
-
public XsltExecutable Compile(System.IO.Stream input)
Compile a stylesheet supplied as a Stream.
If the stylesheet contains any xsl:include
or xsl:import
declarations,
then the BaseURI
property must be set to allow these to be resolved.
The stylesheet is contained in the part of the input stream between its current position and the end of the stream. It is the caller's responsibility to close the input stream after use. If the compilation succeeded, then on exit the stream will be exhausted; if compilation failed, the current position of the stream on exit is undefined.
Parameters:input
-
XsltExecutable
which represents the compiled stylesheet object.
The XsltExecutable may be loaded as many times as required, in the same or a different
thread. The XsltExecutable
is not affected by any changes made to the XsltCompiler
once it has been compiled.
public JCompilerInfo GetUnderlyingCompilerInfo()
Get the underlying CompilerInfo object, which provides more detailed (but less stable) control over some compilation options
public void SetParameter(QName name, XdmValue value)
Externally set the value of a static parameter (new facility in XSLT 3.0)
Parameters:name
-
value
-
public XsltExecutable Compile(System.IO.TextReader input)
Compile a stylesheet supplied as a TextReader.
If the stylesheet contains any xsl:include
or xsl:import
declarations,
then the BaseURI
property must be set to allow these to be resolved.
The stylesheet is contained in the part of the input stream between its current
position and the end of the stream. It is the caller's responsibility to close the
TextReader
after use. If the compilation succeeded, then on exit the stream will be
exhausted; if compilation failed, the current position of the stream on exit is
undefined.
input
-
TextReader
containing the source text of the stylesheet
XsltExecutable
which represents the compiled stylesheet object.
The XsltExecutable may be loaded as many times as required, in the same or a different
thread. The XsltExecutable
is not affected by any changes made to the XsltCompiler
once it has been compiled.
public XsltExecutable Compile(System.Uri uri)
Compile a stylesheet, retrieving the source using a URI.
The document located via the URI is parsed using the System.Xml
parser. This
URI is used as the base URI of the stylesheet: the BaseUri
property of the
Compiler
is ignored.
uri
-
XsltExecutable
which represents the compiled stylesheet object.
The XsltExecutable may be run as many times as required, in the same or a different
thread. The XsltExecutable
is not affected by any changes made to the XsltCompiler
once it has been compiled.
public XsltExecutable Compile(System.Xml.XmlReader reader)
Compile a stylesheet, delivered using an XmlReader.
The XmlReader
is responsible for parsing the document; this method builds a tree
representation of the document (in an internal Saxon format) and compiles it.
The XmlReader
will be used as supplied; it is the caller's responsibility to
ensure that the settings of the XmlReader
are consistent with the requirements
of the XSLT specification (for example, that entity references are expanded and whitespace
is preserved).
If the XmlReader
has a BaseUri
property, then that property determines
the base URI of the stylesheet module, which is used when resolving any xsl:include
or xsl:import
declarations. If the XmlReader
has no BaseUri
property, then the BaseUri
property of the Compiler
is used instead.
An ArgumentNullException
is thrown if this property has not been supplied.
reader
-
XsltExecutable
which represents the compiled stylesheet object.
The XsltExecutable may be run as many times as required, in the same or a different
thread. The XsltExecutable
is not affected by any changes made to the XsltCompiler
once it has been compiled.
public XsltExecutable Compile(XdmNode node)
Compile a stylesheet, located at an XdmNode. This may be a document node whose
child is an xsl:stylesheet
or xsl:transform
element, or it may be
the xsl:stylesheet
or xsl:transform
element itself.
node
-
XsltExecutable
which represents the compiled stylesheet object.
The XsltExecutable may be run as many times as required, in the same or a different
thread. The XsltExecutable
is not affected by any changes made to the XsltCompiler
once it has been compiled.
public XsltExecutable CompileAssociatedStylesheet(XdmNode source)
Locate and compile a stylesheet identified by an <?xml-stylesheet?> processing instruction within a source document.
There are some limitations in the current implementation. The media type is ignored, as are the other parameters of the xml-stylesheet instruction. The href attribute must either reference an embedded stylesheet within the same document or a non-embedded external stylesheet.
Parameters:source
-
XsltExecutable
which represents the compiled stylesheet object.