错误:不允许处理指令目标匹配“ ”
每当我运行一个以如下开头的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解析器应该在这种情况下发出类似的错误信息。
要纠正这个问题,请检查以下几种可能性:
-
一些空格或其他可见内容在
<?xml ?>
声明之前存在。解决方法 :在XML声明之前删除空白空间或任何其他可见的内容。
-
一些不可见的内容在
<?xml ?>
声明之前存在。 最常见的是这是一个字节顺序标记(BOM) 。解决方案 :使用诸如HTML中的BOM中的W3C页面建议的技术来移除BOM 。
-
XML内容中存在一个
<?xml ?>
声明。 当XML文件以编程方式或通过剪切粘贴组合时,可能会发生这种情况。 在XML文件中只能有一个<?xml ?>
声明,并且只能在最上面。解决方法 :以不区分大小写的方式搜索
<?xml
,并从文件中除去顶部的XML声明。
上述错误的另一个原因是损坏的jar文件。 运行单元测试时,我得到了和Junit一样的错误。 删除jar并再次下载解决了这个问题。