13

自从我今天更新到 GAE 1.7.2.1 后,我在所有 jdoconfig.xml 文件中的 eclipse 中都出现了验证错误。

我有默认的 jdoconfig.xml 内容:

[...]
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
[...]

日食验证抛出:

Referenced file contains errors (http://java.sun.com/xml/ns/jdo/jdoconfig).  
For more information, right click on the message in the Problems View and 
select "Show Details..."

单击详细信息时,我可以看到一堆行,例如:

s4s-elt-character: Non-whitespace characters are not allowed in schema elements
other than 'xs:appinfo' and 'xs:documentation'. Saw 'var_U = "undefined";'.

在不同的台词和不同的内容中“锯...”

它发生在我开始使用谷歌插件中的“新 Web 应用程序项目...”的每个项目中。

那么有人有这个问题吗?有什么修复吗?

4

8 回答 8

28

试试这个:

<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd">

根据此处的答案Validating jdoconfig with wrong url

xmlns 不是一个真正的文件/目录,更多的是一个命名空间,所以不应该存在!附加版本以获得真正的XSD文件,即http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd

于 2012-10-02T21:19:06.687 回答
6

这里有几个问题。

语法问题是,您作为值提供的 URIxsi:noNamespaceSchemaLocation被重定向到http://www.oracle.com/technetwork/java/index.html并返回一个 HTML 文档。您正在使用的 XSD 验证器尝试解析失败

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" 
          content="text/html; charset=utf-8" />
    <script type="text/javascript">
      var _U = "undefined";
      var g_HttpRelativeWebRoot = "/ocom/";
      var SSContributor = false;
...

作为 XSD 模式文档,出于某种原因,它试图解释发生了什么错误的重点是var_U = "undefined"在它不期望看到字符数据的地方找到字符串。

然后是一些概念上的问题。

  • 您的文档位于名为http://java.sun.com/xml/ns/jdo/jdoconfig. noNamespaceSchemaLocation如果你想验证你的文档,你到底为什么要将模式验证器指向一个没有目标命名空间的模式(确实如此)?鉴于(至少部分)您的文档元素是命名空间限定的,您将希望(正如 joncalhoun 已经建议的那样)使用xsi:schemaLocation并提供一告诉验证器它可以在哪里找到您希望它知道的每个命名空间的模式文档关于。

  • 可能曾经从 location 提供架构文档http://java.sun.com/xml/ns/jdo/jdoconfig,但由于它显然是为您的词汇表命名的标准命名空间,这实际上不太可能。大多数系统相当可靠地区分命名空间和模式文档,命名空间是抽象的和定义不明确的东西,模式文档通常是为给定命名空间定义特定 XSD 模式组件的 XML 文档。将架构文档的 URI 用作命名空间的名称并不违法,但这是不寻常的。

请注意,joncalhoun 为架构文档 ( http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd) 提供的 URL 实际上确实解析(在重定向到 之后http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/jdo/jdoconfig_3_0.xsd)到架构文档,该文档指定http://java.sun.com/xml/ns/jdo/jdoconfig为其目标命名空间。(这意味着,即使您通过将其 URI 作为值来成功检索此架构文档xsi:noNamespaceSchemaLocation,您也会收到错误,因为它不是没有命名空间的元素和属性的架构文档。)

这使我认为您应该再次阅读 joncalhoun 的答案并再次仔细尝试。如果您尝试时它不起作用,我的钱说您尝试了类似但不完全符合他的建议的东西,或者它解决了这个问题但只是暴露了一些其他问题,这很容易被误认为是失败。

于 2012-10-16T16:18:53.180 回答
4

一种解决方案是在 Eclipse 首选项中设置 XML 目录。

详细信息:
条目元素:URI
位置: http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd
URI: http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd
密钥类型:命名空间名称
密钥: http://java.sun.com/xml/ns/jdo/jdoconfig

于 2012-12-04T17:01:01.250 回答
0

CM 提到的语法和概念问题是插件和谷歌设置的问题,两者都推荐,

xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig

我没有专门使用 jdo,但我仍然得到这个命名空间的验证错误。直到最近,这个命名空间还不错。

我使用了 LuboM 的方法,它对我有用。LuboM 和 joncalhoun 都不是答案,因为它将我与 jdo 3.0 联系在一起

Oracle 将不得不提供修复程序。显然,他们的意图是解决跨 jdo 版本的命名空间问题。

于 2013-09-01T19:15:21.920 回答
0

您可能已经尝试过这条路径来解决您的问题:

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
于 2014-06-09T06:57:45.857 回答
0

这是我为解决它所做的:

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd">
于 2015-01-10T16:42:41.647 回答
0

我遇到了同样的问题,并从 Eclipse 的验证中排除了这个 jdoconfig.xml 文件。即使您的 Eclipse 为它抛出错误,它也不会影响将项目正确部署到 GAE 的能力。

以下是如何仅排除 jdoconfig.xml 文件以消除该讨厌的错误:

右键单击您的Eclipse Project, ->Properties->Validation->XML Validator,单击“...”按钮以获取更多选项。

您应该看到包括组和排除组选项。单击排除组->添加规则...->文件夹或文件名,然后浏览到您的文件。

清理或重建您的项目。验证错误应该消失了。

这在 Eclipse Luna 中对我有用。

于 2015-04-02T22:30:30.727 回答
0

我在这方面取得了成功:

Right Click Project -> Properties -> Validation -> XML Syntax
  1. 启用项目特定设置(如果需要)
  2. 在验证文件下,对于未指定语法选择“警告”
  3. 点击“确定”
  4. 如果您要求验证文件,请单击“是”

您可以通过转到 对所有项目执行相同的操作Windows -> Preferences

确保您正在验证文件(步骤 4)。

于 2015-04-07T10:14:01.420 回答