XSD из образца XML - PullRequest
       7

XSD из образца XML

0 голосов
/ 20 апреля 2020

Как мне написать XSD для этих образцов XML тегов?

              <Vote> 
                <UBF Name="DATE">2020-04-16</UBF>
                <UBF Name="SEC">22</UBF>
                <UBF Name="BATCHID">ABCD</UBF>
                <UBF Name="EFFECTIVE">2020-04-16</UBF>
                <UBF Name="TRACK">BCDE</UBF>
                <UBF Name="AUTH">EFGH</UBF>
                <UBF Name="COMMAMT">7.1</UBF>
                <UBF Name="SIZE">9.2</UBF>
                <UBF Name="PCT">8.2</UBF>
                <UBF Name="CIF">OT</UBF>
                <UBF Name="SECID">22</UBF>
                <UBF Name="EXPDATE">2020-11-30</UBF>
                <UBF Name="TOTSHAR">3.2</UBF>
            </Vote>

Примечание. Все элементы / атрибуты требуются и в последовательности, а передаваемые значения различны для разных элементов. например, значение в DATE должно быть передано как дата в гггг-мм-дд, в то время как значение в BATCHID равно char (30), а значение в COMMAMT должно быть передано как десятичное число.

I попробовал использовать онлайн конвертеры XML в XSD, и я придумал следующий код. Но это не учитывает необходимость передавать различные типы значений для отдельных элементов

                      <xs:element maxOccurs="unbounded" name="UBF">
                        <xs:complexType>
                          <xs:simpleContent>
                            <xs:extension base="xs:string">
                              <xs:attribute name="Name" type="xs:string" use="required" />
                            </xs:extension>
                          </xs:simpleContent>
                        </xs:complexType>
                      </xs:element>

Спасибо!

Ответы [ 3 ]

0 голосов
/ 20 апреля 2020

Все элементы / атрибуты обязательны и в последовательности, а передаваемые значения различны для разных элементов. например, значение в DATE должно быть передано как дата в гггг-мм-дд, тогда как значение в BATCHID равно char (30), а значение в COMMAMT должно быть передано как десятичное число.

Вы найдете эту часть спецификации XSD очень полезной: https://www.w3.org/TR/xmlschema-2/ В ней перечислены все встроенные простые типы данных, их лексические формы и ограничения.

Я пытался использовать онлайн-конвертеры XML в XSD

В общем, я не считаю эти конвертеры очень полезными. Даже простая схема может допускать множество разных документов. Маловероятно, что один пример документа захватит все, что нужно указать вашей схеме.

0 голосов
/ 21 апреля 2020

Для элемента <UBF /> требуется объединение простых типов string , date , int и decimal :

<xs:simpleType name="ubfValuesUnion">
  <xs:union memberTypes="xs:string xs:date xs:int xs:decimal" />
</xs:simpleType>

Определение элемента <UBF /> становится:

<xs:element name="UBF">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="ubfValuesUnion">
        <xs:attribute name="Name" use="required" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

Это позволяет затем проверять ваш XML с этими различными значениями для дат, строк, целых и десятичных чисел. число.

0 голосов
/ 20 апреля 2020

Последнюю документацию для языка определения схемы (XSD) XML можно найти по адресу: https://www.w3.org/TR/xmlschema11-1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...