Использование XJC для компиляции XSD с множественной схемой

У меня есть XSD формата:

<?xml version="1.0" encoding="utf-16"?>
<root>

    <xs:schema --->
      ..
      ..
      </xs:schema>

       <xs:schema -->
      ..
      ..
      </xs:schema -->

       <xs:schema -->
      ..
      ..
      </xs:schema -->


</root> 

Выдает ошибку при компиляции с помощью компилятора XJC в строке 1 «Содержимое не разрешено в прологе». Если я изменю кодировку на "ISO-8859-1"

это дает следующую ошибку:

[ERROR] Unexpected <root> appears at line 2 column 10
  line 2 of ****.xsd Failed to parse a schema.

Если я удалю тег «root» из XSD, он начнет выдавать следующую ошибку:

  [ERROR] The markup in the document following the root element must be well-formed.
  line 44 of file:****.xsd

Не удалось разобрать схему.

Мой вопрос заключается в том, можем ли мы использовать XJC для компиляции XSD с более чем 1 тегом схемы. Я пробовал это со следующим форматом файла:

  <?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="abc" type="xs:string"/>
      <xs:element name="cdf">
      /xs:element>

    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

это отлично сработало для вышеизложенного, создав классы соответствующим образом.

Это как-то связано с объявлением пространства имен?


person user2306856    schedule 22.04.2013    source источник


Ответы (1)


В принципе, спецификация XSD позволяет включать несколько элементов xs:schema в один и тот же XML-документ, поэтому то, что вы пытаетесь сделать, вполне разумно. На практике большая часть программного обеспечения XSD (возможно, большинство программного обеспечения XSD) не подготовлена ​​для документов схемы, в которых элемент xs:schema не является самым внешним элементом в документе XML, и даже когда программное обеспечение поддерживает другие случаи, разные программы не Я всегда согласен с тем, как себя вести.

См. это переполнение стека. вопрос для дальнейшего обсуждения, включая страстный аргумент дезинформированной стороны о том, что вообще не существует программного обеспечения XSD, поддерживающего ввод того вида, который вы описываете.

С XJC наилучшим вариантом будет поместить каждый элемент xs:schema в отдельный XML-документ и использовать (а) один файл драйвера для импорта или включения каждого из них по очереди, или (б) поместить их все в тот же каталог и передать XJC имя каталога; он просканирует каталог на наличие файлов схемы и скомпилирует их. Вы также можете что-то сделать с опцией -wsdl.

person C. M. Sperberg-McQueen    schedule 24.04.2013