我有一个XML架构文档(由我处理的公司提供)来验证系统所需的某个XML文件。
让我们说模式的前几行看起来像这样(我修改了URI以保护有罪!):
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://www.example.com/manifest-plugin"
xmlns="http://www.example.com/manifest-plugin">
XSD中的URI在未修改的原件中无效,即您不能去那里获取此XSD文件的副本。我不知道为什么他们没有在XSD中定义的URL上发布它,但他们没有。
我有一个XSD的本地副本,我想用它来验证我使用Eclipse的XML目录功能创建的XML文件。显然,由于URI无效,因此让系统尝试从Web检索XSD是没有意义的。
我们说本地XSD文件位于我的本地驱动器上:
C:\xml_schemas\manifest-plugin.xsd
XML文件的前两行如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
有人可以举例说明如何做到吗?
具体做法是:
我在Eclipse维基上找到了这个页面,但我个人并不清楚这些说明: -
Using the XML catalog in Eclipse
我尝试过设置XML目录参数:
然后添加
<manifest xmlns:targetNamespace="http://www.example.com/manifest-plugin">
到XML文件,但它似乎不起作用。
顺便说一句,如果您的Eclipse版本没有XML目录,您可能还没有安装“Web工具平台(WTP)”功能。它们带有Java EE版本的Eclipse,但可以单独安装。
答案 0 :(得分:2)
应该非常直截了当。在XML Catalog首选项页面中,单击“Add”以获取“Add XML Catalog Element”对话框。在那里,您要添加具有以下属性的目录条目:
本地XSD可以位于工作区(使用Eclipse路径变量),也可以位于工作区外部的文件系统中。添加条目后,Eclipse应该能够在工作区中验证XML文档。
请注意,XML Catalog与XML文档的应用程序运行时验证没有任何关系。
更新:XML文件应包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns="http://www.example.com/manifest-plugin">
...
在Eclipse 3.6或3.7中,您应该看到如下对话框:
答案 1 :(得分:1)
如果我没弄错的话,您可以指定一个本地架构位置,该位置优先于XML架构文件的远程位置。
因此,如果将XSD文件放在XML文件所在的目录中,则manifest.xml文件的标题应为:
<manifest xmlns="http://my.super.xsd.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com manifest.xsd">
我在Eclipse下测试过,它可以工作(你甚至可以点击XSD链接)。 现在,如果您的XSD和XML文件都位于同一目录中,那么这是有效的。
如果要将XSD放在单独的本地位置,则必须使用file
协议。根据您的示例,您的XML文件将如下所示:
<manifest xmlns="http://my.super.xsd.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com file:///C|/xml_schemas/manifest-plugin.xsd"">
此示例也适用于Eclipse,但是当单击XSD时,它会打开Web浏览器(至少对我而言)。
答案 2 :(得分:0)
如果未在xml中指定schemaloaction,则应该能够在Eclipse中使用XML catelog来覆盖架构位置。