1

我正在使用以下模式来解析GraphML XML文件。

我设法从模式中绑定 java 类(使用 xjc),并且还解组了一些示例 XML 文件。

不幸的是,当我整理 XML 时,我收到以下错误:

SchemaLocation: schemaLocation value = 'Graphml.xsd' 必须有偶数个 URI

据我所知,xsd 中唯一使用的 schemaLocation 如下:

<xs:import namespace="http://www.w3.org/1999/xlink"                
  schemaLocation="http://graphml.graphdrawing.org/xmlns/1.0/xlink.xsd">
  ...

但我看不出它有什么问题。

有人可以提出什么问题吗?

4

2 回答 2

4

有两个部分,schemaLocation第一个是名称空间,第二个后面是空格是位置。类似以下内容将是有效的。

<foo 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns/1.0 http://graphml.graphdrawing.org/xmlns/1.0/xlink.xsd">
    ...
</foo>

架构位置可以设置在Marshaller. 您是否可能正在执行以下操作?

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "Graphml.xsd");
于 2012-12-12T11:10:05.603 回答
2

您显示的模式片段在语法上是正确的;你是对的,在那里没有发现任何问题。错误消息似乎也不是在谈论架构http://graphml.graphdrawing.org/xmlns/1.1/graphml-structure.xsd——它是在谈论名为 GraphML.xsd 的东西。

没有看到 XML 实例很难确定,但也许在文档实例中存在表单的属性值规范,xsi:schemaLocation = "GraphML.xsd"并且验证器抱怨值“GraphML.xsd”需要改为包含偶数个的值URI:命名空间名称、模式位置对(如 Blaise Doughan 的回答中所述)。

于 2012-12-13T01:35:53.170 回答