Поделиться через


Создание фрагмента XML из схемы XML

Редактор XML позволяет создавать XML-фрагменты на основе схемы на языке XSD. Например, во время работы с XML-файлом, если курсор находится сразу после имени элемента, можно нажать клавишу TAB, чтобы заполнить элемент XML-данными, созданными на основе информации схемы для этого элемента.

Эта возможность доступна только для элементов. При этом действуют следующие правила.

  • Элемент должен иметь схему связанного с ним типа, то есть элемент должен быть правильным согласно какой-либо связанной схеме. Тип схемы не может быть абстрактным и должен содержать необходимые атрибуты или необходимые дочерние элементы.

  • Текущий элемент в редакторе должен быть пустым, не имеющим атрибутов. Например, все приведенные ниже элементы являются правильными.

    • <Account

    • <Account>

    • <Account></Account>

  • Курсор должен находиться непосредственно справа от имени элемента.

Созданный фрагмент содержит все необходимые атрибуты и элементы. Если значение minOccurs больше единицы, во фрагмент включается необходимое минимальное количество экземпляров этого элемента. Максимум составляет 100 экземпляров. Любые фиксированные значения, обнаруженные в схеме, становятся фиксированными значениями во фрагменте. Элементы xsd:any и xsd:anyAttribute не учитываются и не увеличивают конструкцию фрагмента.

Значения по умолчанию создаются и помечаются как редактируемые значения. Если в схеме указано значение по умолчанию, используется это значение. Но если в схеме значением по умолчанию является пустая строка, редактор создает значения по умолчанию следующим образом.

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

  • Если тип схемы является атомарным, редактор получает атомарный тип и вставляет имя атомарного типа. Для производного простого типа используется базовый простой тип. Для типа списка в качестве типа itemType используется атомарный тип. Атомарным типом для объединения является атомарный тип первого типа memberType.

Пример

В этом разделе показано, как использовать в редакторе XML возможность создания XML-фрагментов из схемы.

Примечание.

Прежде чем приступать к этим процедурам, сохраните файл схемы на локальном компьютере.

Создание XML-файла и связывание его со схемой XML

  1. В меню Файл выберите пункт Создать, затем — Файл.

  2. Выберите в области Шаблоны пункт XML-файл и нажмите кнопку Открыть.

    Новый файл открывается в редакторе. Этот файл содержит XML-декларацию по умолчанию: <?xml version="1.0" encoding="utf-8">.

  3. В окне свойств документа нажмите кнопку обзора (...) в поле Схемы.

    Отобразится диалоговое окно XSD-схемы.

  4. Нажмите кнопку Добавить.

    Отображается диалоговое окно Открытие XSD-схемы.

  5. Выберите файл схемы и нажмите кнопку Открыть.

  6. Щелкните OK.

    Теперь с XML-документом связана схема XML.

Создание XML-фрагмента

  1. Наберите < на панели редактора.

  2. Список членов отображает следующие возможные элементы:

    !-- для добавления комментария.

    !DOCTYPE для добавления типа документа.

    ? для добавления инструкции по обработке.

    Contact для добавления корневого элемента.

  3. Выберите в списке пункт Contact и нажмите клавишу ВВОД.

    Редактор добавляет открывающий тег, <Contact, и помещает курсор после имени элемента.

  4. Нажмите клавишу TAB, чтобы создать XML-данные для элемента Contact на основании информации схемы.

Входные данные

В этом пошаговом руководстве используется следующий файл схемы.

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="phoneType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Voice"/>
      <xs:enumeration value="Fax"/>
      <xs:enumeration value="Pager"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="Contact">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name">
          <xs:simpleType>
            <xs:restriction base="xs:string"></xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="Title"
                    type="xs:string" />
        <xs:element name="Phone"
                    minOccurs="1"
                    maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Number"
                          minOccurs="1">
                <xs:simpleType>
                  <xs:restriction base="xs:string"></xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="Type"
                          default="Voice"
                          minOccurs="1"
                          type="phoneType"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Выходные данные

Далее приведены XML-данные, созданные на основе информации схемы, которая связана с элементом Contact. Элементы, помеченные как bold, обозначают редактируемые поля в XML-фрагменте.

<Contact>
  <Name>name</Name>
  <Title>title</Title>
  <Phone>
    <Number>number</Number>
    <Type>Voice</Type>
  </Phone>
</Contact>