Гость
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Запрет родительского элемента у xsd / 8 сообщений из 8, страница 1 из 1
26.03.2020, 14:15
    #39941350
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Добрый день. Есть xsd и xml. Проверка отрабатывает хорошо. Но если в xml добавить еще родительский элемент (<s:Body>) у корневого элемента, то проверка также пройдет хорошо. Как в xsd указать, что у элемента не может быть родителя?
Вот пример xsd:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Root">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="node1"/>
			<xs:element name="node2"/>
		</xs:sequence>
	</xs:complexType>
	</xs:element>
</xs:schema>



Оба файла проходят валидацию по xsd, нужно, чтобы второй файл не проходил валидацию.
<?xml version="1.0" encoding="UTF-8"?>
Код: xml
1.
2.
3.
4.
<Root>
  <node1/>
  <node2/>
 </Root>



<?xml version="1.0" encoding="UTF-8"?>
Код: xml
1.
2.
3.
4.
5.
6.
<s:Body>
<Root>
  <node1/>
  <node2/>
 </Root>
</s:Body>
...
Рейтинг: 0 / 0
26.03.2020, 15:36
    #39941407
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Валидация не должна проходить. Вы при валидации вручную указываете схему? Такое ощущение, что во втором случае у вас происходит валидация без схемы
...
Рейтинг: 0 / 0
26.03.2020, 15:48
    #39941415
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Схему подключаю вручную разными валидаторами пробовала. Ошибок нет, если добавить родительские элементы.
...
Рейтинг: 0 / 0
26.03.2020, 16:09
    #39941425
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Я просто сильно упростила файлы. На самом деле родительский элемент у меня такой:
Код: xml
1.
2.
3.
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header></s:Header>
<s:Body>


Вот его схема пропускает, а просто <s:Body> не пропускает.
...
Рейтинг: 0 / 0
27.03.2020, 11:18
    #39941598
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Альтаир,

Не подключается ли схема для SOAP валидации?
...
Рейтинг: 0 / 0
27.03.2020, 11:41
    #39941607
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Похоже, что все работает так:

1. Схема описывает набор корневых элементов (от 0)
2. Валидатору отдается набор схем
3. Валидатор по корневому элементу XML ищет подходящую схему
4. А если не находит, то просто проверяет, что XML well-formed

Т.е. вам нужно после валидацией схемой нужно еще проверять, что корневой элемент соответствует вашему
...
Рейтинг: 0 / 0
27.03.2020, 13:31
    #39941648
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Проверять элемент отдельно после проверки по схеме - такое себе. Похоже на костыль. А нет ли возможности проверить это внутри схемы?
...
Рейтинг: 0 / 0
27.03.2020, 16:16
    #39941717
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет родительского элемента у xsd
Альтаир
А нет ли возможности проверить это внутри схемы?
На сколько я понимаю проблема не в схеме, а в валидаторе. Который не может выбрать нужную схему для валидации. Можете посмотреть еще в сторону xsi:schemaLocation, но даже если оно будет работать, то это модификация исходного XML
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Запрет родительского элемента у xsd / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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