Xslt 错误消息中有误导性的行号:XTSE0120:顶级元素之间不允许有字符数据

Xslt 错误消息中有误导性的行号:XTSE0120:顶级元素之间不允许有字符数据,xslt,saxon,Xslt,Saxon,这是一篇自我回复的帖子,因为我花了一些时间才找到下面XTSE0120的原因。 我是XSLT新手,犯了一个错误,在之外放了一些文本: bellack@bellack-TP-T430u:~$ cat -n /tmp/x.xsl 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <xsl:stylesheet 3 version="2.0" 4 xmlns:xsl="http://www.w3.

这是一篇自我回复的帖子,因为我花了一些时间才找到下面XTSE0120的原因。 我是XSLT新手,犯了一个错误,在
之外放了一些文本:

bellack@bellack-TP-T430u:~$ cat -n /tmp/x.xsl
     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <xsl:stylesheet 
     3   version="2.0" 
     4   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     5 >
     6 <xsl:output method="text"/>
     7 <xsl:template name="build" match="/">
     8 <!-- 
     9   a lot of xslt code lines 
    10   -->
    11 </xsl:template>
    12 ****** misplaced text ****************
    13 </xsl:stylesheet>
但是第7行报告了错误,因为x.xsl有大约100行,所以我徒劳地在第7行周围搜索错误,错误实际上在文件的末尾

我不知道除了saxon之外的其他XSLT处理器是否也给出了这种误导性的错误消息

希望这能帮助某人


Udo

Saxon只保留元素节点的行号信息,而不保留文本节点的行号信息,因此我们很难报告文本节点中出现错误的罕见情况下的准确位置。

考虑在论坛或产品的错误数据库中提交特定软件的问题,对于Saxon,请参阅。堆栈溢出是一个问答网站。如果你想自己回答一个问题,你应该发布一个问题和一个答案。谢谢你的技术解释。报告的错误指的是xsl:template的开头,这实际上是正确的,这让我很恼火。也许有一种方法可以报告类似“xsl:template后不允许字符数据”的内容。但是,当然,如果您了解一些xslt基础知识(我现在做的是8-),这一点就不是很重要了
bellack@bellack-TP-T430u:~/workspace/tembanking/generator/crud$ java -jar ../lib/saxon9.jar -xsl:/tmp/x.xsl -s:/dev/null
Error at xsl:template on line 7 of file:/tmp/x.xsl:
  XTSE0120: No character data is allowed between top-level elements
Failed to compile stylesheet. 1 error detected.