Saxon/X PHP API 样式表编译失败 - 获取有用的错误通知
Saxon/X PHP API Stylesheet compilation failed - get useful error notice
我在 PHP 中使用 Saxon/C API 作为 XSLT 2.0 处理器版本 1.0.0。我使用了 0.3 版,它完美地编译了我的样式表。不幸的是 0.3 在我需要的一个功能上有一个错误,所以我升级到 1.0.0。错误消失了,但现在它不编译我的 XSTL 并说
net.sf.saxon.s9api.SaxonApiException : Stylesheet compilation failed: 1 error reported
这绝对没有帮助。样式表包括几十个文件并且非常复杂(否则我会使用 libxml),所以如果没有正确的错误消息,我没有丝毫机会找出问题所在(或 post 这里)。
那么,我怎样才能得到可以处理的错误消息?
提前致谢!
--
我的PHP代码(而不是提到的例子here):
$saxonProc = new \Saxon\SaxonProcessor();
$saxon = $saxonProc->newXsltProcessor();
$saxon->setSourceFromFile('source.xml');
$saxon->compileFromFile('style.xml');
$result = $saxon->transformToString();
if($result == NULL) {
$errCount = $saxon->getExceptionCount();
if($errCount > 0 ){
for($i = 0; $i < $errCount; $i++) {
$errCode = $saxon->getErrorCode(intval($i));
$errMessage = $saxon->getErrorMessage(intval($i));
echo 'Error: Code='.$errCode.' Message='.$errMessage;
}
$saxon->exceptionClear();
}
}
echo $result;
$saxon->clearParameters();
$saxon->clearProperties();
样式表的开头:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:t="http://www.tei-c.org/ns/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="t" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:include href="global-varsandparams.xsl"/>
准确的错误详细信息应该出现在 apache 日志文件中。此外,累积的错误应该可以通过 getErrorCode 和 getErrorMessage 访问。我看到你在你的例子中有调用。如果它没有出现在这里,那么我怀疑这是一个值得提交的错误。
我在 PHP 中使用 Saxon/C API 作为 XSLT 2.0 处理器版本 1.0.0。我使用了 0.3 版,它完美地编译了我的样式表。不幸的是 0.3 在我需要的一个功能上有一个错误,所以我升级到 1.0.0。错误消失了,但现在它不编译我的 XSTL 并说
net.sf.saxon.s9api.SaxonApiException : Stylesheet compilation failed: 1 error reported
这绝对没有帮助。样式表包括几十个文件并且非常复杂(否则我会使用 libxml),所以如果没有正确的错误消息,我没有丝毫机会找出问题所在(或 post 这里)。 那么,我怎样才能得到可以处理的错误消息?
提前致谢!
--
我的PHP代码(而不是提到的例子here):
$saxonProc = new \Saxon\SaxonProcessor();
$saxon = $saxonProc->newXsltProcessor();
$saxon->setSourceFromFile('source.xml');
$saxon->compileFromFile('style.xml');
$result = $saxon->transformToString();
if($result == NULL) {
$errCount = $saxon->getExceptionCount();
if($errCount > 0 ){
for($i = 0; $i < $errCount; $i++) {
$errCode = $saxon->getErrorCode(intval($i));
$errMessage = $saxon->getErrorMessage(intval($i));
echo 'Error: Code='.$errCode.' Message='.$errMessage;
}
$saxon->exceptionClear();
}
}
echo $result;
$saxon->clearParameters();
$saxon->clearProperties();
样式表的开头:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:t="http://www.tei-c.org/ns/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="t" version="2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:include href="global-varsandparams.xsl"/>
准确的错误详细信息应该出现在 apache 日志文件中。此外,累积的错误应该可以通过 getErrorCode 和 getErrorMessage 访问。我看到你在你的例子中有调用。如果它没有出现在这里,那么我怀疑这是一个值得提交的错误。