我在 Mac OSX 上使用 Apache Tomcat 7.0.42 运行 Cocoon。我不断从撒克逊人那里得到一个非常奇怪的错误。它说我的 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.ReceivingContentHandler.flush(ReceivingContentHandler.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)
这是我的部门列表.xsl,它导入 common.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>