Xml справочник: Учебник XML для начинающих

Содержание

Справочник по входным файлам в формате XML — Database Engine Tuning Advisor






Twitter




LinkedIn




Facebook




Адрес электронной почты










  • Статья



Применимо к:SQL Server

Помощник по настройке ядра СУБД может настраивать базу данных с помощью входного файла XML-данных. Этот XML-файл определяет, какие базы данных, таблицы, файлы или таблицы рабочей нагрузки и параметры настройки должны быть использованы для сеанса настройки. Его можно также использовать в качестве пользовательской конфигурации для выполнения анализа вариантов.

Входной XML-файл помощника по настройке ядра СУБД содержит иерархию элементов XML, содержащих текстовые и прочие элементы, которые определяют параметры сеанса настройки. Входной XML-файл помощника по настройке ядра СУБД должен соответствовать стандартам XML-документов правильного формата, поэтому имена всех элементов обрабатываются с учетом регистра. Имена указываются в стиле языка Pascal, в котором принято, что первые буквы имен прописные, первая буква каждого из сцепленных слов прописная, а остальные — строчные.

Значения всех элементов должны соответствовать соглашениям об именах XML. Дополнительные сведения об этих соглашениях см. в статье Текстовое содержимое XML библиотеки MSDN.

Обратите внимание, что этот справочник не является исчерпывающим. Дополнительные сведения обо всех элементах, используемых при определении входных данных XML, см. в XML-схеме помощника по настройке ядра СУБД, файле DTASchema.xsd.

XML-декларация

  • XML-данные (SQL Server)

Корневой элемент DTAXML

  • Элемент DTAXML (DTA)

Элементы DTAInput

  • Элемент DTAInput (DTA)

  • Элемент Server (DTA)

  • Элемент Workload (DTA)

  • Элемент TuningOptions (DTA)

  • Элемент Configuration (DTA)

Элементы для описания сервера

  • Элемент Name описания сервера (DTA)

  • Элемент Database описания сервера (DTA)

Элементы рабочей нагрузки

  • Элемент File (DTA)

  • Элемент Database описания рабочей нагрузки (DTA)

  • Элемент EventString (DTA)

Элементы для описания параметров настройки

  • Элемент TuningTimeInMin (DTA)

  • Элемент StorageBoundInMB (DTA)

  • Элемент TestServer (DTA)

  • Элемент FeatureSet (DTA)

  • Элемент Partitioning (DTA)

  • Элемент DropOnlyMode (DTA)

  • Элемент KeepExisting (DTA)

  • Элемент OnlineIndexOperation (DTA)

  • Элемент DatabaseToConnect (DTA)

Элементы для описания конфигурации

  • Элемент Server описания конфигурации (DTA)

  • Элемент Database описания конфигурации (DTA)

  • Элемент Recommendation (DTA)

  • элемент Create (DTA)

  • элемент Index (DTA)

  • Элемент Name описания индекса (DTA)

  • Элемент Column описания индекса (DTA)

  • Элемент Name описания столбца (DTA)

  • Элемент Filegroup описания индекса (DTA)

Элементы для описания базы данных

  • Элемент Name описания базы данных (DTA)

  • Элемент Schema описания базы данных (DTA)

  • Элемент Name описания схемы (DTA)

  • Элемент Table описания схемы (DTA)

  • Элемент Name описания таблицы (DTA)

См.

также:

Database Engine Tuning Advisor






XML-интерфейс r_keeper 7

Введение

XML​-интерфейс предоставляет наиболее удобный способ получения информации о системе r_keeper 7 и сохранения данных в базах данных r_keeper 7, а также выполнения различных операций.

Существует 3 вида интерфейсов в r_keeper 7:

  • Для кассовых станций
  • Для кассовых серверов
  • Для серверов справочников (отчетов).

Каждый тип интерфейса поддерживает различный набор команд.

XML-интерфейс позволяет:

  • Читать данные из справочников и коллекций — справедливо для всех видов интерфейсов
  • Создавать новые и изменять свойства существующих элементов справочников — только для серверов справочников
  • Получать информацию о текущих заказах, создавать новые и оперировать имеющимися заказами, выполнять любые кассовые операции — только для кассового сервера
    Примеры операций:
    • Закрытие общей смены
    • Печать отчета

Общая схема взаимодействия представлена ниже:

На основе XML-интерфейса работают такие продукты, как Мобильный официант, Киоск самообслуживания, Kiosk PRO, и т. д.

Возможности интерфейсов сервера справочников

  • Чтение элементов справочников
  • Изменения свойств существующих элементов справочников
  • Создания новых элементов справочников.

Применяется обычно для:

  • Интеграции с сайтом ресторана – выгрузка меню
  • Выгрузки меню, цен и прочего во внешнюю доставку
  • Выгрузки ассортимента во внешние системы учета, например, 1С
  • Загрузка меню, цен и других параметров на сервер справочников.

Возможности интерфейса кассового сервера

  • Чтение справочников
  • Чтение информации по текущим заказам
  • Создание и редактирование заказов
  • Выполнение кассовых операций.

Применяется обычно для:

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

Особенности XML-интерфейса кассовой станции

  • Можно добавить блюдо прямо в открытый заказ
  • Чтение содержимого открытого заказа на кассе
  • Выполнение кассовых операций — прокатка карты, запрос инфо о карте
  • Оплата текущего заказа.

Лицензирование

Существует два варианта лицензирования XML-интерфейса:

  • LifeTimeR-Keeper модуль XML сохранение заказов ПО — лицензия приобретается на конкретный объект в системе лицензирования единовременно, не предполагает никаких ограничений по запросам в рамках этого объекта.
    После приобретения лицензии необходимо сгенерировать лицензионный ключ и добавить его в свойства ресторана в менеджерской станции. Подробнее читайте в статье Интерфейс XML сохранения заказов

  • По подписке — лицензия для интеграции внешних приложений на 1 или 12 месяцев. Запросы SaveOrder, PayOrder, MakeRetunGoods должны подписываться и проверяться системой лицензирования. Подробнее читайте в статье Использование XML-интерфейса по подписке.

Способы обмена данными с XML-интерфейсом

Существует два способа обмена данными с XML-интерфейсом:

  • С использованием протокола HTTPS — доступен с версии r_keeper 7.05.03 и выше
  • С использованием rk7xml.dll — в этом случае требуется добавить XML-интерфейс на кассовый сервер, обмен данными будет идти через прописанный в его свойствах порт. Проверку можно осуществить через через тестовую специальную утилиту XMLTEST.exe. Подробнее о настройках читайте ниже в разделе Настройка работы XML-интерфейса с использованием rk7xml.dll.

Настройка работы XML-запросов через HTTPS

Выполнение XML запросов через HTTPS возможно только для версии r_keeper 7.05.03 и выше.

В менеджерской станции необходимо настроить доступ к кассовому серверу через HTTPS. Для этого требуется создать работника с соответствующей привилегией. В актуальных версиях r_keeper есть предустановленное право HTTPS Access, созданное специально для этих целей и мы рекомендуем использовать его.

Если роль и сотрудник с привилегией на доступ HTTPS у вас уже есть, остается только дать доступ к кассовому серверу. Для этого:

  1. Перейдите в меню Сервис Станции и устройства
  2. Выберите ресторан и перейдите на кассовый сервер
  3. В свойствах сервера:
    • В поле HTTP Data Port пропишите свободный порт. По желанию, включите настройку Use Free Listen Port, чтобы сервер выбрал другой порт в случае, когда заданный в свойстве HTTP Data Port порт занят.
    • В разделе HTTP Ограничения выберите во всех полях привилегию HTTP_Access
  4. Сохраните изменения
  5. Перезагрузите кассовый сервер.

Если требуется создать отдельную привилегию и роль с правом доступа по HTTPS, нажмите ниже.

 Создание привилегии и роли

  1. Перейдите в меню Сервис > Менеджерская станция > Привилегии на объекты.  
  2. Добавьте новую привилегию, например HTTP_порт.
  3. Перейдите в меню Настройки > OLAP отчеты Серверы отчетов
  4. Выберите нужный сервер справочников
  5. В свойствах сервера:
    • В разделе HTTP Server найдите поле HTTP Data Port и пропишите свободный порт.
      Включите настройку Use Free Listen Port, чтобы программа выбрала другой порт в случае, когда заданный в свойстве HTTP Data Port порт занят.
      Для доступа к web-интерфейсу данного сервера можно использовать:
      • Порт, прописанный в свойствах сервера справочников в менеджерской станции — HTTP Data Port
      • Порт, прописанный в rk7srv.ini в секции [TSPSOC], параметр port.
    • В разделе HTTP Ограничения поставьте во всех полях созданную привилегию
    • В разделе Ограничения включите в привилегию на объекты созданную привилегию
  6. Сохраните изменения
  7. Перезагрузите сервер
  8. В менеджерской станции перейдите в меню Сервис Станции и устройства
  9. Выберите ресторан и перейдите на кассовый сервер
  10. В свойствах сервера:
    • В разделе HTTP Server найдите поле HTTP Data Port и пропишите свободный порт.
      Включите настройку Use Free Listen Port, чтобы программа выбрала другой порт в случае, когда заданный в свойстве HTTP Data Port порт занят.
      Для доступа к web-интерфейсу данного сервера можно использовать:
      • Порт, прописанный в свойствах сервера справочников в менеджерской станции — HTTP Data Port
      • Порт, прописанный в rk7srv.ini в секции [TSPSOC], параметр port.
    • В разделе HTTP Ограничения поставьте во всех полях созданную привилегию
  11. Создайте роль с правами на созданную привилегию

  12. Для созданной роли добавьте работника, задайте ему пароль.
    Название и пароль данного работника будут использоваться для авторизации на сервере через HTTPS.

Пример настройки подключения связи r_keeper 7 и Menuboard Pro

Отправка запросов к кассовому серверу должна осуществляться по следующему URL:

https://*IP:HTTPDataPort*/rk7api/v0/xmlinterface. xml

CODE

IP:HTTPDataPort необходимо указать свои.

Для доступа к интерфейсу необходимо передавать логин и пароль — название и пароль работника по типу Basic Authorization при отправке каждого запроса.
Обмен данными с кассовым сервером должен происходить в кодировке UTF-8.

Проверка XML-интерфейса через встроенную утилиту

Для проверки XML-интерфейса через HTTPS-интерфейс:

  • Зайдите по адресу https://ip:port/webgui/iservxmltest.htm. Например, https://127.0.0.1:13665/webgui/iservxmltest.htm
  • Введите данные созданного сотрудника: имя пользователя и пароль 
  • Введите текст XML-запроса для выполнения
  • Нажмите кнопку Execute
    Результат должен быть такой, как на рисунке ниже:
Аутентификация и выполнение запросов

Для аутентификация и авторизации используется имя название и пароль работника из r_keeper 7.

WEB-интерфейс на момент написания статьи имеет ограничения:

  • Новый WEB интерфейс: https://ip:port/webgui/, например: https://ip:port/webgui/index. htm
  • API версии 0 — XML интерфейс и внутренние процедуры r_keeper 7: https://ip:port/rk7api/v0, например: https://ip:port/rk7api/v0/xmlinterface.xml
  • API версии 1 — новые функции для взаимодействия с r_keeper 7: https://ip:port/rk7api/v1, например: https://127.0.0.1:13665/rk7api/v1/serverstatus.xml

После указания права и его назначения, соответствующей роли можно проверить корректность настроек, открыв в WEB интерфейсе соответствующие страницы. 

Введите в адресной строке один из вариантов, появится окно авторизации — введите название работника и пароль. Обратите внимание, что вам необходимо ввести свой IP и порт.

  • Веб-интерфейс доступен по адресу: https://ip:port/webgui/
  • https://ip:port/rk7api/v1
  • https://ip:port/rk7api/v0
Выполнение запроса через wget 

Пример выполнения запроса с использованием утилиты wget:

wget.exe --secure-protocol=TLSv1 --no-check-certificate --header="Content-Type: text/xml" --http-user=9006 --http-password=9006 --post-file=requestData. xml https://127.0.0.1:20001/rk7api/v0/xmlinterface.xml

CODE

Параметры запроса:

  • Пользователь: —http-user=9006
  • Пароль: —http-password=9006
  • Файл с запросом: —post-file=requestData.xml

После выполнения такого запроса его результат будет сохранен в файл xmlinterface.xml.

Настройка работы XML-интерфейса с использованием rk7xml.dll

 Инструкция по настройке XML-интерфейса с использованием rk7xml.dll

XML-интерфейс работает через драйвер iTCPXML.dll. При работе с XML-интерфейсом через rk7xml.dll, помимо настроек, описанных выше, необходимо вручную добавить интерфейс на кассовый сервер:

  1. Перейдите в меню Сервис Станции и устройства
  2. Выберите ресторан и перейдите на кассовый сервер
  3. На вкладке Устройства добавьте драйвер XML Interface For Windows 
  4. Пропишите порт в параметре  Port

  5. Привяжите добавленный интерфейс к логическому интерфейсу в справочнике Сервис > Интерфейсы.
    По умолчанию в системе уже будет предустановленный XML-интерфейс с кодом 104. Для каждого внешнего приложения можно сделать копию данного интерфейса и связать его с драйвером на кассовом сервере.
  6. После привязки интерфейса перезагрузите кассовый сервер. Проверьте, что интерфейс загружен в свойствах кассового сервера
  7. Запустите кассовый сервер с параметром desktop и откройте его интерфейс, дважды нажав на его значок в трее.
    Загруженный интерфейс должен быть виден на вкладке Интерфейсы
  8. Вызов функций осуществляется через RK7XML.dll, интерфейсный модуль: 
    1. Функция CallRK7XMLRPC
      Параметры:

      • AddressName — адрес:порт

      • Request — XML-запрос

      • RequestSize — длина XML-запроса

      • ResultFile — имя файла, куда записывается результат

      • ErrorBuf — место, куда пишутся ошибки соединения

      • ErrorBufSize — размер ErrorBuf

    2. Функция CallRK7XMLRPCToStream — аналогична функции выше, но ее результат пишется в поток IStream
      Параметры:

      • AddressName — адрес:порт
      • Request — XML-запрос
      • RequestSize — размер XML-запроса
      • ResultStream — IStream — поток, куда передается результат
      • ErrorBuf — место, куда пишутся ошибки соединения
      • ErrorBufSize — размер ErrorBuf
    3. Функция SetUseTempFileLimit  — устанавливает лимит размера файла, если время возвращения результата превышает порог. По умолчанию = 1000000 ms
    4. Функция GetDLLVersion — возвращает версию DLL
    5. Функция SetCryptKey — устанавливает ключ шифрования. Может быть различным для различных кассовых серверов, прописывается в свойствах XML интерфейса.

Текущая версия протокола 2 предполагает осуществления контроля за выполнением команд сервером. В прошлой версии было невозможно узнать, выполнился ли последний запрос, если возникал разрыв связи после начала обработки запроса.
Сейчас для этого существуют новые функции GetLastXMLResult и GetLastXMLResultToStream. Если ответ после выполнения запроса не удалось отправить, он хранится на сервере вплоть до специального запроса при вызове этих функций или до следующего запроса. Если ответ был успешно отослан, он на сервере не хранится. В любом случае всегда можно узнать номер последнего выполненного запроса для конкретного ConnectName.

ConnectName — произвольная Null-terminated строка, идентификатор соединения
RequestNum — последовательный номер запроса, ведётся по каждому идентификатору соединения отдельно. Надо передать 0, иначе будет использован переданный номер запроса.

function CallRK7XMLRPC2(AddressName: PChar; ConnectName:PChar;
  Request: PChar; RequestSize: integer;
  var RequestNum: DWord; //в обе стороны. Если 0, то генерируется сервером.
  ResultFile: PChar;
  ErrorBuf: PChar; ErrorBufSize: integer):BOOL;stdcall;
function CallRK7XMLRPCToStream2(AddressName: PChar; ConnectName,
  Request: PChar; RequestSize: integer;
  var RequestNum: DWord; //в обе стороны. Если 0, то генерируется сервером.
  ResultStream: IStream;
  ErrorBuf: PChar; ErrorBufSize: integer):BOOL;stdcall;
function GetLastXMLResult(AddressName: PChar; ConnectName:PChar;
  out RequestNum: DWord; //всегда возвращается номер последнего выполненного запроса
  ResultFile: PChar; //результат заполнен, если была ошибка передачи данных результата, после успешной передачи стирается
  ErrorBuf: PChar; ErrorBufSize: integer):BOOL;stdcall;
function GetLastXMLResultToStream(AddressName: PChar; ConnectName: PChar;
  out RequestNum: DWord; //всегда возвращается номер последнего выполненного запроса
  ResultStream: IStream; //результат заполнен, если была ошибка передачи данных результата, после успешной передачи стирается
  ErrorBuf: PChar; ErrorBufSize: integer):BOOL;stdcall;

DELPHI

Проверка XML-запросов через TESTXML.

exe

Для проверки запроса при использовании rk7xml.dll воспользуйтесь утилитой XMLTEST.exe, которую можно скачать по ссылке или с FTP-сервера по адресу: ftp://FTP.ucs.ru/rk7/ForDealers/XMLInterface/. 

 Пример запуска

Обратите внимание, при запуске без параметров утилита выводит информацию об использовании:

xmltest.exe 127.0.0.1:1122 xmlquery.xml response.xml /pass:password

CODE

Описание параметров:

  • 127.0.0.1:1122 — IP адрес и порт, на который настроен XML интерфейс в r_keeper 7

  • xmlquery.xml — имя файла с XML запросом

  • response.xml — имя файла, в который следует записать ответ

  • /pass:password — пароль, заданный в XML интерфейсе в r_keeper 7

После выполнения утилита сохранит в файл response.xml ответ от XML интерфейса r_keeper 7. Для проверки работоспособности и корректности настроек можно использовать следующий запрос, который следует сохранить в файл xmlquery. xml:

<?xml version="1.0" encoding="UTF-8"?>
<RK7Query>
<RK7CMD CMD="GetSystemInfo"/>
</RK7Query>

CODE

Для удобства существует утилита с графическим интерфейсом TestXML.zip.

Логирование запросов

 Включение логирования запросов при использовании HTTPS

  1. Перейдите в меню Сервис Станции и устройства
  2. Выберите ресторан и перейдите на кассовый сервер
  3. В свойствах кассового сервера в разделе HTTP Server укажите HTTP Log path и поставьте галочку Log HTTP query and response:

 Включение логирования запросов при использовании RK7XML.dll

  1. Перейдите в меню Сервис Станции и устройства
  2. Выберите ресторан и перейдите на кассовый сервер
  3. На вкладке Устройства выберите один из драйверов XML Interface For Windows 
  4. Раскройте раздел Опции и заполните параметр OutputDir

Обязательно перезагрузите кассовый сервер после произведенных изменений.  

Запросы будут парные — INxxxxx.XML и OUTxxxxx.XML.

Дополнительно можно включить параметр NoLogginQueries — он отвечает за отключение логирования указанных в параметре запросов. Укажите в поле нужные запросы. 

Справочник по XML-схеме

❮ Предыдущий
Следующий ❯


Элемент Пояснение
все Указывает, что дочерние элементы могут появляться в любом порядке. Каждый ребенок
элемент может встречаться 0 или 1 раз
аннотация Указывает элемент верхнего уровня для комментариев к схеме
любой Позволяет автору расширять XML-документ элементами
не указано схемой
любой атрибут

Позволяет автору расширить документ XML с неуказанными атрибутами
по схеме

информация о приложении Указывает информацию, которая будет использоваться приложением (обязательно
перейти внутрь аннотации)
атрибут Определяет атрибут
Группа атрибутов Определяет группу атрибутов для использования в сложном типе
определения
на выбор Разрешает только один из элементов, содержащихся в
объявление должно присутствовать в содержащем элементе
комплексСодержимое Определяет расширения или ограничения сложного типа,
содержит смешанный контент или только элементы
сложный тип Определяет элемент сложного типа
документация Определяет текстовые комментарии в схеме (должны находиться внутри
аннотация)
элемент Определяет элемент
расширение Расширяет существующий элемент simpleType или complexType
поле Задает выражение XPath, указывающее используемое значение
для определения ограничения идентичности
группа Определяет группу элементов, которые будут использоваться в сложном типе
определения
импорт Добавляет несколько схем с разными целями
пространство имен для документа
включает Добавляет несколько схем с одной и той же целью
пространство имен для документа
ключ Задает значение атрибута или элемента как
ключ (уникальный, необнуляемый и всегда присутствующий) в содержащем элементе
в экземпляре документа
ссылка на ключ Указывает, что значение атрибута или элемента соответствует
те из указанного ключа или уникального элемента
список Определяет элемент простого типа как список значений
обозначение Описывает формат данных, отличных от XML, в XML-документе
переопределить Переопределяет простые и сложные типы, группы и атрибуты
группы из внешней схемы
ограничение Определяет ограничения для типов simpleType, simpleContent или
комплексСодержание
схема Определяет корневой элемент схемы
селектор Задает выражение XPath, которое выбирает набор
элементы для ограничения идентичности
последовательность Указывает, что дочерние элементы должны появляться в последовательности. Каждый ребенок
элемент может встречаться от 0 до любого количества раз
простой контент Содержит расширения или ограничения для текстового сложного типа или для простого типа в качестве содержимого и не содержит элементов
простойТип Определяет простой тип и указывает ограничения и
информация о значениях атрибутов или текстовых элементов
соединение Определяет простой тип как набор (объединение) значений
из указанных простых типов данных
уникальный Определяет, что элемент или значение атрибута должны быть
уникальный в рамках


Посмотрите на ограничения XSD!

Ограничение Описание
перечисление Определяет список допустимых значений
дробьЦифры Указывает максимально допустимое количество десятичных разрядов.
Должен быть равен или больше нуля
длина Задает точное количество символов или элементов списка
допустимый. Должен быть равен или больше нуля
максЭксклюзив Задает верхнюю границу числовых значений (значение
должно быть меньше этого значения)
макс. включительно Задает верхнюю границу числовых значений (значение
должно быть меньше или равно этому значению)
максимальная длина Задает максимальное количество символов или элементов списка
допустимый. Должен быть равен или больше нуля
минЭксклюзив Указывает нижнюю границу числовых значений (значение
должно быть больше этого значения)
мин включительно Указывает нижнюю границу числовых значений (значение
должно быть больше или равно этому значению)
минДлина Указывает минимальное количество символов или элементов списка
допустимый. Должен быть равен или больше нуля
шаблон Определяет точную последовательность символов, которые
приемлемо
Всего цифр Указывает максимально допустимое количество цифр. Должно быть
больше нуля
белыйКосмос Указывает, как пустое пространство (перевод строки, табуляция, пробелы и
возврат каретки) обрабатывается

❮ Предыдущий
Далее ❯

ВЫБОР ЦВЕТА



Лучшие учебники

Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебное пособие по W3.CSS
Учебное пособие по Bootstrap
Учебное пособие по PHP
Учебное пособие по Java
Учебное пособие по C++
Учебное пособие по jQuery
9000 3

Основные каталожные номера

Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3. CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры

Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


ФОРУМ |
О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения.
Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.
Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования,
куки-файлы и политика конфиденциальности.

Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Ссылки на схемы XSD в документах

  • Статья

 

Чтобы сослаться на схему XML-схемы (XSD) из XML-документа в MSXML 6.0, можно использовать любое из следующих средств для связывания схемы с XML-документом, чтобы MSXML использовал схему для проверки содержимого документа. .

  • Ссылка на схему XSD в документе XML с использованием атрибутов экземпляра схемы XML, таких как xsi:schemaLocation или xsi:noNamespaceSchemaLocation .

  • Добавьте файл схемы XSD в кэш схемы, а затем подключите этот кэш к документу DOM или программе чтения SAX перед загрузкой или синтаксическим анализом документа XML.

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

Использование noNamespaceSchemaLocation

Атрибут xsi:noNamespaceSchemaLocation хорошо работает в ситуациях, когда пространства имен не используются в содержимом XML-документа, который вы хотите проверить.

Например, ниже показан документ XML, который ссылается на внешнюю схему XSD, MyData.xsd, расположенную на веб-сервере.

 
   
      Представление XML
      Ричард Лайт
   

 

Если файл MyData.xsd существует и доступен в веб-сайте, указанном в атрибуте xsi:noNamespaceSchemaLocation , он будет использоваться для проверки узла и любых его дочерних узлов, которые не имеют префикса пространства имен. . Если веб-сервер недоступен, вы также можете найти XSD-файл в том же каталоге, что и XML-файл выше, или использовать URL-адрес файловой системы.

Если вы используете URL-адрес на основе файла, не забудьте правильно экранировать значение URL-адреса, когда вы пишете в Атрибут xsi:noNamespaceSchemaLocation . Например, если в вашей системе есть файл схемы по следующему пути:

 C:\Documents and Settings\All Users\Application Data\My Application\MyData.xsd
 

Вам необходимо переформатировать строку URL-адреса, чтобы она была правильно экранирована, чтобы ее можно было правильно использовать для поиска файла:

 xsi:noNamespaceSchemaLocation="file://C://Documents and Settings//All Users/ /Данные приложения//Мое приложение//MyData.xsd"
 

Другая возможность — поместить схему в тот же каталог, что и XML, который на нее ссылается. В этом случае вам нужно только указать имя файла, например «Mydata.xsd», чтобы MSXML мог найти и использовать файл.

Примечание

Если файл Mydata.xsd не является допустимым XML, MSXML проигнорирует его и проверит только правильно сформированный XML. Чтобы избежать такого результата, рекомендуется всегда сначала проверять файлы схемы, прежде чем пытаться использовать их для проверки других документов.

Дополнительные сведения см. в разделе Пример 1: Проверка с помощью noNamespaceSchemaLocation на C/C++, Пример 1: Проверка с помощью noNamespaceSchemaLocation (Visual Basic) или Пример 1: Проверка с помощью noNamespaceSchemaLocation (JScript).

Использование schemaLocation

Атрибут xsi:schemaLocation хорошо работает в ситуациях, когда префиксы пространства имен явно объявлены и используются в XML-документе, который вы хотите проверить.

В следующем примере показан XML-документ, который ссылается на внешнюю схему XSD, MyData.xsd для нас при проверке узлов, которые находятся в URI пространства имен urn:MyData, который сопоставляется с префиксом пространства имен MyData:.

 <каталог xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
      xsi:schemaLocation="urn:MyData http://www.example.com/MyData.xsd"
      
         Представление XML
         Ричард Лайт
      
   
 

Чтобы файл MyData. xsd был связан с вами и использовался для проверки элементов и узлов атрибутов, начинающихся с «MyData:», схема должна использовать и содержать следующие атрибуты схемы:

 
 

Эти атрибуты объявляют URI пространства имен «urn:MyData» и префикс пространства имен «MyData:», чтобы они соответствовали тому, как эти объявления были сделаны в файле XML. Если они не совпадают, схема в указанном месте никогда не будет вызываться во время проверки.

В этом примере показано, что схема размещена на веб-сайте http://www.example.com. При желании вы можете найти XSD-файл в том же каталоге, что и XML-файл выше, или использовать URL-адрес файловой системы.

Если вы используете URL-адрес на основе файла, обязательно правильно экранируйте значение URL-адреса при записи в атрибуте xsi:schemaLocation . Например, если в вашей системе есть файл схемы по следующему пути:

 C:\Documents and Settings\All Users\Application Data\My Application\MyData.xsd
 

Вам необходимо переформатировать строку URL-адреса, чтобы она была правильно экранирована, чтобы ее можно было правильно использовать для поиска файла:

 xsi:schemaLocation="urn:MyData file://C://Documents and Settings// Все пользователи//Данные приложения//Мое приложение//MyData.xsd"
 

Другая возможность — поместить схему в тот же каталог, что и XML, который на нее ссылается. В этом случае вам нужно только указать имя файла следующим образом:

 xsi:schemaLocation="urn:MyData MyData.xsd"
 

для MSXML, чтобы найти и использовать файл.

Примечание

Если файл MyData.xsd не является допустимым XML, MSXML проигнорирует его и проверит только правильно сформированный XML. Чтобы избежать такого результата, рекомендуется всегда сначала проверять файлы схемы, прежде чем пытаться использовать их для проверки других документов.

Дополнительные сведения см. в разделе Пример 2: Проверка с помощью schemaLocation в Примере 2: Проверка с помощью schemaLocation (C-C++), Пример 2: Проверка с помощью schemaLocation (Visual Basic) или Пример 2: Проверка с помощью schemaLocation (JScript).

Использование кэша схемы

MSXML также предоставляет средства для подключения и использования кэша схемы для хранения, загрузки и подключения схемы к XML-документу, например, в следующем фрагменте кода VBScript:

 'Создать кэш схемы и добавьте к нему схему XSD.
установить oSC = CreateObject("MSXML2.XMLSchemaCache.6.0")
oSC.Добавить "urn:MyData", "http://www.example.com/MyData.xsd"
'Создайте документ DOM, назначив кеш его свойству схемы.
установить oXD = CreateObject("MSXML2.DOMDocument.6.0")
oXD.schemas = oSC
'Задайте свойства, загрузите и проверьте их в XML DOM.
 

В этом примере показано, что схема размещена на веб-сайте http://www.example.com. При желании вы можете найти XSD-файл в том же каталоге, что и XML-файл выше, или использовать URL-адрес файловой системы.

Если вы используете URL-адрес на основе файла, обязательно правильно экранируйте значение URL-адреса при записи в атрибуте xsi:schemaLocation . Например, если в вашей системе есть файл схемы по следующему пути:

 C:\Documents and Settings\All Users\Application Data\My Application\MyData.xsd
 

Вам необходимо переформатировать строку URL-адреса, чтобы она была правильно экранирована, чтобы ее можно было правильно использовать для поиска файла:

 oSC.Добавить "urn:MyData", "C://Documents and Settings//All Users" //Данные приложения//Мое приложение//MyData.xsd"
 

Другая возможность — поместить схему в тот же каталог, что и приложение, использующее кэш схемы. В этом случае вам нужно только указать имя файла следующим образом:

 oSC.Add "urn:MyData", "MyData.xsd"
 

для MSXML, чтобы найти и использовать файл. Если MSXML не может найти файл на основе информации, предоставленной вами для второго параметра, будет выдана ошибка.