[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

should apply-imports apply template rule in the same

Subject: should apply-imports apply template rule in the same stylesheet?
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Wed, 06 Jul 2011 15:06:46 +0200
 should apply-imports apply template rule in the same
Recently I came across a stylesheet that did not include nor import any other modules but used apply-imports, as in the following reduced sample:

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:template match="/">
    <html>
      <head>
        <title>Test</title>
      </head>
      <body>
        <xsl:apply-imports/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="foo">
    <p>
      <xsl:value-of select="."/>
    </p>
  </xsl:template>

</xsl:stylesheet>

My initial understanding and expectation was that initially the template matching the document node (match="/") would be applied and output the html element with its head and body child element but that the apply-imports would only look for imported template rules and that way would not apply the template with match="foo" in the same stylesheet.

Yet when I run the stylesheet with Saxon 6.5.5 or 9.3.0.5 against the most simple XML input

<foo>foo 1</foo>

the result is containing a <p>foo 1</p> element, as in

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

      <title>Test</title>
   </head>
   <body>
      <p>foo 1</p>
   </body>
</html>

xsltproc on the other hand outputs

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
</head>
<body></body>
</html>

so there the template match="foo" is not applied by the apply-imports.

The XSLT 1.0 spec in its usual brevity says:
"xsl:apply-imports processes the current node using only template rules that were imported into the stylesheet element containing the current template rule".


Based on that it seems the apply-imports should not result in applying the template with match="foo" in the same stylesheet.

On the other hand most other processors I have tried (Mozilla's, Opera's, IE's) seem to agree with Saxon and not with xsltproc so my simple assumption that a template in the same stylesheet is not an imported one seems wrong.

What are your thoughts?


--


	Martin Honnen --- MVP Data Platform Development
	http://msmvps.com/blogs/martin_honnen/

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.