Importing XML Schemas with <xsl:import-schema>

The <xsl:import-schema> element allows you to import an XML Schema. The schema is imported and processed before any input documents are processed. This allows you to define datatypes and validation rules before the XSLT processor begins to transform the input document. This element is only supported by schema-aware XSLT 2.0 processors.

The element has two optional parameters: namespace, which defines the namespace URI for the schema, and schema-location, which contains the URI of the schema file itself. <xsl:import-schema> can use schema-location to import a file, or it can contain the actual XML Schema within the stylesheet. We’ll look at a couple of examples here; for more complete examples, see the discussion of the [2.0 – Schema] <xsl:import-schema> element.

The simplest way to import a schema into a stylesheet is to use the URI:

<?xml version="1.0"?>
<!-- import-schema.xsl -->
<xsl:stylesheet version="2.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:po="http://www.oreilly.com/xslt">

  <xsl:import-schema namespace="http://www.oreilly.com/xslt"
    schema-location="po.xsd" />

  <xsl:output method="text"/>

  <xsl:template match="schema-element(po:purchase-order)"> <xsl:text>&#xA;This is a test of the &lt;xsl:import-</xsl:text> <xsl:text>schema&gt; element.&#xA;&#xA;</xsl:text> <xsl:text>Here are all the items in this purchase </xsl:text> <xsl:text>order:&#xA;</xsl:text> <xsl:for-each select="po:items/po:item"> <xsl:text> * </xsl:text> ...

Get XSLT, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.