аннотации об авторских правах в XSD и XML - PullRequest
0 голосов
/ 29 октября 2018

Согласно Где поместить информацию об авторских правах в 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>

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

Недопустимый контент, начинающийся с элемента 'annotation'

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

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

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

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

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

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

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

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

0 голосов
/ 29 октября 2018

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

</copyright-notice> 

вместо 2-го

<copyright-notice>

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

Что ты думаешь?

...