<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="extensions" page="intro" subpage=""/>
      <!--
           Generated at 2010-10-29T18:20:48.427+01:00--><title>Saxonica: XSLT and XQuery Processing: Saxon Extensions</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title" content="Saxonica: XSLT and XQuery Processing: Saxon Extensions"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>Saxon Extensions</h1>
      <p>This section describes the extensions and implementation-defined features provided with the
Saxon product.</p>
      <p>If you want to implement your own extensions,
see <a class="bodylink" href="../extensibility/intro.xml">Extensibility</a>.</p>
      <p>The extensions described here were provided because there are things that are difficult
to achieve, or inefficient, using standard XSLT/XQuery facilities alone. In some cases they are retained
from earlier releases even though equivalent functionality is available using the standard language.
As always, it is best to stick to the standard if you possibly can: and most things <i>are</i> possible, 
even if it's not obvious at first sight.</p>
      <p>All Saxon extensions require a namespace declaration such
<code>xmlns:saxon="http://saxon.sf.net/"</code> to appear. In XSLT this is typically 
declared on the <code>xsl:stylesheet</code>
element; it is also useful to write <code>exclude-result-prefixes="saxon"</code> to prevent
the Saxon namespace appearing in the result tree. In XQuery the namespace is declared by writing
<code>declare namespace saxon="http://saxon.sf.net/";</code> in the Query prolog.</p>
      <p>If you use XSLT extension instructions such as <code>saxon:doctype</code>, it is also necessary to include
the attribute <code>extension-element-prefixes="saxon"</code>.</p>
      <div class="boxed"
           style="border: solid thin; background-color: #B1CCC7; padding: 2px">
Before using a Saxon extension, check whether there is an equivalent <a class="bodylink" href="../extensions/exslt.xml">EXSLT</a>
extension available. EXSLT extensions are more likely to be portable across XSLT processors.
</div>
      <p>For details of additional extensions available in Query only, see 
<a class="bodylink" href="../using-xquery/extensions.xml">Query Extensions</a>.</p>
      <p>Saxon also provides a set of extension elements providing access to SQL databases.
These are described <a class="bodylink" href="../sql-extension/intro.xml">here</a>.</p>
      <p>Further information:</p>
      <ul>
         <li>
            <p><a class="bodylink" href="exslt.xml">EXSLT Extensions</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="attributes.xml">Extension attributes (XSLT only)</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="output-extras.xml">Additional serialization parameters</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="functions.xml">Extension functions</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="map.xml">The Map Extension</a></p>
         </li>
         <li>
            <p><a class="bodylink" href="instructions.xml">Extension instructions</a></p>
         </li>
      </ul>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="exslt.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>