XML база данных eXist и проверка грамматики - PullRequest
1 голос
/ 19 мая 2011

вот я снова: / Мне удалось заставить существующую базу данных работать во встроенном режиме.Тем не менее, я не могу заставить работать неявную проверку 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>

(я думаю, что весь контент этого файла не важен, он просто поставил бы этот вопрос тожеlong)

И это мой файл (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 - это проблема, но я не знаю, что мне в нее вставить.Я пытался много искать, но это было бесполезно.

Я буду признателен за любую помощь, потому что мне действительно нужно сделать эту работу.

Заранее благодарен.

1 Ответ

0 голосов
/ 03 февраля 2012

Посмотрите мой ответ на другой вопрос , который может помочь. Вкратце, если ваше приложение находится в закрытой интрасети, проблема может заключаться в наличии объявления DOCTYPE в вашем файле catalog.xml, поскольку его системный идентификатор не сможет решить. Объявление DOCTYPE необязательно (кроме проверки файла), поэтому удалите его при работе.

...