Имя: Пароль:
1C
1С v8
Как работать с такой 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
(0) xmlns:xs="http://www.w3.org/2001/XMLSchema";;

вот тут выкини ";"
наслаждайся, кушай печенки
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.
Независимо от того, куда вы едете — это в гору и против ветра!