аннотации об авторских правах как в XSD, так и в XML

В соответствии с Где помещать информацию об авторских правах в XSD?, один из способов поместить уведомление об авторских правах в xsd — вставить что-то вроде

<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
  <xsd:appinfo>
    <copyright-notice>
      Copyright 2015 Example.com. All rights reserved.
    <copyright-notice>
    <license uri="http://www.apache.org/licenses/LICENSE-2.0"
             version="2.0">Apache License, Version 2.0</license>
    <!-- ... -->
  </xsd:appinfo>
</xsd:annotation>
<!-- ... -->
</xs:schema>

Если я это сделаю, это действительно сработает.

Но теперь я хочу вставить что-то подобное в соответствующий XML:

<MyCase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MyCaseDefinition.xsd">
<annotation>
  <appinfo>
    <copyright-notice>
      Copyright 2015 Example.com. All rights reserved.
    </copyright-notice>
    <license uri="http://www.apache.org/licenses/LICENSE-2.0"
             version="2.0">Apache License, Version 2.0</license>
  </appinfo>
</annotation>
<!-- ... -->
</MyCase>

Однако, если я это сделаю, я получаю сообщение об ошибке:

Недействительный контент, начинающийся с элемента "аннотация"

при загрузке файла.

Кажется, 2 выше являются эксклюзивными:

  • Если я добавлю аннотацию в XSD, я не смогу поместить эквивалент в XML.
  • Если я ничего не помещаю в XSD, то аннотация в XML в порядке.

Как я могу получить уведомление об авторских правах в обоих файлах?


person Yves D.    schedule 29.10.2018    source источник


Ответы (2)


Я думаю, что вы просто забыли косую черту, чтобы закрыть свой тег COPYRIGHT-NOTICE: попробуйте поставить, пожалуйста

</copyright-notice> 

вместо 2-го

<copyright-notice>

тег в вашем файле xsd.

Что вы думаете ?

person Mohamad    schedule 29.10.2018

Кажется, 2 выше являются эксклюзивными:

  • Если я добавлю аннотацию в XSD, я не смогу поместить эквивалент в XML.
  • Если я ничего не помещаю в XSD, то аннотация в XML в порядке.

Нет такой связи:

  • Вы можете поместить любые XML-элементы, которые вам или вашим инструментам нужны, в элемент XSD xsd:annotation/xsd:appinfo.

  • Если вы хотите разрешить использование другой модели содержимого XML для каких-либо элементов в вашем XML, вам необходимо настроить модель содержимого, указанную для таких элементов в вашем XSD.

Как я могу получить уведомление об авторских правах в обоих файлах?

Чтобы разрешить copyright-notice быть дочерним элементом MyCase, добавьте его в модель содержимого MyCase в XSD. Вы можете сделать это с показанным xsd:annotation/xsd:appinfo наследием или без него. (Возможно, этого не нужно, поскольку нет необходимости следовать требованиям добавления элементов xsd:annotation/xsd:appinfo в XSD при создании XML.)

person kjhughes    schedule 29.10.2018