I was previously using Saxon 8.6 as the default XSLT processor and I make use of the XInclude transformer as follows:

Sitemap fragment

<map:match pattern="content/resources/site/*.html">
  <map:generate type="request" src="content/resources/site/{1}.xml"/>
  <map:transform src="system/transforms/request2Envelope.xsl"/>
  <map:transform type="xinclude"/>
  <map:transform src="interface/transforms/xhtml/screen.xsl"/>
  <map:serialize type="xhtml"/>

Source fragment

<content id="login">
  <xi:include href="../../content/resources/site/login.xml">
    <xi:fallback>login.xml not included.</xi:fallback>

Now in this example the xinclude's @href is resolved relative to the source documents location. However, if I replace Saxon 8.6 with Saxon
8.7.1 (I don't know if the '.1' makes a difference) the @href gets resolved relative to the webapp context. Therefore, I need to use this source fragment instead:

<content id="login">
  <xi:include href="content/resources/site/login.xml">
    <xi:fallback>login.xml not included.</xi:fallback>

Is there a reason for this change?

I'm currently using Cocoon 2.1.8 configured to use Saxon as the default XSLT processor running under Tomcat 5 and Java 1.5.0_05.


Philip Fennell