Проверка валидности xml схеме xsd

1. alan88 1 30.07.20 17:53 Сейчас в теме
Прошу подсказать.
Есть схема xml, которая встроена в конфигурацию в XDTO пакет. По этому пакету формирую xml файл с данными.
По окончанию проверяю соответствие созданного xml файла схема. Валидацию файл не проходит.

При поиске ответа на вопрос "почему не проходит?", пришел к выводу что дело в заголовочном теге.
1С формирует его так(на это ни как не повлиять).

<B2BDATAType xmlns="http://metelica.ru/Orders" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

если привести эту строку (вручную) к виду:
<B2BDATAType xmlns="http://metelica.ru/Orders">

то файл проверку проходит.

Помогите понять что не так(схему и файл выгрузки прикрепил).
Спасибо.
Прикрепленные файлы:
Orders_schema.xsd
Тест_заказы3.xml
Вознаграждение за ответ
Показать полностью
Найденные решения
6. Segate 33 30.07.20 22:49 Сейчас в теме +1 $m
<xs:schema xmlns:tns="http://metelica.ru/Orders" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://metelica.ru/Orders" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="B2BDATAType" type = "tns:B2BDATAType"/>
  <xs:complexType name="B2BDATAType">
		<xs:sequence>
			<xs:element name="Message" type="xs:dateTime"/>
			<xs:element name="Orders" type="tns:Orders" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Orders">
		<xs:sequence>
			<xs:element name="Order" type="tns:Order" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Order">
		<xs:sequence>		
			<xs:element name="Number" type="xs:string"/>
			<xs:element name="DateTime" type="xs:dateTime"/>
			<xs:element name="ClientCode" type="xs:string"/>
			<xs:element name="Outlet" type="tns:OutletInfo"/>
			<xs:element name="DeliveryDate" type="xs:dateTime"/>
			<xs:element name="Positions" type="tns:Positions" minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="OutletInfo">
		<xs:sequence>
			<xs:element name="Code" type="xs:string"/>
		</xs:sequence>
		<xs:attribute name="INN" type="xs:string"/>
		<xs:attribute name="KPP" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="Positions">
		<xs:sequence>
			<xs:element name="Position" type="tns:Position" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Position">
		<xs:sequence>
			<xs:element name="Code" type="xs:string"/>
			<xs:element name="Quantity" type="xs:short"/>
			<xs:element name="Price" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>		
</xs:schema>
Показать


Вот вам текст схемы.
По этой схеме файл из(0) валидируется нормально. и парсится фабрикой xdto
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. o.nikolaev 199 30.07.20 18:23 Сейчас в теме
Как вы заполненную схему в xml сериализуете? Покажите код.
3. Segate 33 30.07.20 18:23 Сейчас в теме
У тебя Валидация не проходит потому что у тебя типы описаны, а элементов нет.
Соответственно добавив в xsd вот это:
<xs:element name="B2BDATAType" type = "tns:B2BDATAType"/>
Ты получишь то, что твой xml валидный

в то же время при валидации получаешь сообщение:
cvc-elt.1.a: Cannot find the declaration of element 'B2BDATAType'.

Что конкретно говорит, что в схеме нет описание для свойства b2bdatatype
4. alan88 1 30.07.20 18:30 Сейчас в теме
(3) Описание элемента я убрал из-за ошибки.

Документ НЕ соответствует схеме!
Подробности: Element '{http://metelica.ru/Orders}B2BDATAType': No matching global declaration available for the validation root.
SystemId: file://D:/Тест_заказы3.xml

Это нормально?
Мне нужно что бы файл был по схеме. В противном случае его не будут обрабатывать.
5. alan88 1 30.07.20 21:32 Сейчас в теме
(3) Описание элемента я убрал, так как это думал это решит проблему.
При добавлении элемента файл все равно не валидный. Как описать свойство?
6. Segate 33 30.07.20 22:49 Сейчас в теме +1 $m
<xs:schema xmlns:tns="http://metelica.ru/Orders" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://metelica.ru/Orders" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="B2BDATAType" type = "tns:B2BDATAType"/>
  <xs:complexType name="B2BDATAType">
		<xs:sequence>
			<xs:element name="Message" type="xs:dateTime"/>
			<xs:element name="Orders" type="tns:Orders" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Orders">
		<xs:sequence>
			<xs:element name="Order" type="tns:Order" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Order">
		<xs:sequence>		
			<xs:element name="Number" type="xs:string"/>
			<xs:element name="DateTime" type="xs:dateTime"/>
			<xs:element name="ClientCode" type="xs:string"/>
			<xs:element name="Outlet" type="tns:OutletInfo"/>
			<xs:element name="DeliveryDate" type="xs:dateTime"/>
			<xs:element name="Positions" type="tns:Positions" minOccurs="1" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="OutletInfo">
		<xs:sequence>
			<xs:element name="Code" type="xs:string"/>
		</xs:sequence>
		<xs:attribute name="INN" type="xs:string"/>
		<xs:attribute name="KPP" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="Positions">
		<xs:sequence>
			<xs:element name="Position" type="tns:Position" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="Position">
		<xs:sequence>
			<xs:element name="Code" type="xs:string"/>
			<xs:element name="Quantity" type="xs:short"/>
			<xs:element name="Price" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>		
</xs:schema>
Показать


Вот вам текст схемы.
По этой схеме файл из(0) валидируется нормально. и парсится фабрикой xdto
7. Segate 33 30.07.20 23:28 Сейчас в теме
Вот на коленке накидал обработку... поможет вам прочитать ваш xml.

По схеме из (6) все срабатывает
Прикрепленные файлы:
ВнешняяОбработка2.epf
8. alan88 1 31.07.20 10:00 Сейчас в теме
(6) В принципе я понял в чем была проблема, при запись пакета в xml нужно указать то локальное имя которое ожидается.

Тема закрыта. Segate спасибо за помощь.
Оставьте свое сообщение
Вопросы с вознаграждением