powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно написать uri в xml
16 сообщений из 16, страница 1 из 1
Как правильно написать uri в xml
    #38697507
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Подскажите, пожалуйста, как правильно написать uri для схемы в xml документе:

Папка со схемой находится в папке проекта:

\xmlfiles\schema.xsd


XML с данными (uri указал как полный путь):

Код: xml
1.
2.
3.
<?xml version="1.0"?>
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:noNamespaceSchemaLocation="D:/Temp/Java/XML/xmlfiles/schema.xsd">



Появляется ошибка:

Код: java
1.
2.
Error: URI=null Line=2: Document is invalid: no grammar found.
Error: URI=null Line=2: Document root element "catalog", must match DOCTYPE root "null".



Спасибо.
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697516
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusXML с данными (uri указал как полный путь)URI <> полный путь, т.к. "полный путь", как минимум, не содержит имя схемы (file:// - в вашем случае).
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697518
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
спасибо.

А как тогда правильно писать uri?

file:// - Это вместо чего?
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697526
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Стал экранировать слеши, та же ошибка.

D://Temp//Java//XML//xmlfiles//schema.xsd
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697530
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus,

Ненадо ничего экранировать:
file://D:/Temp/Java/XML/xmlfiles/schema.xsd
Если вайлы лежат рядом, то просто
schema.xsd или xmlfiles/schema.xsd, в зависимости от расположения файлов.
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697539
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
file:///C:/путь/файл
Как пример, аналог которого приведён в доке соответствующего класса.

P.S. Чтение документации делается как в старом анекдоте:
старый анекдотИз-за высокого гладкого забора свешивается ветка с бананом.
Идёт обезьяна, видит банан, пытается влезь на забор - не получается, начинает прыгать - высоковато.
Внутренний голос говорит:
- Думай, обезьяна, думай
Обезьяна задумалась, отыскала палку и сшибла банан.
Из-за высокого гладкого забора свешивается ветка с бананом.
Идёт человек, видит банан, пытается влезть на забор - не получается, начинает прыгать - высоковато.
Внутренний голос говорит:
- Думай человек, думай
Человек задумался и плюнул в сердцах:
- Да что тут думать?! Прыгать надо!
?
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697541
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

попробывал все три варианта, одна и та же ошибка:

Код: java
1.
2.
3.
Warning: validation was turned on but an org.xml.sax.ErrorHandler was not set, which is probably not what is desired.  Parser will use a default ErrorHandler to print the first 0  errors.  Please call the setErrorHandler method to fix this.
Error: URI=null Line=2: Document is invalid: no grammar found.
Error: URI=null Line=2: Document root element "catalog", must match DOCTYPE root "null".



На счет Warning я не установил ErrorHandler

А с ошибкой как бороться?
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697544
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
анектод смешной, но я так писал - та же ошибка
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697546
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusСтал экранировать слеши, та же ошибка.
D://Temp//Java//XML//xmlfiles//schema.xsdЭкранируют back slash.
А вы просто удвоили допустимые разделители элементов пути.
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697547
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, при этом через браузер файл открывается.
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697574
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = null;
        Document document = null;
        builderFactory.setValidating(true);
        builderFactory.setNamespaceAware(true);
        try {
            builder = builderFactory.newDocumentBuilder();
        }
        catch (ParserConfigurationException e){
            e.printStackTrace();
        }

        try {
            fileName = "./xmlfiles/" + fileName;
            document = builder.parse(new FileInputStream(fileName));
            Validator validator = schema.newValidator();
            validator.validate(new DOMSource(document));
        }
        catch (org.xml.sax.SAXException e){
            e.printStackTrace();
        }
        catch (IOException e){
            e.printStackTrace();
        }



Ошибка происходит в строке:
Код: java
1.
document = builder.parse(new FileInputStream(fileName));



filename - имя файла с данными xml
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697598
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus
Код: sql
1.
2.
fileName = "./xmlfiles/" + fileName;
document = builder.parse(new FileInputStream(fileName));

А теперь сравниваем это с javadoc-ом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
public Document parse(File f)
               throws SAXException,
                      IOException
...
public abstract Document parse(InputSource is)
                        throws SAXException,
                               IOException

Меня, например, опять терзают смутные сомнения, что получив java.io.File (который имя), парсер самостоятельно создаст все необходимые ему потоки ввода-вывода, а получив FileInputStream - ничего не сделает.
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697618
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus,

Попробуйте добавить namespace в XML и XSD. По-моему xsd он таки находит.
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697626
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте ещё вот это
Код: java
1.
2.
        builderFactory.setFeature("http://apache.org/xml/features/validation/schema", true);
        builderFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.FileInputStream;

/**
 * This class represents ...
 */
public class SchemeValidation {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        builderFactory.setValidating(true);
        builderFactory.setNamespaceAware(true);
        builderFactory.setFeature("http://apache.org/xml/features/validation/schema", true);
        builderFactory.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
        DocumentBuilder builder = builderFactory.newDocumentBuilder();
        Document document = builder.parse(new FileInputStream(args[0]));
        System.out.println(document);
    }
}



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" encoding="UTF-8"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
  <orderperson>John Smith</orderperson>
  <shipto>
    <name>Ola Nordmann</name>
    <address>Langgt 23</address>
    <city>4000 Stavanger</city>
    <country>Norway</country>
  </shipto>
  <item>
    <title>Empire Burlesque</title>
    <note>Special Edition</note>
    <quantity>1</quantity>
    <price>10.90</price>
  </item>
  <item>
    <title>Hide your heart</title>
    <quantity>1</quantity>
    <price>9.90</price>
  </item>
</shiporder> 



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string"/>
      <xs:element name="shipto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string"/>
            <xs:element name="country" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="item" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema> 
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697639
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо большое!

Ошибка пропала, помогло вот это:

авторДобавьте ещё вот это
builderFactory.setFeature(" http://apache.org/xml/features/validation/schema", true);
builderFactory.setFeature(" http://apache.org/xml/features/validation/schema-full-checking", true);
...
Рейтинг: 0 / 0
Как правильно написать uri в xml
    #38697659
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА теперь сравниваем это с javadoc-омЧто-то я совсем невнимательный стал ...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно написать uri в xml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]