Импорт в файл XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"   
           xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
  <xs:import namespace="http://ns.adobe.com/AdobeInDesign/4.0/"
             schemaLocation="aid.xsd"/>
  <xs:element name="Table">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Cell"/>
      </xs:sequence>
      <xs:attribute ref="aid:table" use="required"/>
      <xs:attribute ref="aid:tcols" use="required"/>
      <xs:attribute ref="aid:trows" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Cell">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" 
                    maxOccurs="unbounded" 
                    ref="mathImage"/>
      </xs:sequence>
      <xs:attribute ref="aid:ccols" use="required"/>
      <xs:attribute ref="aid:ccolwidth" use="required"/>
      <xs:attribute ref="aid:crows" use="required"/>
      <xs:attribute ref="aid:table" use="required"/>
      <xs:attribute ref="aid:theader"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mathImage">
    <xs:complexType>
      <xs:attribute name="href" 
        use="required" 
        type="xs:anyURI"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

Проблема, с которой я сталкиваюсь, заключается в том, что пространство имен для Adobe InDesign является недопустимым, равно как и расположение схемы. У кого-нибудь есть альтернатива этой ситуации?

Вот суть моей проблемы: я пытаюсь проверить Таблицы из Adobe InDesign в схеме, которую я написал. Мы решили экспортировать таблицы как таблицы InDesign, а не как CALS, из-за необходимости сбора информации о стилях. Я уже написал проверенную оставшуюся часть моей схемы, но эта часть доставляет мне проблемы.

1 ответ

Если я правильно понимаю описание вашей проблемы, вы пытаетесь построить схему из трех документов схемы:

  1. ваш основной документ схемы (не показан), который включает или импортирует документ схемы, показанный в описании вашей проблемы.
  2. документ схемы, показанный в описании проблемы, который
    • объявляет элементы Table, Cell и mathImage, которые он не привязывает к пространству имен
    • импортирует пространство имен http://ns.adobe.com/AdobeInDesign/4.0/ и указывает на локальный документ схемы aid.xsd как место для поиска соответствующих объявлений
  3. документ схемы aid.xsd, который не показан, но на который ссылаются из документа схемы 2. Из объявлений в документе схемы 2 можно сделать вывод, что этот документ схемы
    • должен быть расположен локально (в том же каталоге, что и документ схемы 2, если для его указания используется относительная ссылка)
    • должен объявить http://ns.adobe.com/AdobeInDesign/4.0/ в качестве целевого пространства имен
    • должны объявить атрибуты верхнего уровня с именами table, tcol, trows, ccol, ccolwidth, crows и theader

Ваши сообщения об ошибках указывают на проблемы с чтением документа схемы с именем "Table_ASVAB.xsd"; из вашего описания мне не ясно, обозначает ли это имя файла документ схемы 1 или документ схемы 2.

Если Table_ASVAB.xsd является документом схемы, показанным в описании вашей проблемы, то возможными причинами проблемы являются те, которые приведены в сообщении об ошибке, за исключением тех, которые мы видим, но это не так:

  • не смог найти документ. Вполне возможно: разные валидаторы ищут документы схемы в разных местах, и вам нужно будет обратиться к документации вашего валидатора, чтобы узнать, как указать, где найти документы схемы. Из вашего описания неясно, как вы в настоящее время говорите или пытаетесь сообщить валидатору, где найти документы схемы.

  • документ не может быть прочитан. Также возможно: проверить, что процесс, выполняющий валидатор, имеет разрешения на чтение для документа схемы.

  • корневым элементом документа не является схема xsd: Не причина этого сообщения об ошибке; мы видим, что корневым элементом документа схемы, показанного в описании проблемы, является схема, и он находится в пространстве имен XSD.

Если Table_ASVAB.xsd - это не документ схемы, показанный в описании проблемы, а документ основной схемы, то применимы те же возможные причины (и вам также следует убедиться, что у него есть правильная привязка пространства имен и имя для его корневого элемента).

Пара замечаний по побочным вопросам:

Если вы предоставляете документ схемы aid.xsd самостоятельно, не имеет значения, поддерживает ли Adobe продукт или нет: средство проверки схемы будет читать документ схемы для заданного пространства имен так же счастливо с вашего жесткого диска, как и с URI на adobe.com. Если вы не предоставляете файл aid.xsd самостоятельно, у вас есть две проблемы (по крайней мере): вам нужно найти существующий документ схемы для этого пространства имен и предоставить соответствующий URI для него в атрибуте schemaLocation при импорте.,

Разница между импортом и включением проста: include извлекает документы схемы, которые объявляют дополнительные компоненты в целевом пространстве имен документа вызывающей схемы; import объявляет, что импортируемый документ схемы зависит от компонентов в импортируемом пространстве имен (эта зависимость обычно принимает форму ссылок на эти компоненты; в случае показанного вами документа схемы это ссылки на атрибуты aid:table и т. д. Ошибка включать документы схемы, в которых указано другое целевое пространство имен; Ошибка импортировать пространства имен, которые совпадают с целевым пространством имен текущего документа схемы. Если вы страдаете от путаницы в этом вопросе, вам может быть полезно проконсультироваться с хорошим руководством по XSD.

Другие вопросы по тегам