错误:不允许处理指令目标匹配“ ”

每当我运行一个以如下开头的XSLT页面时,就会出现标题中的错误:

<?xml version="1.0" encoding="windows-1256"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:include href="../header.xsl"/> <xsl:template match="/"> <xsl:call-template name="pstyle"/> <xsl:call-template name="Validation"/> <xsl:variable name="strLang"> <xsl:value-of select="//lang"/> </xsl:variable> <!-- ////////////// Page Title ///////////// --> <title> <xsl:value-of select="//ListStudentFinishedExam.Title"/> </title> 

注意 :我在第一行之前删除了任何前导空格,但错误仍然存​​在!

基于Xerces的工具将会发出以下错误

 The processing instruction target matching "[xX][mM][lL]" is not allowed. 

在XML文件的顶部以外的任何位置遇到XML声明时

这是一个有效的诊断信息; 其他XML解析器应该在这种情况下发出类似的错误信息。

要纠正这个问题,请检查以下几种可能性:

  1. 一些空格或其他可见内容在<?xml ?>声明之前存在。

    解决方法 :在XML声明之前删除空白空间或任何其他可见的内容。

  2. 一些不可见的内容在<?xml ?>声明之前存在。 最常见的是这是一个字节顺序标记(BOM) 。

    解决方案 :使用诸如HTML中的BOM中的W3C页面建议的技术来移除BOM 。

  3. XML内容中存在一个<?xml ?>声明。 当XML文件以编程方式或通过剪切粘贴组合时,可能会发生这种情况。 在XML文件中只能有一个<?xml ?>声明,并且只能在最上面。

    解决方法 :以不区分大小写的方式搜索<?xml ,并从文件中除去顶部的XML声明。

上述错误的另一个原因是损坏的jar文件。 运行单元测试时,我得到了和Junit一样的错误。 删除jar并再次下载解决了这个问题。