Пользовательские атрибуты в xsd-схеме

Я пытаюсь сделать простой XML-редактор для некоторых основных, но определенных потребностей, вещь, что я не уверен, как обработать, состоит в том, что я хочу смочь иметь собственные атрибуты (или что-то) в самой xsd-схеме.

Что-то вроде этого - то, что я имел в виду:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xsd:element name="Book">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Author" type="xsd:string" listable="1" />
            <xsd:element name="Pages" type="xsd:int" />
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
</xsd:schema>

Где я хочу информацию о том, 'listable' ли элемент, или не в схеме (обратите внимание, что .xml файл не имеет никакой информации или подсказки относительно того, listable ли элемент или нет, listable атрибут является просто способом организовать элементы в редакторе).

Это не должен быть свой собственный атрибут. Если существует атрибут misc или что-то, что я могу играть с этим, был бы прекрасен. Проблема состоит просто в том, который схема выше не проверяет ('listable' атрибут не поддерживается в этом контексте.)

Существует ли способ сохранить этот вид информации в схеме?

Кажется, что было бы возможно создать новое пространство имен, но я не знаю, как то пространство имен должно быть объявлено так, чтобы любой элемент мог иметь специальный атрибут в xsd (я постарался бы не смешивать с XML-файлом для этого). И это кажется небольшим излишеством для создания нового пространства имен только для этого?

Или я иду об этом неправильным путем полностью?

6
задан Magnus 21 June 2010 в 11:20
поделиться

1 ответ

Эта информация должна находиться в собственном пространстве имен. Лучше всего хранить его в аннотации к атрибуту. Вы можете прикрепить аннотацию к любому элементу схемы, и они могут содержать элементы xsd: documentation, предназначенные для удобочитаемой документации, и xsd: appinfo, предназначенные для информации, обрабатываемой компьютером. Итак, ваш пример будет выглядеть так:

 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:foo="http://www.example.org/bar">
   <xsd:element name="Book">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Author" type="xsd:string" >
        <xsd:annotation>
            <xsd:appinfo>
                <foo:listable value="true"/>
            </xsd:appinfo>
        </xsd:annotation>
             </xsd:element>
            <xsd:element name="Pages" type="xsd:int" />
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
</xsd:schema>
6
ответ дан 17 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

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