Mac OSX で Cocoon を Apache Tomcat 7.0.42 で実行しています。Saxon から非常に奇妙なエラーが頻繁に発生します。XML に最上位のテキスト ノードがあると表示されます。まず、出力 xml を意味するのか、xsl xml を意味するのかわかりません。第二に、どちらもトップレベルのテキスト ノードを持っていないと思います。
スタック トレースからのエラー メッセージは次のとおりです。
net.sf.saxon.trans.XPathException: 「standalone」または「doctype-system」が指定されている場合、ドキュメントは整形式でなければなりません。ただし、このドキュメントには最上位のテキスト ノード net.sf.saxon.serialize.XMLEmitter.characters(XMLEmitter.java:574) net.sf.saxon.event.RecomingContentHandler.flush(RecomingContentHandler.java:543) が含まれています。
<...長いスタック トレース...>
org.apache.cocoon.servletservice.DispatcherServlet.service(DispatcherServlet.java:106) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.cocoon.servlet.multipart.MultipartFilter.doFilter(MultipartFilter.ジャワ:131)
これは、common.xsl をインポートする私の departments_list.xsl です。
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="common.xsl" />
<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<html lang="en">
<body>
<xsl:call-template name="header" />
<xsl:call-template name="footer" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
これが私のcommon.xslです:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template name="header">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<head>
<title>
<!-- static for now. Can use parameters though. -->
Harvard University FAS Course Catalog
</title>
<xsl:call-template name="css" />
<xsl:call-template name="js" />
</head>
</xsl:template>
<xsl:template name="footer">
<div id="footer">
<hr />
<ul>
<li>Web Development with XML</li>
<li>Bret Fontecchio</li>
<li>Fall 2013</li>
</ul>
</div>
</xsl:template>
<xsl:template name="css">
<style type="text/css">
<!-- CSS Rules -->
</style>
</xsl:template>
<xsl:template name="js">
<!-- use this template to add js
<script type="text/javascript" src="foobar.js"></script>
-->
</xsl:template>
</xsl:stylesheet>