|
Как работать с такой XSD схемой? | ☑ | ||
---|---|---|---|---|
0
MadProg
29.05.15
✎
09:30
|
Имеется схема следующего вида:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="MyDoc" elementFormDefault="qualified" xmlns:xsd="undefined"> <xs:element name="Шапка"> <xs:complexType> <xs:sequence> <xs:element name="Номер" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="Дата" type="xs:date" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Док"> <xs:complexType> <xs:sequence> <xs:element ref="Шапка"/> <xs:element minOccurs="0" name="Текст" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Проблема в том что фабрика не видит что элемент "Шапка" подчинен элементу "Док", и раскладывает их как независиммые. Как работать с такой схемой? Задача - по этой схеме выгружать документы. |
|||
1
Ёпрст
29.05.15
✎
09:35
|
||||
2
NikVars
29.05.15
✎
09:35
|
(0) Ошибка в этой схеме, как говорит Altova XMLSpy.
Ожидается символ ; в колонке 55 в строке 3. Character ';' is grammatically unexpected in column 55 at line 3 Открой прогой, которая схемы понимает. Увидишь. |
|||
3
MadProg
29.05.15
✎
09:39
|
Да ";" в "http://www.w3.org/2001/XMLSchema" - это "очепятка". Проблема не в этом.
Ну например http://xmlgrid.net рисует красивую сетку, со связями и вложениями |
|||
4
NikVars
29.05.15
✎
09:39
|
(1) Этого мало. Там еще ошибки. Проблема с элементом Шапка.
|
|||
5
MadProg
29.05.15
✎
09:53
|
По ходу форум сам добавляет ";" в сообщение "http://www.w3.org/2001/XMLSchema" =) (4) Так в чем проблемы с элементом Шапка?
|
|||
6
NikVars
29.05.15
✎
09:55
|
(5) The schema doesn't appear to be valid by itself (as a part of another schema, it might still be OK).
'Шапка' must refer to an existing element. Error location: xs:schema / xs:element / xs:complexType / xs:sequence / xs:element / @ref Details src-resolve.4.1: Cannot resolve unqualified declaration or definition 'Шапка'. |
|||
7
Ёпрст
29.05.15
✎
10:01
|
Тебе надо было шапку делать не элементом, а комплексным типом. Тогда было бы всё красиво и 1с-ина бы понимала как надо
|
|||
8
Ёпрст
29.05.15
✎
10:09
|
Мот тебе так сделать, не ?
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="undefined" xmlns:ns1="MyDoc" targetNamespace="MyDoc" elementFormDefault="qualified"> <xs:element name="Док"> <xs:complexType> <xs:sequence> <xs:element name="Шапка"> <xs:complexType> <xs:sequence> <xs:element name="Номер" type="xs:string"/> <xs:element name="Дата" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Текст" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
|||
9
Ёпрст
29.05.15
✎
10:10
|
Так по-логике, тоже что ив (0) только "правильнее"
|
|||
10
MadProg
29.05.15
✎
10:45
|
(9) К сожалению "мопед не мой", и схему менять я не могу.
С подачи (6) выполнил рекомендации данные Altova XMLSpy, в итоге конечная схема такая: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="MyDoc" elementFormDefault="qualified" xmlns:xsd="undefined"> <xs:element name="Шапка"> <xs:complexType> <xs:sequence> <xs:element name="Номер" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="Дата" type="xs:date" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Док"> <xs:complexType> <xs:sequence> <xs:element ref="n1:Шапка" xmlns:n1="MyDoc"/> <xs:element minOccurs="0" name="Текст" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 1С съела нормально такую схему... |
|||
11
MadProg
29.05.15
✎
13:30
|
В ходе дальнейших манипуляций с XSD назрел еще вопрос:
Обязательным ли для 1С является "targetNamespace" в схеме? Видел ветки на форуме где говорят что он нужен, и что фабрика без этого не видит пакет XDTO по схеме. Но мне попалась схема без "targetNamespace", и надо ее победить... Есть советы/варианты? |
|||
12
MadProg
03.06.15
✎
17:59
|
Оставлю это здесь, для истории.
Вариант схемы без "меток" ("n1:"). Для невнимательных - добавлено "xmlns=MyDoc" <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="MyDoc" elementFormDefault="qualified" xmlns=MyDoc"> <xs:element name="Шапка"> <xs:complexType> <xs:sequence> <xs:element name="Номер" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="Дата" type="xs:date" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Док"> <xs:complexType> <xs:sequence> <xs:element ref=Шапка/> <xs:element minOccurs="0" name="Текст" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
|||
13
NikVars
04.06.15
✎
09:30
|
(12) После удаления ; из первой строки и преобразования указанного текста в UTF-8
File xsd is not well-formed. Character 'M' is grammatically unexpected in column 117 at line 3 Reason: one of the following is expected (see below) '"' ''' S Details XML production: Production 'Attribute' not satisfied. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |