Хобрук: Ваш путь к мастерству в программировании

XML-файл с локальной копией XML-схемы

Я пробую некоторые примеры XML-схемы и должен проверить их с помощью образца XML-файла. Схема представляет собой локальный файл (someFile.xsd). Я использую eclipse и хочу включить ссылку в файл XML, чтобы указать на этот локальный файл xsd, чтобы eclipse мог предложить мне элементы.

Мне трудно придумать синтаксис для включения локального файла. Какие-либо предложения ?

16.06.2010

Ответы:


1

Используете ли вы атрибут xsi:schemaLocation?

Ex:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://foo/target/Namespace"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:someNamespace="someFile"     
       xsi:schemaLocation="
       someFile someFile.xsd" >
...
</root>

Я считаю, что someFile.xsd должен быть в вашем пути к классам

16.06.2010

2

Что-то вроде этого работает?

<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Скопировано с http://www.w3schools.com/Schema/schema_howto.asp

16.06.2010

3

Вы можете установить собственную реализацию ResourceResolver. и LSInput в SchemaFactory, поэтому что вызов LSInput .getCharacterStream() предоставит схему из локального пути.

Он попытался предоставить всеобъемлющий пример здесь.

Подход в основном состоит из правильной реализации того, что вызывается из

getSchemaAsStream(input.getSystemId(), input.getBaseURI(), localPath)));

в конце следующего кода. На этом этапе вы должны подключить свой собственный механизм поиска, чтобы найти файлы схемы на вашем локальном пути.

public void validate(InputStream xmlStream, InputStream schemaStream, String baseUri, String localPath)
                throws SAXException, IOException {
    Source xmlFile = new StreamSource(xmlStream);
    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    factory.setResourceResolver((type, namespaceURI, publicId, systemId, baseURI) -> {
        LSInput input = new DOMInputImpl();
        input.setPublicId(publicId);
        input.setSystemId(systemId);
        input.setBaseURI(baseUri);
        input.setCharacterStream(new InputStreamReader(
                        getSchemaAsStream(input.getSystemId(), input.getBaseURI(), localPath)));
        return input;
    });
26.01.2018
Новые материалы

Управление DOM для чайников вроде меня
Одной из первых вещей, которую мы рассмотрели, когда начали изучать Javascript во Flatiron, была модель DOM. Кто он? Чем он занимается? Он больше машина, чем человек? Ну да довольно много. ДОМ..

Что такое структура данных?
Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

мои январские чтения по программированию
Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

Введение в машинное обучение для обнаружения аномалий (часть 1)
Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

Начало работы с Pulumi в Digital Ocean
Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..