1

我又来了:/我设法使现有数据库以嵌入式模式运行。但是,我不能做的是隐式 XML 验证。我按照这个页面进行:http ://exist.sourceforge.net/validation.html

这是我的 conf.xml:

<validation mode="auto">
    <entity-resolver>
    <catalog uri="/db/catalog.xml" />
    </entity-resolver>
</validation>

这是我插入现有数据库的 catalog.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
         "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

    <uri name="http://www.w3.org/2001/XMLSchema" uri="videodes.xsd"/>
</catalog>

我也插入数据库的 XML 模式 videodes.xsd 如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    ...
</xsd:schema>

(我认为这个文件的全部内容并不重要,它只会让这个问题太长)

这是我插入到数据库中的文件 (videodes.xml),我希望对其进行验证:

<?xml version="1.0" encoding="UTF-8"?>
<videodes xsi:noNamespaceSchemaLocation="videodes.xsd" xmlns=""
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    ...
</videodes>

(再次,我认为没有必要将全部内容放在这里)

不幸的是,验证不起作用,我可以将无效数据插入到我的 videodes.xml 中。我错过了什么?我想我的 catalog.xml 是问题所在,但我不知道我应该在里面放什么。我试图搜索很多,但它没有任何用处。

我将不胜感激,因为我真的需要完成这项工作。

预先感谢。

4

1 回答 1

0

查看我对另一个问题的回答,这可能会有所帮助。简而言之,如果您的应用程序位于封闭的 Intranet 中,则 catalog.xml 文件中存在的 DOCTYPE 声明可能是问题所在,因为它的系统标识符将无法解析。DOCTYPE 声明不是必需的(除了验证文件),因此在生产时将其删除。

于 2012-02-03T00:29:54.933 回答