Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取xslt“;堆栈";_Javascript_Php_Xml_Templates_Xslt - Fatal编程技术网

Javascript 获取xslt“;堆栈";

Javascript 获取xslt“;堆栈";,javascript,php,xml,templates,xslt,Javascript,Php,Xml,Templates,Xslt,我有一个xsl模板: <xsl:template name="xsl-error-message"> <xsl:element name="script"> <xsl:text>console.error(&quot;There is an error.&quot;);</xsl:text> </xsl:element> </xsl:template> 我希望标记中包含以下j

我有一个xsl模板:

<xsl:template name="xsl-error-message">
    <xsl:element name="script">
        <xsl:text>console.error(&quot;There is an error.&quot;);</xsl:text>
    </xsl:element>
</xsl:template>
我希望
标记中包含以下javascript代码:

console.log('There is an error. Callers: <xsl:template match="/"> --> <xsl:template name="foo"> --> <xsl:template name="xsl-error-message">');
console.log('出现错误。调用方:-->-->');
因此我想检索称为
xsl错误消息的模板
模板,并将此“跟踪”放在javascript代码中。

如果我不能这样做,有没有办法使调试XSLT变得更容易,并给出关于哪个模板称为
xsl错误消息
template的提示


或者是否有某种方法可以使用PHP XsltProcessor(或任何其他PHP5+内置xsl处理器)来帮助调试和查找哪个模板调用了哪个模板?我看到了
setProfiling()
方法,但没有找到获得某种堆栈的方法(我可以在分析日志文件中看到调用了
xsl错误消息,但我不知道是哪个模板调用了它)。

值得一提的是,Saxon有一个扩展函数来输出堆栈跟踪:


但是,与所有Saxon扩展一样,这需要Saxon PE或更高版本,这意味着您必须找到几分钱。

在浏览器中调试客户端XSLT很困难,但有些XML或XSLT IDE(如Stylus Studio或Oxygen)具有调试器。我不知道这是怎么回事,但是您可以始终使用参数调用模板。当然,使用真正的XSLT调试器,您可以在其中执行步骤、设置断点、查看调用堆栈、计算变量和动态调试。。。氧气,唱针,Altova。@MartinHonnen哦,天哪。。。哼好吧,很有趣,但完全超出我的预算!实际上,我也“接受”使用PHP的xslt处理器的方法,因为我可以在服务器端应用xslt。有什么想法吗?嗯,你会花费数不清的钱在时间和精力上,甚至尝试去做350美元买给你的东西。所以,很抱歉,除了谷歌的“免费XSLT调试器”之外,你没有什么想法,看看会有什么结果。从来没用过。
console.log('There is an error. Callers: <xsl:template match="/"> --> <xsl:template name="foo"> --> <xsl:template name="xsl-error-message">');