Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Ошибка при валидации


Автор: ReFLeXive 13.6.2009, 21:43
Вообще, я начал тока вчера изучать XML и написал простейший документ, однако XMLSpy выдает вот такую ошибку
Unable to locate a reference to a supported schema type (DTD, W3C Schema) within this document instance.
вот сам код документа:
Код

<?xml version="1.0" encoding="UTF-8"?>
<notepad>
    <note id="1" date="13/06/09" time="15:37">
        <subject>
        Очень важная тема
        </subject>
        <text>
        Приготовить обед на двоих
        </text>
    </note>
    <note id="2" date="15/06/09" time="08:30">
        <subject>
        2я важная тема
        </subject>
        <text>
        Сдать зачет по ТВИМС
        </text>
    </note>
</notepad>


Собственно вопрос, что ему тут не понравилось? 
делал по етому документу Schema (файл генерится автоматом и валидацию проходит на ура)

Автор: ReFLeXive 14.6.2009, 16:38
кажется понял в чем дело: ему нужна схема или DTD... ПРобовал присоединить созданную XMLSpy схему  в корневом элементе, однако все равно выдает ошибку. ПОдскажите, как нужно правильно сделать? делал так
Код

<notepad xmlns:xsd="http://www.w3c.org/2000/10/XMLSchema" xsi:schemaLocation="note.xsd">

Причем изначально файл note.xsd у меня лежал в папке \DTD_Schemas\note.xsd, потом я его переместил в тот же каталог, где и сам мой xml файл лежит, но все равно одно и то же....

Автор: diadiavova 19.6.2009, 08:16
Как работает конкретно XMLSpy я не знаю, обычно программа имеет какой-то список доступных схем, а дополнительные схемы добавляться могут в этот список каким-нибудь, присущим именно этой программе способом. Если этот способ известен, то подключить схему к документу можно просто добавив в корневой элемент атрибут xmlns значение которого должно соответствовать значению атрибута targetNamespase самой схемы.

Код

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
          targetNamespace="urn:schemas.sample.com/notepad" >
  <xs:element name="notepad">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="note">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="subject" type="xs:string" />
              <xs:element name="text" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedByte" use="required" />
            <xs:attribute name="date" type="xs:string" use="required" />
            <xs:attribute name="time" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Код

<?xml version="1.0" encoding="UTF-8"?>
<notepad xmlns="urn:schemas.sample.com/notepad">
    <note id="1" date="13/06/09" time="15:37">
        <subject>
        Очень важная тема
        </subject>
        <text>
        Приготовить обед на двоих
        </text>
    </note>
    <note id="2" date="15/06/09" time="08:30">
        <subject>
        2я важная тема
        </subject>
        <text>
        Сдать зачет по ТВИМС
        </text>
    </note>
</notepad>


Другой вариант : указать адрес схемы в документе явно

Код

<?xml version="1.0" encoding="utf-8" ?>
<notepad xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="note.xsd">
  <note id="1" date="13/06/09" time="15:37">
    <subject>
      Очень важная тема
    </subject>
    <text>
      Приготовить обед на двоих
    </text>
  </note>
  <note id="2" date="15/06/09" time="08:30">
    <subject>
      2я важная тема
    </subject>
    <text>
      Сдать зачет по ТВИМС
    </text>
  </note>
</notepad>


Автор: ReFLeXive 25.6.2009, 12:33
Цитата(diadiavova @  19.6.2009,  08:16 Найти цитируемый пост)
Как работает конкретно XMLSpy я не знаю, обычно программа имеет какой-то список доступных схем, а дополнительные схемы добавляться могут в этот список каким-нибудь, присущим именно этой программе способом. Если этот способ известен, то подключить схему к документу можно просто добавив в корневой элемент атрибут xmlns значение которого должно соответствовать значению атрибута targetNamespase самой схемы.

Сейчас пока изучаю xml по книге "XML за 21 день"...По началу нашел решение в виде встроенных ДТД схем.... Пока немного разберусь с етим и обязательно попробую Ваш способ)) Спасибо, что откликнулись!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)