Проверка XML: Никакое соответствующее глобальное объявление, доступное для корня проверки

Я также столкнулся с этой ошибкой. Перезагрузка ПК работает для меня.

8
задан BryanH 19 October 2013 в 01:35
поделиться

2 ответа

Это загадочная ошибка, но она возможно, потому что ваш XSD искажен. Например, содержимое тегов channel, hotel (как внутренний, так и внешний), room и request xsd: element должно быть заключено в теги xsd: complexType . Кроме того, использование допустимо только для xsd: attribute , not xsd: element . Для элементов используйте minOccurs и maxOccurs (хотя оба по умолчанию равны 1, поэтому в этом случае они фактически не нужны). Кроме того, внешний элемент отеля содержит элемент комнаты, который должен содержать элемент отеля, что создает бесконечный цикл. Кроме того, вы неправильно называете элементы своего имени пользователя и пароля. Наконец, этот внутренний элемент отеля, вероятно, должен быть датой. Вот что, я думаю, вы ищете:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <!-- channel -->
  <xsd:element name="channel">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="username" type="xsd:string"/>
        <xsd:element name="password" type="xsd:string"/>
      </xsd:sequence>
      <xsd:attribute name="name" use="required" type="xsd:string" />
    </xsd:complexType>
  </xsd:element>

  <!-- hotel -->
  <xsd:element name="hotel">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="date">
          <xsd:complexType>
            <xsd:attribute name="from" use="required" type="xsd:string" />
            <xsd:attribute name="to" use="required" type="xsd:string" />
          </xsd:complexType>
        </xsd:element>
        <xsd:element ref="room" minOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute name="id" use="required" type="xsd:string" />
    </xsd:complexType>
  </xsd:element>


  <!-- room -->
  <xsd:element name="room">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="allocation" type="xsd:string"></xsd:element>
      </xsd:sequence>
      <xsd:attribute name="id" use="required" type="xsd:string" />
    </xsd:complexType>
  </xsd:element>

  <!-- building all together -->
  <xsd:element name="request">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="channel" maxOccurs="1"/>
        <xsd:element ref="hotel" maxOccurs="1"/>
      </xsd:sequence>
    <xsd:attribute name="type" use="required" type="xsd:string" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
10
ответ дан 5 December 2019 в 13:01
поделиться

Просто стреляет здесь, но пробовали ли вы преобразовать XML :: Document, содержащий схему, в XML :: Schema?

http://libxml.rubyforge.org/rdoc/classes/LibXML/XML/Schema.html

Не знаю, будет ли разница, но попробовать стоит.

2
ответ дан 5 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: