Разное

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

Содержание

Что такое XML / Хабр

Если вы тестируете API, то должны знать про два основных формата передачи данных:

  • XML — используется в SOAP (всегда) и REST-запросах (реже);
  • JSON — используется в REST-запросах.

Сегодня я расскажу вам про XML.

XML, в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных. Так что увидеть его можно не только в API, но и в коде.

Этот формат рекомендован Консорциумом Всемирной паутины (W3C), поэтому он часто используется для передачи данных по API. В SOAP API это вообще единственно возможный формат входных и выходных данных!

См также:
Что такое API — общее знакомство с API
Введение в SOAP и REST: что это и с чем едят — видео про разницу между SOAP и REST.

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

Содержание

Как устроен XML

Возьмем пример из документации подсказок Дадаты по ФИО:

<req>
<query>Виктор Иван</query>
<count>7</count>
</req>

И разберемся, что означает эта запись.

Теги

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

<tag>

Текст внутри угловых скобок — название тега.
Тега всегда два:

  • Открывающий — текст внутри угловых скобок
    <tag>
  • Закрывающий — тот же текст (это важно!), но добавляется символ «/»
    </tag>

Ой, ну ладно, подловили! Не всегда. Бывают еще пустые элементы, у них один тег и открывающий, и закрывающий одновременно. Но об этом чуть позже!

С помощью тегов мы показываем системе «вот тут начинается элемент, а вот тут заканчивается». Это как дорожные знаки:

— На въезде в город написано его название: Москва

— На выезде написано то же самое название, но перечеркнутое: Москва*

* Пример с дорожными знаками я когда-то давно прочитала в статье Яндекса, только ссылку уже не помню. А пример отличный!

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

В любом XML-документе есть корневой элемент. Это тег, с которого документ начинается, и которым заканчивается. В случае REST API документ — это запрос, который отправляет система. Или ответ, который она получает.

Чтобы обозначить этот запрос, нам нужен корневой элемент. В подсказках корневой элемент — «req».

Он мог бы называться по другому:

<main>
<sugg>

Да как угодно. Он показывает начало и конец нашего запроса, не более того. А вот внутри уже идет тело документа — сам запрос. Те параметры, которые мы передаем внешней системе. Разумеется, они тоже будут в тегах, но уже в обычных, а не корневых.

Значение элемента

Значение элемента хранится между открывающим и закрывающим тегами. Это может быть число, строка, или даже вложенные теги!

Вот у нас есть тег «query». Он обозначает запрос, который мы отправляем в подсказки.

Внутри — значение запроса.

Это как если бы мы вбили строку «Виктор Иван» в GUI (графическом интерфейсе пользователя):

Пользователю лишняя обвязка не нужна, ему нужна красивая формочка. А вот системе надо как-то передать, что «пользователь ввел именно это». Как показать ей, где начинается и заканчивается переданное значение? Для этого и используются теги.

Система видит тег «query» и понимает, что внутри него «строка, по которой нужно вернуть подсказки».

Параметр count = 7 обозначает, сколько подсказок вернуть в ответе. Если тыкать подсказки на демо-форме Дадаты, нам вернется 7 подсказок. Это потому, что туда вшито как раз значение count = 7. А вот если обратиться к документации метода, count можно выбрать от 1 до 20.

Откройте консоль разработчика через f12, вкладку Network, и посмотрите, какой запрос отправляется на сервер. Там будет значение count = 7.

См также:
Что тестировщику надо знать про панель разработчика — подробнее о том, как использовать консоль.

Обратите внимание:

  • Виктор Иван — строка
  • 7 — число

Но оба значения идут без кавычек. В XML нам нет нужды брать строковое значение в кавычки (а вот в JSON это сделать придется).

Атрибуты элемента

У элемента могут быть атрибуты — один или несколько. Их мы указываем внутри отрывающегося тега после названия тега через пробел в виде

название_атрибута = «значение атрибута»

Например:

<query attr1=“value 1”>Виктор Иван</query>
<query attr1=“value 1” attr2=“value 2”>Виктор Иван</query>

Зачем это нужно? Из атрибутов принимающая API-запрос система понимает, что такое ей вообще пришло.

Например, мы делаем поиск по системе, ищем клиентов с именем Олег. Отправляем простой запрос:

<query>Олег</query>

А в ответ получаем целую пачку Олегов! С разными датами рождения, номерами телефонов и другими данными. Допустим, что один из результатов поиска выглядит так:

<party type="PHYSICAL" sourceSystem="AL" rawId="2">
    <field name=“name">Олег </field>
    <field name="birthdate">02.01.1980</field>
    <attribute type="PHONE" rawId="AL.2.PH.1">
        <field name="type">MOBILE</field>
        <field name="number">+7 916 1234567</field>
    </attribute>
</party>

Давайте разберем эту запись. У нас есть основной элемент party.

У него есть 3 атрибута:

  • type = «PHYSICAL» — тип возвращаемых данных. Нужен, если система умеет работать с разными типами: ФЛ, ЮЛ, ИП. Тогда благодаря этому атрибуту мы понимаем, с чем именно имеем дело и какие поля у нас будут внутри. А они будут отличаться! У физика это может быть ФИО, дата рождения ИНН, а у юр лица — название компании, ОГРН и КПП
  • sourceSystem = «AL» — исходная система. Возможно, нас интересуют только физ лица из одной системы, будем делать отсев по этому атрибуту.
  • rawId = «2» — идентификатор в исходной системе. Он нужен, если мы шлем запрос на обновление клиента, а не на поиск. Как понять, кого обновлять? По связке sourceSystem + rawId!

Внутри party есть элементы field.

У элементов field есть атрибут name. Значение атрибута — название поля: имя, дата рождения, тип или номер телефона. Так мы понимаем, что скрывается под конкретным field.

Это удобно с точки зрения поддержки, когда у вас коробочный продукт и 10+ заказчиков. У каждого заказчика будет свой набор полей: у кого-то в системе есть ИНН, у кого-то нету, одному важна дата рождения, другому нет, и т.д.

Но, несмотря на разницу моделей, у всех заказчиков будет одна XSD-схема (которая описывает запрос и ответ):

— есть элемент party;

— у него есть элементы field;

— у каждого элемента field есть атрибут name, в котором хранится название поля.

А вот конкретные названия полей уже можно не описывать в XSD. Их уже «смотрите в ТЗ». Конечно, когда заказчик один или вы делаете ПО для себя или «вообще для всех», удобнее использовать именованные поля — то есть «говорящие» теги. Какие плюшки у этого подхода:

— При чтении XSD сразу видны реальные поля. ТЗ может устареть, а код будет актуален.

— Запрос легко дернуть вручную в SOAP Ui — он сразу создаст все нужные поля, нужно только значениями заполнить. Это удобно тестировщику + заказчик иногда так тестирует, ему тоже хорошо.

В общем, любой подход имеет право на существование. Надо смотреть по проекту, что будет удобнее именно вам. У меня в примере неговорящие названия элементов — все как один будут field. А вот по атрибутам уже можно понять, что это такое.

Помимо элементов field в party есть элемент attribute. Не путайте xml-нотацию и бизнес-прочтение:

  • с точки зрения бизнеса это атрибут физ лица, отсюда и название элемента — attribute.
  • с точки зрения xml — это элемент (не атрибут!), просто его назвали attribute. XML все равно (почти), как вы будете называть элементы, так что это допустимо.

У элемента attribute есть атрибуты:

  • type = «PHONE» — тип атрибута. Они ведь разные могут быть: телефон, адрес, емейл…
  • rawId = «AL.2.PH.1» — идентификатор в исходной системе. Он нужен для обновления. Ведь у одного клиента может быть несколько телефонов, как без ID понять, какой именно обновляется?

Такая вот XML-ка получилась. Причем упрощенная. В реальных системах, где хранятся физ лица, данных сильно больше: штук 20 полей самого физ лица, несколько адресов, телефонов, емейл-адресов…

Но прочитать даже огромную XML не составит труда, если вы знаете, что где. И если она отформатирована — вложенные элементы сдвинуты вправо, остальные на одном уровне. Без форматирования будет тяжеловато…

А так всё просто — у нас есть элементы, заключенные в теги. Внутри тегов — название элемента. Если после названия идет что-то через пробел: это атрибуты элемента.

XML пролог

Иногда вверху XML документа можно увидеть что-то похожее:

<?xml version="1.0" encoding="UTF-8"?>

Эта строка называется XML прологом. Она показывает версию XML, который используется в документе, а также кодировку. Пролог необязателен, если его нет — это ок. Но если он есть, то это должна быть первая строка XML документа.

UTF-8 — кодировка XML документов по умолчанию.

XSD-схема

XSD (XML Schema Definition) — это описание вашего XML. Как он должен выглядеть, что в нем должно быть? Это ТЗ, написанное на языке машины — ведь схему мы пишем… Тоже в формате XML! Получается XML, который описывает другой XML.

Фишка в том, что проверку по схеме можно делегировать машине. И разработчику даже не надо расписывать каждую проверку. Достаточно сказать «вот схема, проверяй по ней».

Если мы создаем SOAP-метод, то указываем в схеме:

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

Теперь, когда к нам приходит какой-то запрос, он сперва проверяется на корректность по схеме. Если запрос правильный, запускаем метод, отрабатываем бизнес-логику. А она может быть сложной и ресурсоемкой! Например, сделать выборку из многомиллионной базы. Или провести с десяток проверок по разным таблицам базы данных…

Поэтому зачем запускать сложную процедуру, если запрос заведом «плохой»? И выдавать ошибку через 5 минут, а не сразу? Валидация по схеме помогает быстро отсеять явно невалидные запросы, не нагружая систему.

Более того, похожую защиту ставят и некоторые программы-клиенты для отправки запросов. Например, SOAP Ui умеет проверять ваш запрос на well formed xml, и он просто не отправит его на сервер, если вы облажались. Экономит время на передачу данных, молодец!

А простому пользователю вашего SOAP API схема помогает понять, как составить запрос. Кто такой «простой пользователь»?

  1. Разработчик системы, использующей ваше API — ему надо прописать в коде, что именно отправлять из его системы в вашу.
  2. Тестировщик, которому надо это самое API проверить — ему надо понимать, как формируется запрос.

Да-да, в идеале у нас есть подробное ТЗ, где всё хорошо описано. Но увы и ах, такое есть не всегда. Иногда ТЗ просто нет, а иногда оно устарело. А вот схема не устареет, потому что обновляется при обновлении кода. И она как раз помогает понять, как запрос должен выглядеть.

Итого, как используется схема при разработке SOAP API:

  • Наш разработчик пишет XSD-схему для API запроса: нужно передать элемент такой-то, у которого будут такие-то дочерние, с такими-то типами данных. Эти обязательные, те нет.
  • Разработчик системы-заказчика, которая интегрируется с нашей, читает эту схему и строит свои запросы по ней.
  • Система-заказчик отправляет запросы нам.
  • Наша система проверяет запросы по XSD — если что-то не так, сразу отлуп.
  • Если по XSD запрос проверку прошел — включаем бизнес-логику!

А теперь давайте посмотрим, как схема может выглядеть! Возьмем для примера метод doRegister в Users. Чтобы отправить запрос, мы должны передать email, name и password. Есть куча способов написать запрос правильно и неправильно:
Попробуем написать для него схему. В запросе должны быть 3 элемента (email, name, password) с типом «string» (строка). Пишем:

<xs:element name="doRegister ">
   <xs:complexType>
   <xs:sequence>
     <xs:element name="email" type="xs:string"/>
     <xs:element name="name" type="xs:string"/>
     <xs:element name="password" type="xs:string"/>
   </xs:sequence>
   </xs:complexType>
</xs:element>

А в WSDl сервиса она записана еще проще:

<message name="doRegisterRequest">
   <part name="email" type="xsd:string"/>
   <part name="name" type="xsd:string"/>
   <part name="password" type="xsd:string"/>
</message>

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

<xsd:complexType name="Test">
   <xsd:sequence>
     <xsd:element name="value"   type="xsd:string"/>
     <xsd:element name="include" type="xsd:boolean" minOccurs="0" default="true"/>
     <xsd:element name="count" type="xsd:int" minOccurs="0" length="20"/>
     <xsd:element name="user" type="USER" minOccurs="0"/>
   </xsd:sequence>
</xsd:complexType>

А еще в схеме можно ссылаться на другую схему, что упрощает написание кода — можно переиспользовать схемы для разных задач.

См также:
XSD — умный XML — полезная статья с хабра
Язык определения схем XSD — тут удобные таблички со значениями, которые можно использовать
Язык описания схем XSD (XML-Schema)
Пример XML схемы в учебнике
Официальный сайт w3.org

Практика: составляем свой запрос

Ок, теперь мы знаем, как «прочитать» запрос для API-метода в формате XML. Но как его составить по ТЗ? Давайте попробуем. Смотрим в документацию. И вот почему я даю пример из Дадаты — там классная документация!

Что, если я хочу, чтобы мне вернуть только женские ФИО, начинающиеся на «Ан»? Берем наш исходный пример:

<req>
  <query>Виктор Иван</query>
  <count>7</count>
</req>

В первую очередь меняем сам запрос. Теперь это уже не «Виктор Иван», а «Ан»:

<req>
  <query>Ан</query>
  <count>7</count>
</req>

Далее смотрим в ТЗ. Как вернуть только женские подсказки? Есть специальный параметр — gender. Название параметра — это название тегов. А внутри уже ставим пол. «Женский» по английски будет FEMALE, в документации также. Итого получили:

<req>
  <query>Ан</query>
  <count>7</count>
  <gender>FEMALE</gender>
</req>

Ненужное можно удалить. Если нас не волнует количество подсказок, параметр count выкидываем. Ведь, согласно документации, он необязательный. Получили запрос:

<req>
  <query>Ан</query>
  <gender>FEMALE</gender>
</req>

Вот и все! Взяли за основу пример, поменяли одно значение, один параметр добавили, один удалили. Не так уж и сложно. Особенно, когда есть подробное ТЗ и пример )))

Попробуй сам!

Напишите запрос для метода MagicSearch в Users. Мы хотим найти всех Ивановых по полному совпадению, на которых висят актуальные задачи.

Well Formed XML

Разработчик сам решает, какой XML будет считаться правильным, а какой нет. Но есть общие правила, которые нельзя нарушать. XML должен быть well formed, то есть синтаксически корректный.

Чтобы проверить XML на синтаксис, можно использовать любой XML Validator (так и гуглите). Я рекомендую сайт w3schools. Там есть сам валидатор + описание типичных ошибок с примерами.

В готовый валидатор вы просто вставляете свой XML (например, запрос для сервера) и смотрите, всё ли с ним хорошо. Но можете проверить его и сами. Пройдитесь по правилам синтаксиса и посмотрите, следует ли им ваш запрос.

Правила well formed XML:

  1. Есть корневой элемент.
  2. У каждого элемента есть закрывающийся тег.
  3. Теги регистрозависимы!
  4. Соблюдается правильная вложенность элементов.
  5. Атрибуты оформлены в кавычках.

Давайте пройдемся по каждому правилу и обсудим, как нам применять их в тестировании. То есть как правильно «ломать» запрос, проверяя его на well-formed xml. Зачем это нужно? Посмотреть на фидбек от системы. Сможете ли вы по тексту ошибки понять, где именно облажались?

См также:
Сообщения об ошибках — тоже документация, тестируйте их! — зачем тестировать сообщения об ошибках

1. Есть корневой элемент

Нельзя просто положить рядышком 2 XML и полагать, что «система сама разберется, что это два запроса, а не один». Не разберется. Потому что не должна.

И если у вас будет лежать несколько тегов подряд без общего родителя — это плохой xml, не well formed. Всегда должен быть корневой элемент:

Что мы делаем для тестирования этого условия? Правильно, удаляем из нашего запроса корневые теги!

2. У каждого элемента есть закрывающийся тег

Тут все просто — если тег где-то открылся, он должен где-то закрыться. Хотите сломать? Удалите закрывающийся тег любого элемента.

Но тут стоит заметить, что тег может быть один. Если элемент пустой, мы можем обойтись одним тегом, закрыв его в конце:

<name/>

Это тоже самое, что передать в нем пустое значение

<name></name>

Аналогично сервер может вернуть нам пустое значение тега. Можно попробовать послать пустые поля в Users в методе FullUpdateUser. И в запросе это допустимо (я отправила пустым поле name1), и в ответе SOAP Ui нам именно так и отрисовывает пустые поля.

Итого — если есть открывающийся тег, должен быть закрывающийся. Либо это будет один тег со слешом в конце.

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

3. Теги регистрозависимы

Как написали открывающий — также пишем и закрывающий. ТОЧНО ТАК ЖЕ! А не так, как захотелось.

А вот для тестирования меняем регистр одной из частей. Такой XML будет невалидным

4. Правильная вложенность элементов

Элементы могут идти друг за другом

Один элемент может быть вложен в другой

Но накладываться друг на друга элементы НЕ могут!

5. Атрибуты оформлены в кавычках

Даже если вы считаете атрибут числом, он будет в кавычках:

<query attr1=“123”>Виктор Иван</query>
<query attr1=“атрибутик” attr2=“123” >Виктор Иван</query>

Для тестирования пробуем передать его без кавычек:

<query attr1=123>Виктор Иван</query>

Итого

XML (eXtensible Markup Language) используется для хранения и передачи данных.

Передача данных — это запросы и ответы в API-методах. Если вы отправляете SOAP-запрос, вы априори работаете именно с этим форматом. Потому что SOAP передает данные только в XML. Если вы используете REST, то там возможны варианты — или XML, или JSON.

Хранение данных — это когда XML встречается внутри кода. Его легко понимает как машина, так и человек. В формате XML можно описывать какие-то правила, которые будут применяться к данным, или что-то еще.

Вот пример использования XML в коде open-source проекта folks. Я не знаю, что именно делает JacksonJsonProvider, но могу «прочитать» этот код — есть функционал, который мы будем использовать (featuresToEnable), и есть тот, что нам не нужен(featuresToDisable).

Формат XML подчиняется стандартам. Синтаксически некорректный запрос даже на сервер не уйдет, его еще клиент порежет. Сначала проверка на well formed, потом уже бизнес-логика.

Правила well formed XML:

  1. Есть корневой элемент.
  2. У каждого элемента есть закрывающийся тег.
  3. Теги регистрозависимы!
  4. Соблюдается правильная вложенность элементов.
  5. Атрибуты оформлены в кавычках.

Если вы тестировщик, то при тестировании запросов в формате XML обязательно попробуйте нарушить каждое правило! Да, система должна уметь обрабатывать такие ошибки и возвращать адекватное сообщение об ошибке. Но далеко не всегда она это делает.

А если система публичная и возвращает пустой ответ на некорректный запрос — это плохо. Потому что разработчик другой системы налажает в запросе, а по пустому ответу даже не поймет, где именно. И будет приставать к поддержке: «Что же у меня не так?», кидая информацию по кусочкам и в виде скринов исходного кода. Оно вам надо? Нет? Тогда убедитесь, что система выдает понятное сообщение об ошибке!

См также:

Что такое XML
Учебник по XML
Изучаем XML. Эрик Рэй (книга по XML)
Заметки о XML и XLST

PS — больше полезных статей ищите в моем блоге по метке «полезное». А полезные видео — на моем youtube-канале

XML — синтаксис — CoderLessons.com

В этой главе мы обсудим простые правила синтаксиса для написания XML-документа. Ниже приведен полный документ XML —

<?xml version = "1.0"?>
<contact-info>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</contact-info>

Вы можете заметить, что в приведенном выше примере есть два вида информации:

  • Разметка, вроде <контактная информация>

  • Текст или символьные данные, Tutorials Point и (040) 123-4567 .

Разметка, вроде <контактная информация>

Текст или символьные данные, Tutorials Point и (040) 123-4567 .

Следующая диаграмма изображает правила синтаксиса для записи разметки и текста разного типа в XML-документе.

Давайте рассмотрим каждый компонент вышеприведенной диаграммы в деталях.

Декларация XML

XML-документ может дополнительно иметь декларацию XML. Это написано следующим образом —

<?xml version = "1.0" encoding = "UTF-8"?>

Где версия — это версия XML, а кодировка указывает кодировку символов, используемую в документе.

Синтаксические правила для декларации XML

  • Декларация XML чувствительна к регистру и должна начинаться с « <? Xml> », где « xml » пишется строчными буквами.

  • Если документ содержит декларацию XML, то он строго должен быть первым утверждением документа XML.

  • Декларация XML строго должна быть первым утверждением в документе XML.

  • Протокол HTTP может переопределить значение кодировки, которое вы указали в объявлении XML.

Декларация XML чувствительна к регистру и должна начинаться с « <? Xml> », где « xml » пишется строчными буквами.

Если документ содержит декларацию XML, то он строго должен быть первым утверждением документа XML.

Декларация XML строго должна быть первым утверждением в документе XML.

Протокол HTTP может переопределить значение кодировки, которое вы указали в объявлении XML.

Теги и элементы

Файл XML структурирован несколькими XML-элементами, также называемыми XML-узлами или XML-тегами. Имена XML-элементов заключены в треугольные скобки <>, как показано ниже —

<element>

Синтаксические правила для тегов и элементов

Синтаксис элемента — каждый XML-элемент должен быть закрыт либо начальным, либо конечным элементом, как показано ниже —

<element>....</element>

или в простых случаях, просто так —

<element/>

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

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

<?xml version = "1.0"?>
<contact-info>
<company>TutorialsPoint
<contact-info>
</company>

В следующем примере показаны правильные вложенные теги —

<?xml version = "1.0"?>
<contact-info>
   <company>TutorialsPoint</company>
<contact-info>

Корневой элемент — XML-документ может иметь только один корневой элемент. Например, следующее не является правильным XML-документом, поскольку элементы x и y находятся на верхнем уровне без корневого элемента —

<x>...</x>
<y>...</y>

В следующем примере показан правильно сформированный документ XML:

<root>
   <x>...</x>
   <y>...</y>
</root>

Чувствительность к регистру — Имена XML-элементов чувствительны к регистру. Это означает, что имя начального и конечного элементов должно быть точно в одном и том же случае.

Например, <контактная информация> отличается от <контактная информация>

Атрибуты XML

Атрибут задает одно свойство для элемента, используя пару имя / значение. XML-элемент может иметь один или несколько атрибутов. Например —

<a href = "http://www.tutorialspoint.com/">Tutorialspoint!</a>

Здесь href — имя атрибута, а http://www.tutorialspoint.com/ — значение атрибута.

Синтаксические правила для атрибутов XML

  • Имена атрибутов в XML (в отличие от HTML) чувствительны к регистру. То есть HREF и href считаются двумя различными атрибутами XML.

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

Имена атрибутов в XML (в отличие от HTML) чувствительны к регистру. То есть HREF и href считаются двумя различными атрибутами XML.

Один и тот же атрибут не может иметь два значения в синтаксисе. В следующем примере показан неверный синтаксис, поскольку атрибут b указан дважды

<a b = "x" c = "y" b = "z">....</a>
  • Имена атрибутов определяются без кавычек, тогда как значения атрибутов всегда должны появляться в кавычках. Следующий пример демонстрирует неправильный синтаксис XML

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

<a b = x>....</a>

В приведенном выше синтаксисе значение атрибута не определено в кавычках.

XML ссылки

Ссылки обычно позволяют добавлять или включать дополнительный текст или разметку в документ XML. Ссылки всегда начинаются с символа «&», который является зарезервированным символом, и заканчиваются символом «;». XML имеет два типа ссылок:

  • Ссылки на сущности — ссылка на сущность содержит имя между начальным и конечным разделителями. Например, & amp; где amp это имя . Имя относится к предварительно определенной строке текста и / или разметки.

  • Ссылки на символы — они содержат ссылки, такие как & # 65; , содержит хеш-знак («#»), за которым следует число. Число всегда относится к коду Unicode символа. В этом случае 65 относится к алфавиту «А».

Ссылки на сущности — ссылка на сущность содержит имя между начальным и конечным разделителями. Например, & amp; где amp это имя . Имя относится к предварительно определенной строке текста и / или разметки.

Ссылки на символы — они содержат ссылки, такие как & # 65; , содержит хеш-знак («#»), за которым следует число. Число всегда относится к коду Unicode символа. В этом случае 65 относится к алфавиту «А».

Текст XML

Имена XML-элементов и XML-атрибутов чувствительны к регистру, что означает, что имена начальных и конечных элементов должны быть записаны в одном и том же регистре. Чтобы избежать проблем с кодировкой символов, все файлы XML должны быть сохранены как файлы Unicode UTF-8 или UTF-16.

Пробельные символы, такие как пробелы, табуляции и разрывы строк между XML-элементами и между XML-атрибутами, будут игнорироваться.

Некоторые символы зарезервированы самим синтаксисом XML. Следовательно, они не могут быть использованы напрямую. Для их использования используются некоторые замещающие объекты, которые перечислены ниже:

10 лучших XML-редакторов | XML

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

Итак, представляем вашему вниманию подборку редакторов XML. Стоит отметить, что все эти редакторы можно скачать бесплатно.

Free XML Editor представляет собой простой, но достаточно многофункциональный текстовый редактор, который можно использовать для просмотра и редактирования xml-файлов.

Ключевые свойства:

  • Генерация кода C++;
  • Предварительный просмотр;
  • Парсинг и конвертирование текстовых файлов;
  • Выделение и кодировка для Unicode.

XML редактор Xsemmel позволяет редактировать сразу несколько файлов, а также имеет встроенную подсветку синтаксиса и возможность сравнивать файлы между собой.

Основные функции:

  • XSD-валидация нескольких XML-файлов;
  • Возможность сравнивать XML-файлы;
  • Древовидный просмотр;
  • Валидация по схеме XSD.

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

Возможности:

  • Простой и понятный пользовательский интерфейс;
  • Не нужно устанавливать;
  • Поддерживает технологию drag and drop.

XDoc представляет собой простое программное обеспечение, написанное на платформе Java, которое можно использовать для редактирования XML-файлов.

Особенности бесплатного редактора XML:

  • Встроенные схемы W3C;
  • Поддержка создания собственных пространств имен;
  • Возможность создания новых документов для пространств имен.

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

Возможности:

  • XSLT-переводы;
  • Визуальный XML редактор;
  • Поддержка текстовых форматов UNIX и Windows.

XML Fox – бесплатный инструмент, который поддерживает редактирование и другие операции с XML-файлами.

Возможности:

  • XML-просмотр, древовидный просмотр, режимы сетки и редактирования XML-скриптов;
  • Интерактивный пользовательский интерфейс;
  • Возможность сохранять XML в XSD-формате.

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

Возможности:

  • Встроенная поддержка W3C Extensible;
  • Возможность трансформации таблиц стилей;
  • Возможность трансформации XML-структур в реальном времени;
  • Просмотр HTML;
  • Построчный парсинг файлов.

XML-файлы благодаря своей стабильности, доступности и обмену стали популярными среди дизайнеров. Мы надеемся, что вы нашли подходящий инструмент в этой подборке! Если у вас на примете есть другие программы, то обязательно поделитесь ими в комментариях!

Данная публикация представляет собой перевод статьи «10 Best XML Editor Software Download» , подготовленной дружной командой проекта Интернет-технологии.ру

Создание XML-документа с помощью блокнота XML



  • Чтение занимает 2 мин

В этой статье

В этой статье описывается, как создать XML-документ с помощью Блокнота в формате XML.

Исходная версия продукта:   Блокнот Microsoft XML
Исходный номер статьи базы знаний:   296560

Аннотация

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

Дополнительная информация

Чтобы создать XML-документ с правильным форматом с помощью блокнота XML, выполните следующие действия:

  1. Чтобы открыть Блокнот в формате XML, нажмите кнопку Пуск , выберите пункты программы , Блокнот, а затем — Блокнот Microsoft XML . В интерфейсе показаны две области. В области Структура слева отображается начало древовидной структуры XML с Root_Element Child_Element уже созданным и уже созданным. Пустые текстовые поля в области значений принимают соответствующие значения.

  2. Перейдите Root_Element в Каталог и Child_Element в книгу и добавьте атрибут и три дочерних элемента в дочерний элемент Book .

    Примечание

    При вставке следующих значений не включайте апострофы. Блокнот XML вставляет их в соответствии с требованиями XML-документа.

    1. Чтобы вставить атрибут для книги, щелкните книгу правой кнопкой мыши, наведите указатель мыши на INSERT и выберите атрибут . Рядом со значком куба введите идентификатор . Чтобы вставить значение для этого атрибута, выделите идентификатор и введите Bk101 в соответствующем текстовом поле в области значений .

    2. Чтобы вставить дочерний элемент для книги , щелкните правой кнопкой мыши значок папки рядом с пунктом Книга , наведите указатель мыши на INSERT и выберите дочерний элемент . Отображается значок листа. Введите Автор рядом с этим значком и введите Гамбарделла , Мэтью в соответствующем текстовом поле в области значений .

    3. Добавьте еще два дочерних элемента: Title и Жанр . Введите Руководство разработчика XML и компьютер в соответствующие текстовые поля в области значения .

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

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

  5. Чтобы добавить комментарии к существующим элементам, выделите узел, после которого вы хотите вставить комментарий. В меню Вставка выберите пункт Примечание . Если выделенный узел развернут, комментарий вставляется в выделенный узел.

  6. Чтобы изменить тип узла, выделите узел, который требуется изменить. В меню Сервис наведите указатель мыши на пункт изменить и выберите нужный тип.

    Примечание

    Невозможно изменить тип корневого узла или узлов с дочерними узлами.

  7. Чтобы просмотреть XML-источник документа, в меню вид выберите пункт источник . Пример выходных данных похож на следующий:

    <catalog>
        <book>
            <author>Gambardella, Matthew</author>
            <title>XML Developer's Guide</title>
            <genre>Computer</genre>
            text1
            </book>
            <!--Comment1-->
            <book>
            <!--Comment2-->
            <author>Ralls, Kim</author>
            <title>Midnight Rain</title>
            <genre>Fantasy</genre>
        </book>
    </catalog>
    

    Примечание

    В нижней части окна представления появится следующее сообщение:

    Текущее XML-определение правильно сформировано.

    Кроме того, обратите внимание на то, что объявление XML или инструкции по обработке необходимо добавить с помощью внешнего редактора, например Блокнота.

  8. Чтобы сохранить XML-документ, в меню Файл выберите команду сохранить . Чтобы выйти из XML-файла «Блокнот», в меню файл выберите команду выход .

Ссылки

I. Коротко об XML — Документация Краткое руководство по XML 01.12.2015 v2

Введение в XML

XML ( англ. eXtensible Markup Language) — расширяемый язык разметки,
предназначенный для хранения и передачи данных.

Простейший XML-документ выглядит следующим образом:

<?xml version="1.0" encoding="windows-1251"?>
<book category="WEB">
   <title lang="en">Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
   <price></price>
</book>

Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа <book> (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title, author, year, price). Последняя строка определяет конец корневого элемента </book> (закрывающий тег).

Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.

Информация, заключенная между тегами, называется содержимым или значением элемента: <author>Erik T. Ray</author>. Т.е. элемент author принимает значение Erik T. Ray. Элементы могут вообще не принимать значения.

Элементы могут содержать атрибуты, так, например, открывающий тег <title lang="en"> имеет атрибут lang, который принимает значение en. Значения атрибутов заключаются в кавычки (двойные или ординарные).

Некоторые элементы, не содержащие значений, допустимо записывать без закрывающего тега. В таком случае символ / ставится в конце открывающего тега:

<name first="Иван" second="Петрович" />

Структура XML

XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.

Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.

Все элементы могут иметь подэлементы (дочерние элементы):

<корневой>
   <потомок>
     <подпотомок>.....</подпотомок>
   </потомок>
</корневой>

Правила синтаксиса (Валидность)

Структура XML документа должна соответствовать определенным правилам.
XML документ отвечающий этим правилам называется валидным (англ.
Valid — правильный) или синтаксически верным. Соответственно, если
документ не отвечает правилам, он является невалидным .

Основные правила синтаксиса XML:

  1. Теги XML регистрозависимы — теги XML являются регистрозависимыми. Так, тег <Letter> не то же самое, что тег <letter>.

Открывающий и закрывающий теги должны определяться в одном регистре:

<Message>Это неправильно</message>
<message>Это правильно</message>
  1. XML элементы должны соблюдать корректную вложенность:
<b><i>Некорректная вложенность</b></i>
<b><i>Корректная вложенность</i></b>
  1. У XML документа должен быть корневой элемент — XML документ должен содержать один элемент, который будет родительским для всех других элементов. Он называется корневым элементом.

Примечание

В большинстве XML файлов отчетов для ФНС корневым элементом является <Файл></Файл>. После закрывающего тега </Файл> больше ничего быть не должно.

  1. Значения XML атрибутов должны заключаться в кавычки:
<note date="12/11/2007">Корректная запись</note>
<note date=12/11/2007>Некорреткная запись</note>

Сущности

Некоторые символы в XML имеют особые значения и являются служебными. Если вы поместите,
например, символ < внутри XML элемента, то будет
сгенерирована ошибка, так как парсер интерпретирует его, как начало
нового элемента.

IBM Developer Россия : Введение в XML

Вам необходима помощь в том чтобы начать работать с XML? В разделе XML на
сайте developerWorks содержится множество статей, руководств и советов,
созданных с целью помочь разработчикам в использовании технологий XML.
Однако начинающим разработчикам, которые только приступают к изучению
XML, может быть трудно сориентироваться в огромном объеме доступных
материалов. На этой странице представлен общий обзор XML, который будет
полезен читателям, которые пока не знают, с чего начать его изучение.
Она поможет вам организованно осваивать XML, независимо от того, хотите
ли вы просто разобраться с XML, научиться работать с Ajax,
mashup-приложениями, RSS или подготовиться к сдаче сертификационного
экзамена.

Что такое XML?

XML, что означает «расширяемый язык разметки» (EXtensible Markup
Language) — это платформенно-независимый способ представления данных.
Выражаясь простым языком, XML позволяет описывать данные таким образом,
что они могут быть прочитаны любым приложением, выполняющимся на любой
платформе. При этом документы XML можно создавать и редактировать
вручную, поскольку формат представления данных базируется на тегах,
аналогичных тегам HTML.

Пример

Допустим, вы решили использовать XML для хранения информации о
транзакциях. Изначально данные транзакции сохраняются на вашем iBook’е,
на котором вы начинаете транзакцию. Затем информация должна быть
передана приложению, выполняющемуся на сервере под управлением Windows,
а в итоге — сохранена в архиве на мэйнфрейме. Использование разных
платформ требует особой гибкости формата хранения данных. При помощи XML
вы можете описывать данные в документах, аналогичных приведенному в
листинге 1.

Листинг 1. Пример документа XML

Подобное текстовое представление информации доступно в любой
вычислительной среде. Даже без помощи специальных приложений вы легко
можете отделить содержимое документа (оно выделено жирным) от
описывающей его разметки.

Дополнительная информация

Разобравшись со структурой XML, вам сможете легко начать его
использовать. XML предоставляет несколько способов управления структурой
и содержимым документов. Когда вы начнете работу с XML, у вас могут
возникнуть вопросы относительно проектирования структуры документов, но
с этим также не должно возникнуть сложностей.

Начните изучение XML со следующих материалов:

Благодаря своей гибкости XML получил широкое распространение во многих
приложениях. Он используется для описания настроек, хранения данных,
взаимодействия с Web-сервисами и т.д.

Варианты использования XML

С момента появления XML разработчиками было найдено множество вариантов
его применения. Ниже приведены ссылки на материалы, которые помогут вам
начать использовать XML в своих проектах.

Хранение данных

Наиболее очевидным способом применения XML является хранение данных. XML
имеет преимущества при хранении информации как в виде отдельных
элементов данных (как, например, в базах данных), так и в виде
документов. Хранение информации в виде документов XML позволяет
по-разному отображать ее на разных платформах.

В перечисленных ниже статьях рассказывается об использовании XML в базах
данных.

Если вы интересуетесь вопросами хранения данных в XML, вам следует знать,
что IBM предоставляет бесплатную версию DB2 под названием IBM DB2 Express-C 9. Также
обратите внимание на новый инструментарий
разработчика DB2 Developer, который облегчает использование
XQuery и SQL/XML при работе с DB2.

Первое руководство в приведенной ниже серии из трех частей рассказывает о
применении XML для хранения данных в виде документов общего назначения.
Это позволяет отделить хранение данных от их представления.

Web-сервисы

Первоначально Web-сервисы были предложены в качестве способа передачи по
протоколу HTTP информации, отличной от HTML. Со временем они
превратились в основу множества технологий, начиная от Ajax, служащего
для реализации интерактивных Web-страниц, и заканчивая
сервис-ориентированной архитектурой (SOA), в соответствии с которой
создаются сложные приложения, ориентированные на обмен сообщениями. XML
является неотъемлемой частью Web-сервисов. Все распространенные методы,
лежащие в основе Web-сервисов, такие как SOAP, REST и даже XML-RPC, сами
базируются на XML.

Если вас интересует то, как XML используется при работе с Web-сервисами,
обратитесь к следующим материалам.

Более подробная информация о XML применительно к Web-сервисам приведена в
следующем разделе.

Web-трансляции и другие виды синдикации данных

В настоящее время синдикация данных является одной из областей наиболее
активного применения XML. Миллионы блоггеров используют RSS-ленты для
отслеживания новых записей в своих любимых блогах. Более того,
трансляция аудио и видеоинформации через Интернет для портативных
устройств, например, плееров iPod, также базируется на XML и в последнее
время является объектом повышенного коммерческого интереса.

Ознакомьтесь с приведенными ниже материалами, которые помогут вам
получить представление о синдикации и ее использовании.

Независимые от платформы настройки и инструкции по
развертыванию приложений

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

Подробнее об этом варианте использования XML можно прочитать в следующих
статьях.

Полезен ли XML при создании приложений?

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

Объектная модель документа (DOM)

Объектная модель документа (Document Object Model — DOM) — это
представление XML-данных в виде объектной структуры древовидной формы.
Например, в листинге 1 элементы salesperson, order
и return являются дочерними по отношению к элементу transaction,
поскольку они расположены ниже в иерархии. Большинство
XML-приложений работают с документами XML именно через DOM.

Введение в DOM приведено в следующих материалах.

Простой API для XML (SAX)

Модель DOM очень удобна для манипулирования данными, поскольку все
содержимое документа загружается в память. Однако это также может вести
к чрезмерному расходованию ресурсов.

SAX (Simple API for XML) решает проблему избыточного использования памяти
путем сканирования документа от начала до конца и уведомления приложения
о таких событиях, как, например, «начало элемента» и «окончание
элемента». Этот подход позволяет существенно сократить расход памяти, но
вы не сможете манипулировать содержимым документа так же, как при работе
с DOM.

Введение в SAX приведено в следующих материалах.

DOM и SAX — это наиболее популярные методы программной работы с XML.
Однако есть и другие средства, которые в некоторых случаях позволяют
избежать создания отдельного приложения для манипулирования данными в
XML.

Преобразование документов XML (XSLT)

В некоторых случаях работа с XML не требует программирования. В
частности, вы можете манипулировать XML при помощи расширяемого языка
стилевых преобразований (EXtensible Stylesheet Language Transformations
— XSLT). XSLT позволяет менять структуру документов XML и даже
преобразовывать их в формат, отличный от XML. Это очень мощный и
повсеместно используемый язык.

Могу ли я работать с XML при помощи моего любимого языка
программирования?

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

Java

Инструменты для разбора документов XML и работы с ними входят в
стандартную поставку Java.

PHP

Ранние версии библиотек PHP для работы с XML были далеки от идеала, в
частности, существовали расхождения со спецификацией DOM. В настоящее
время благодаря лучшему соответствию стандартам ситуация существенно
улучшилась.

Perl

Perl изначально проектировался в качестве языка обработки текстов,
поэтому иногда у вас может возникать искушение работать с содержимым XML
как с обычными текстовыми данными. Тем не менее использование
специальных XML-инструментов имеет очевидные преимущества.

Python

Простота использования Python и платформенная независимость XML делают их
идеальной парой.

C++

Средства для работы с XML также доступны для программистов на C++.

Ruby

Библиотека REXML реализует поддержку XML для разработчиков на языке
Ruby.

JavaScript

Работа с XML в JavaScript очень напоминает Java, по крайней мере в том,
что касается базовых операций.

Есть ли существующие форматы и приложения XML?

Растущая популярность XML среди разработчиков постепенно привела к
появлению ряда стандартных форматов и словарей элементов XML. Примерами
подобных форматов могут служить XHTML, являющийся XML-версией HTML, RSS,
на основе которого реализуются новостные ленты и Web-трансляции, а также
язык масштабируемой векторной графики (Scalable Vector Graphics — SVG),
который предоставляет средства для описания изображений в XML таким
образом, что браузеры, например, Firefox, могут отображать их на
Web-страницах.

Ниже представлены некоторые варианты использования XML.

RSS и синдикация

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

Язык масштабируемой векторной графики (SVG)

По замыслу своих создателей, SVG должен сыграть ту же роль для графики,
которую HTML играет в настольных издательских системах. Он предоставляет
средства для описания графических изображений при помощи кратких и
простых текстовых инструкций. SVG позволяет создавать сложные
графические объекты, описание которых, во-первых, компактно, а,
во-вторых, может формироваться программным образом.

XForms

XForms — это следующее поколение форм HTML. Они предоставляют
платформенно-независимые возможности для описания того, как информация
должна быть получена от пользователя. Это не просто позволяет легко
добавлять новую функциональность, но и облегчает повторное использование
форм в другой среде, например, в мобильном телефоне, где та же самая
информация должна отображаться совершенно по-другому.

Другие варианты применения XML

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

Какое отношение имеет XML к Web-сервисам и SOA?

Приложения с сервис-ориентированной архитектурой (SOA) можно создавать
при помощи множества технологий, однако самой распространенной из них
являются Web-сервисы. Работа с Web-сервисами означает применение XML,
поскольку оба наиболее популярных подхода к созданию таких сервисов —
SOAP и REST — базируются на XML.

Пример

Например, вы можете отправить запрос к Web-сервису Google при помощи
документа SOAP, приведенного в листинге 2.

В этом примере показан конверт SOAP в стандартизованном
формате, который понимают платформы Web-сервисов. Содержимое подобных
сообщений (в данном случае это элемент doGoogleSearch),
называемое информационным наполнением запроса
(payload), предназначено для обработки Web-сервисом.

Общая картина применения Web-сервисов

Большинство из множества стандартов, имеющих отношение к Web-сервисам, на
самом деле представляют собой установленные форматы документов XML.
Одним из таких примеров является XML-язык описания Web-сервисов (Web
Service Description Language — WSDL).

Следующие материалы помогут вам начать работу с XML и Web-сервисами.

Технология alphaworks под названием ETTK для
Web-сервисов облегчает создание полноценной среды для работы
Web-сервисов, включающее в себя сервер.

Более подробная информация об XML и Web-сервисах содержится на странице
Введение в SOA и Web-сервисы (EN).

Каковы перспективы XML?

XML играет ключевую роль во многих развивающихся технологиях. Например, в
условиях активного совершенствования поисковых серверов в направлении
Semantic Web XML становится средством, с помощью которого Web-мастера
могут описывать смысл информации на страницах. Кроме того, все большую
популярность завоевывают технологии распределенных и автономных
вычислений, в которых XML также играет важную роль. Наконец,
компании-разработчики систем управления базами данных постоянно работают
над улучшением способов хранения данных в XML, а язык запросов XML Query
Language получает все более широкое распространение.

В следующих разделах приведены ссылки на материалы, которые помогут вам
оценить перспективы XML.

RDF, микроформаты и другие семантические
технологии

В теории Semantic Web может обходиться без XML, однако на практике все
выглядит совершенно по-другому. Большая часть информации, будь то RDF
(Resource Description Framework) или микроформаты, представлена в
некотором XML- формате. Это объясняется практически идеальной
удобочитаемостью и понятностью XML.

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

Мир становится все меньше, а компьютерные системы, наоборот, растут. Это
ведет к тому, что отдельные исследователи и компании начинают осознавать
преимущества объединения систем в единые комплексы в целях повышения
вычислительной мощности или снижения расходов за счет устранения
ненужных компонентов. Благодаря платформенной независимости XML является
идеальным средством для обмена информацией между отдельными частями
распределенных систем.

Асинхронный JavaScript и XML (AJAX)

С расширением функциональности Web пользователи начинают предъявлять все
более высокие требования к повседневным приложениям. Технология AJAX
(Asynchronous JavaScript with XML) повышает удобство работы с
приложениями, запрашивая информацию, чаще всего в XML, без перезагрузки
страницы и обновляя лишь отдельные ее части. AJAX стал значительным
шагом вперед в области пользовательских интерфейсов в Web.

Mashup-приложения

Чем больше информации становится доступно через Web-сервисы, тем шире
возможности ее применения в корпоративных приложениях. Один из способов
использования данных заключается в создании стремительно набирающих
популярность гибридных приложений (mashup), отличающихся тем, что они
интегрируют информацию, поступающую из разных источников, в единое
представление.

Как развивать навыки работы с XML?

Лучший способ развития навыков работы с XML заключается в том, чтобы
разобраться с основами, а затем сразу перейти к практическому
использованию. Начните с прочтения материалов в разделе Что такое XML?, а затем переходите к статьям,
перечисленным в разделе Полезен ли XML для создания
приложений?. После этого вы можете перейти к изучению любых
интересующих вас областей.

Вы также можете пройти сертификацию IBM по XML, подготовившись к ней при помощи
руководства Подготовка к сертификации по XML
и смежным технологиям. Часть 1: Архитектура (EN) и других руководств из той же серии (EN).

Заключение

XML — мощный язык с широкими возможностями, однако, к счастью, достаточно
простой и понятный. Разобравшись с основами (что не должно занять много
времени), вы сможете свободно выбирать дальнейшие направления изучения
XML. Разработчики могут сосредоточиться на программировании и различных
API, а все остальные — на других вариантах работы с XML, не требующих
написания кода. В любом случае вы легко найдете место для XML в своей
деятельности.

Учебное пособие по схеме XML


Что такое XML-схема?

Схема XML описывает структуру документа XML.

Язык схемы XML также называется определением схемы XML (XSD).

XSD, пример


Назначение схемы XML — определение юридических строительных блоков XML.
документ:

  • элементы и атрибуты, которые могут появиться в документе
  • количество (и порядок) дочерних элементов
  • типов данных для элементов и атрибутов
  • значения по умолчанию и фиксированные значения для элементов и атрибутов

Зачем изучать схему XML?

В мире XML ежедневно используются сотни стандартизированных форматов XML.

Многие из этих стандартов XML определены схемами XML.

Схема

XML — это основанная на XML (и более мощная) альтернатива DTD.



Схемы XML поддерживают типы данных

Одна из самых сильных сторон схем XML — это поддержка типов данных.

  • Допустимое содержание документа описать проще
  • Проще проверить правильность данных
  • Легче определить фасеты данных (ограничения на данные)
  • Легче определять шаблоны данных (форматы данных)
  • Легче конвертировать данные между разными типами данных

Схемы XML используют синтаксис XML

Еще одна сильная сторона XML-схем состоит в том, что они написаны на XML.

  • Вам не нужно учить новый язык
  • Вы можете использовать свой XML-редактор для редактирования файлов схемы
  • Вы можете использовать синтаксический анализатор XML для анализа файлов схемы
  • Вы можете управлять своей схемой с помощью XML DOM
  • Вы можете преобразовать свою схему с помощью XSLT

XML-схемы являются расширяемыми, поскольку они написаны в XML.

С расширяемым определением схемы вы можете:

  • Повторно используйте схему в других схемах
  • Создавайте собственные типы данных, производные от стандартных типов
  • Ссылка на несколько схем в одном документе

XML-схемы Безопасная передача данных

При отправке данных от отправителя к получателю важно, чтобы обе части
иметь те же «ожидания» относительно содержания.

С помощью схем XML отправитель может описать данные так, как получатель
пойму.

Такая дата, как «03-11-2004», в некоторых странах будет интерпретироваться как 3 ноября.
а в других странах как 11. марта.

Однако элемент XML с типом данных
как это:

11.03.2004

обеспечивает взаимное понимание содержания, потому что тип данных XML «дата»
требуется формат «ГГГГ-ММ-ДД».


Хорошо сформированных недостаточно

Правильно сформированный XML-документ — это документ, соответствующий синтаксису XML.
rules, например:

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

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

Представьте себе следующую ситуацию: вы заказываете 5 лазерных принтеров брутто вместо 5 лазерных.
принтеры. С помощью схем XML большинство этих ошибок может быть обнаружено вашим
проверка программного обеспечения.

XML — Википедия

In informatica, l ‘ XML (sigla di eXtensible Markup Language ) представляет собой разметку для определения языков разметки , которая используется для определения базового языка с определением химического контроля и определения Элементы содержания в документе или в тесте.

Il nome indica che si tratta di un linguaggio marcatore ( язык разметки ) estensibile ( eXtensible ), in quanto permette di creare tag personalizzati. Требуется предварительная версия продукта Standard Generalized Markup Language (SGML) , который определяет новые лингвоги разметки .

Il World Wide Web Consortium (W3C), в отдельном браузере (закрытая версия для проверки состояния Microsoft e Netscape, новая версия собственного браузера, официальная версия HTML-браузера), Используйте индивидуальный поиск на языке HTML. [ не является шаблоном è poco chiaro ]

W3C dovette scegliere quali caratteristiche standardizzare and quali lasciare fuori dalle specifiche dell’HTML. Fu in questo contesto che iniziò a delinearsi la needità di un linguaggio di markup che desse maggiore libertà nella defizione dei tag, pur rimanendo в uno standard.

«Progetto XML», che ebbe inizio alla fine degli anni novanta nell’ambito della SGML Activity del W3C, ascito un così forte interesse Che la W3C creò un gruppo di lavoro, chiamato XML Working Group, composto da esperti te mondiali della SGML, член комиссии, Редакционный совет по XML, deputata alla redazione delle specifiche del progetto.

Nel febbraio del 1998 le specifiche divennero una raccomandazione ufficiale con il nome di Extensible Mark-up Language , versione 1.0. Ben presto ci si accorse che XML non era limitato al solo contesto web ma era qualcosa di più: unostrumento che permetteva di essere utilizzato nei più diversi contesti, dalla Definizione della struttura di Documenti, allo scambio delle informazioni trareresenta diversi diversi Imagini alla Definizione di formati di dati.

Rispetto all’HTML, l’XML ha uno scopo ben diverso: mentre il primo Definisce una grammatica per la descrizione e la formattazione di pagine web (layout) e, in general, di ipertesti, il secondo и un metalinguaggio utilizzato per creare nuovi linguaggi, atti a descrivere Documenti strutturati. Mentre l’HTML имеет встроенную опцию определения тега, содержащего XML-файл, и дает возможность определить его собственное второе слово.

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

Ecco представляет собой типовой файл XML, визуализирующий все внутренние интерфейсы браузера, которые можно легко использовать в тесте в формате файла .xml .

 

    
         Эма 
         Princi 
         Турин 
    
    
         Макс 
         Росси 
         Рома 
    

 

Первоначально указанная версия XML в использовании специфики кодировки UTF-8 для правильной интерпретации данных.

Специально созданный документ, созданный в формате XML:

Каратер Entità
и & amp;
< & lt;
> & gt;
» & quot;
'

Если есть одно простое число [ или одно простое число 2? ] entity semper da rispettare, mentre l’ultima '; в любом казино без гестита (поставляется без iPhone iOS 3.1.3 е последовательный).

Я помечаю этикетку [изменение | modifica wikitesto]

L’XML, come l’HTML, utilizza dei marcatori, chiamati tag (etichette), per Assegnare una semantica al testo. Я помечаю, что может содержаться информация должным образом: Attributeverso dei parameters oppure racchiudendo del testo or altri tipi di informazioni. Перейдите к тегам, которые можно использовать для апертуры, необходимо перейти к тегам chiusura (tra i quali si può avere un contenuto), чтобы получить теги, которые вы можете найти и получить информацию соло, привлекательно и много параметров.

Ogni etichetta inizia e finisce con delle parentesi angolari <> (che in altri contesti sarebbero i segni di minore e maggiore), ментала чиусура дель тега или тега ди chiusura и rappresentato dalla barra /. Ecco degli esempi di tag:

 
   Contenuto


 

XML consente dei commenti racchiusi da Ad esempio:

 
 

XML — это много ошибок, связанных с последовательным переходом, все HTML-файлы, необходимые для перехода на другую страницу:

  1. i tag non Possono iniziare Con numeri o caratteri speciali e Non Possono Connere Spazi;
  2. i tag devono essere bilanciati, ovvero non sono acceptiti errori di annidamento, ad esempio:
 
   Марио 
  <когном> Росси

 

Тег ognome non è stato chiuso, l’XML risulta quindi mal formato.

 
   Марио 
  <когном> Росси
 
 

Тег , когном — это тег , рубрика , и этот тег не является форматом XML.

 
   Марио 
   Росси 

 

XML — это чувствительный к регистру тег ognome и тег COGNOME , который следует учитывать при использовании различных тегов; l’XML ancora una volta non è ben formato.

можно указать тег vuoti che vengono aperti e немедленное действие:

Oppure in maniera abbreviata:

Для подтверждения правильной интерпретации, документ XML deve essere в формате , deve cioè possedere le seguenti caratteristiche:

  • Un prologo , che è la prima istruzione che appare scritta nel document. Nel nostro caso: .
  • Unico elemento radice (ovvero il nodo Principale, chiamato root element ), который содержит все остальные узлы документа.Nel nostro esempio: .
  • Все документы обо всех тегах devono essere bilanciati.

Этот документ XML не содержит ошибок Хорошо сформирован (без форматирования). В этом документе хорошо сформированный и в последнем файле с обязательной структурой, определенным файлом DTD или схемой XML, ассоциированной с chiamato Valid (valido).

Преимущества использования XML на одном языке: SPEED (velocità).Скорость — это основная сеть, которая является самым крупным азиентом в электронной коммерции: быстрый доступ ко всем клиентам, публикация быстрой информации, направленная на клиентов и искусственный интеллект партнера для утверждения; разработка самых простых способов обучения через Интернет. SPEED — это акроним, который содержит основные преимущества XML: Хранение, публикация и обмен электронными документами (memorizzazione, pubblicazione e scambio di Documenti elettronici) .

В XML-файле содержится информация о конкретном приложении, содержащем все «внутренние теги», знаки, содержащиеся в документе <>, которые описывают содержимое документа. Огни тега, определяющие тип элемента, разграничение с тегом одного отдельного человека, сиамо в градо-ди-comprenderne la struttura anche se non conosciamo l’applicazione che l’ha generata. Essendo poi i dati autodescrittivi, anche i partner saranno in grado di comprenderli ed Developrarli. Inoltre essi Possono Essere Gestiti Anche in Futuro Quando Le Applications Che li Hanno generati saranno diventate obsolete.

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

XML с проверенным американским девизом: «Принять и адаптировать», полностью, соответствует стандарту, признанному и аффидабильному, и адаттало для всех существующих.

Альтернативное неделимое преимущество XML — это возможность валидности медианного использования XML-схемы (XSD) [1] .

Этот запрос не может быть представлен в различных форматах, содержащихся в формате JSON.

Для создания и использования преимуществ XML, quindi, si può dire che XML richiede:

  • meno sforzi di manutenzione;
  • migliore riutilizzo;
  • maggiore Capacità di mirare a dispositivi multipli;
  • возможностей для реализации проектов.

Схема

Linguaggi (для создания нового языка XML):

  • DTD (сокращение от Document Type Definition ): документ, привлекающий внимание, специфический для структуры документа XML, привлекающий серию «грамматических правил».В частности, определены элементы документа XML, иерархические отношения с элементами документа, стандартное приложение в документе XML, а также качественные элементы и качественные атрибуты, используемые в качестве альтернативы.
  • XML Schema: войдите в DTD и определите структуру документа XML. W3C содержит все последние сообщения DTD, которые являются последними аванзатами. Этот знак является XSD, сокращением XML Schema Definition .

Другие технологии, наследующие XML:

  • XLink: служите коллеге в режиме полной документации XML; В противоположность классическим коллегам, использующим шаблоны в HTML, XLink позволяет создавать мультидиапазонные ссылки и создавать семантические ссылки.
  • XSL (сокращение от eXtensible Stylesheet Language ): это язык, который описывает стиль документа XML. La sua versione estesa è l’XSLT (dove la T sta per Transformations ).
  • XPath: это язык с возможностью индивидуального представления документа XML и базовая база данных для XML с XQuery.
    A supporto di questo scopo Principale, fornisce anche elementari funzionalità per trattare stringhe, numeri e dati booleani.Il suo funzionamento si basa sulla creazione di un albero a partire dal document e la sintassi succinta permette di indirizzare una specifica parte attverso i nodi dell’albero con la semplice parola path .
  • XPointer: служить для идентификации однозначно точного формата документа XML; Consente poi il loro accesso ad altri linguaggi or oggetti di interfaccia.
  • XQuery: является лингвистической концепцией запроса, которая может быть применена в любом виде документа XML и основана на использовании XPath для специфики выполнения всех внутренних документов.XQuery имеет функционал, который поддерживает несколько источников данных для запроса, для фильтров и документов, содержащих интересное содержимое.
  • SAX (простой API для XML): это комплексная программа, реализация на многих языках, которая позволяет изменять и изменять документы XML. Аттракцион SAX позволяет реализовать специфический XML-анализатор. SAX основан на событиях, в противоположность DOM, и реагирует на все события синтаксического анализа для всех приложений.Составная программа, реализующая методы для реагирования и анализа событий.
  • DOM: это неинтерфейсная программа, входящая в SAX, которая реализует множество языков программирования для работы с XML-файлом. DOM состоит из файла XML и содержит элементы, соответствующие одному элементу файла; для Questo Motivo и детта на основе дерева.
  • VTD-XML: DOM упрощается сразу после использования в SAX-редакторе и позволяет предпочитать отдельные программы для управления файлом XML; Все данные, генерируемые DOM, полностью выполняются в оперативной памяти RAM и согласовываются, поэтому невозможно использовать этот интерфейс для управления файлом, который является самым большим из памяти, доступной на компьютере.
  • RSS: это стандартный документ, который служит для создания документа с единой структурой XML, которая позволяет создавать простые скриптовые данные для страницы в Интернете и предоставляет доступ к любому языку сценариев. In sostanza si tratta di un documento XML la cui struttura dei nodied i relativi tag hanno lo stesso nome.
  • SVG (масштабируемая векторная графика) и VML (язык векторной разметки) являются стандартом для создания ветеринарных изображений, которые были форматированы для документов в XML.Служить для подробного описания двумерных изображений, статических и динамических изображений. Легендарный источник контента в XML-документе, интерпретирующий основу рисунка для дополнения воображаемого.
  • WDDX (Word Data Description Exchange): WDDX — это структура для содержания данных в базе данных, созданная для всех Macromedia и открытых пресс-релизов WDDX Organization
  • XForms: являются внутренним языком, созданным для создания модулей (форм) типа HTML и всех внутренних документов XML.
  • SMIL (Synchronized Multimedia Integration Language): этот язык, определенный в XML, используется для описания содержания и отображения темпов мультимедийных презентаций, которые могут сочетать в себе видео, аудио, изображения и текст.
  • MathML (математический язык разметки): MathML используется для описания математических нот, выполняется современная структура и контент, так как он используется для обработки и обработки в Интернете.
  • X3D (eXtensible 3D): X3D — это язык, который позволяет создавать трехмерные модели, а также простые и простые модели.Все, что вам нужно, может создавать приложения анимации и механизмы взаимодействия с миром. Приходите linguaggio, è построенный на языке моделирования виртуальной реальности (VRML), который полностью соответствует стандартному международному стандарту 1997 года. Многофункциональный, l’X3D добавляет емкость, типичную расширяемый язык разметки (XML), интеграцию с Альтернативные технологии World Wide Web, проверка содержимого и гибкость нового физического оборудования, необходимого для этого. В самом деле, bisogna citare i vantaggi riguardanti la leggerezza del «profilo base» (Core Profile — Esistono sette profili, ognuno dei quali raggruppa un certo insieme di funzionalità comunemente utilizzate per diff scopi.Это позволяет поддерживать браузер в режиме реального времени, поддерживающий X3D, и это может быть сделано для реализации в одном конкретном случае и компоненты браузера для быстрой загрузки.
  • XBRL (eXtensible Business Reporting Language): язык, используемый для общения и финансовых данных, а также для связи в электронном формате.

XML и веб-страница: XHTML [изменение | modifica wikitesto]

XHTML — это язык разметки для визуальной страницы веб-браузера, в том числе HTML, e, XML и семантика.Ad esempio в XHTML, al contrario che в HTML tradizionale, i tag vuoti vanno chiusi con uno slash (/) finalale, gli attributi vuoti devono essere valorizzati con true o false , la chiusura dei tag dev’essereio (этот аперто у Tag e prima di chiuderlo ne viene aperto un altro, необходимо chiudere prima il secondo tag e poi il primo), alcuni Tag e attributi, rispetto all’HTML 4.0 sono scomparsi, ed esiste una DTD dedicata.

Тип пантомимы для XHTML страницы (application / xhtml + xml).Se si trasmette una pagina XHTML non valida ma come text / html può capitare che venga però visualizzata perché viene translations come html (con degli errori, quali i tag chiusi come
) solo che non rispetta lo standard e non gode dei suoi преимущества, прежде всего для качества переносимости браузера и клиента. [2] Лучший вариант страницы XHTML — это XML, который содержит все предварительные версии, качественные средства проверки и интерпретации программ. Страница XHTML содержит более легкий доступ к семантическим данным XML.

o: язык программирования XML

o: XML — это объектно-ориентированный язык программирования с динамической типизацией, основанный на
на XML и XPath.

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

Элементы ключевого слова составляют атомарные программные инструкции, другие узлы
(кроме текстовых узлов с пробелами) обрабатываются буквально.Результат выполнения
Программа — это XML-документ или фрагмент, в котором были заменены программные инструкции.

Параметры передаются процедурам с использованием синтаксиса выражения пути o:
надмножество XPath 1.0. Язык выражения o: Path может быть расширен
с функциями, определенными в o: XML так же, как процедуры расширяют
основной язык.

Базовые типы XPath также могут быть расширены, а типы, определяемые пользователем, могут быть расширены.
имеют связанные с ними функции. Кроме того, тип может наследовать
функциональность от одного или нескольких родительских типов.

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

Процедура определяется с помощью ключа процедуры
элемент. После определения он связывает содержащиеся в нем программные инструкции (тело процедуры) с
все элементы с совпадающим именем. Определение процедуры может объявлять параметры, которые
доступны в теле процедуры как переменные.

Пример:




  
  
  
  
    <дата>
        
        
        
    
  






 

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

Параметры: o: Выражения пути, переданные в атрибутах вызывающего элемента.

Возвращаемое значение процедуры — это набор узлов, полученный в результате выполнения тела процедуры.
Тип возврата всех процедур — набор узлов.

Дочерние узлы узла, составляющего вызов процедуры, выполняются
перед вызовом процедуры.

Пользовательская функция расширяет o: Path напрямую. Возвращаемое значение
функция определяется своим оператором возврата (или операторами), функции
Тип — это возвращаемое значение.Если оператор возврата отсутствует,
значение функции — это набор узлов, полученный в результате выполнения функции. Функция
Определение может объявлять параметры, которые доступны в теле функции как переменные.

Пример:




  
  
  
  
    <дата>
        
        
        
    
  



 Программные операторы и последовательности 

Каждый узел в программном документе o: XML является программным оператором. Если там
не существует сопоставления узлов для оператора,
он рассматривается как буквальный узел и просто копируется в документ результата.

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

Программная последовательность — это допустимый (правильно сформированный) фрагмент XML, содержащий ноль
или более программных операторов.

Программный документ — это документ XML или фрагмент документа (с
любые включенные документы или фрагменты), содержащие операторы программы. Когда
программа выполнена, все директивы include выполнены, и вся программа
инструкции, выполняемые в порядке документов, или в порядке, установленном контролем
заявления.

Местоположение программы — это ссылка на узел в программном документе. А
location не может ссылаться на объект, которого нет в программе
документ, например объект, на который ссылается только переменная.

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

Программная среда существует для каждого параллельного потока.

Язык выражения для o: XML — o: Path, который является расширенным набором
XPath v1.0.

Функции типа вызываются для экземпляра объекта с помощью бинарного оператора
точек :

[1] TypeFunctionCall :: = Expr ‘.’FunctionName’ (‘ArgList?’) ‘
[2] ArgList :: = Expr | ArgList ‘,’ Expr

Например,

foo (). Bar ()

$ foo.bar ($ param)

Ограничения и конфликты 9000 Path4 не допускает прямого индексирования элементов, имя которых содержит
точка («.”), Поскольку это интерпретируется как обозначение метода типа
призыв. Элементы с именами точек по-прежнему можно индексировать с помощью предикатов.
и имя или локальное имя XPath
функции.

Например, для следующего XML-документа:




  
    
  


 

Выражение XPath:

 /abc/foo.bar/def 

o: Выражение пути:

 / abc / * [name () = 'foo.bar'] / def 

Объекты бывают двух типов: Узлы и узлы.Все остальные типы наследуют
от одного из этих двух. Наборы узлов — это объекты-контейнеры, обычно узлы
представляют данные.

Чтобы создать объект, необходимо вызвать конструктор типа. Это в свою очередь
рекурсивно вызывает конструкторы любых родителей, пока все унаследованные типы
были созданы. Когда родительские конструкторы выполнены, любые
переменные со значениями по умолчанию или значения которых передаются как параметры в
конструктор устанавливается перед выполнением тела функции. Увидеть
раздел «Конструкторы» и раздел «Переменные типа».

Когда объекты передаются как параметры функции или процедуры, это
всегда выполняется на одном и том же экземпляре объекта. То есть ни одна копия
объект всегда создается неявно.

Функция копирования возвращает полную копию объекта:
все объекты, содержащиеся в нем в переменных, содержании или родительских типах, также
рекурсивно скопировано. Вызов функции копирования
эквивалентно вызову конструктора копирования объектов.

Каждый экземпляр типа, т.е. каждый объект, уникален в программе.Более того, объект может существовать не более чем в одном месте программы.
документ. Если делается попытка вставить объект, у которого уже есть местоположение
( parent ()! = False ) a
Выдается исключение HierarchyViolation.

Пример:


 

  
   
   

 

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

Переменные — это ссылки на объекты, они создаются и им присваиваются значения
с ключевым элементом переменной . Разыменование неопределенного
переменная является ошибкой и приведет к
UnboundVariable исключение.

Область видимости и присвоение переменной

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

Последующие объявления одной и той же переменной в ее области видимости имеют
эффект присвоения ему нового значения.

Внутри процедуры или тела только параметры и локально
объявленные переменные находятся в области видимости.

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

Глава 7. Отображение узлов

Отображение узлов придает особое значение программным узлам. Они бывают трех разных видов:

  • Ключевые элементы

  • Процедуры

  • Расширения языка

Ключевые элементы сопоставляют именованные элементы в пространстве имен o: XML с функциональными возможностями основного языка, такими как программные конструкции и объявления. .Они составляют атомарные программные операторы o: XML.

Процедуры расширяют базовый язык o: XML, связывая именованные элементы с параметризованными последовательностями программ.

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

Расширение языка может создавать узлы результатов и / или изменять состояние программы.Нулевое расширение языка — это расширение, которое не делает ни того, ни другого.

Примеры возможных расширений языка включают:

Ключевые элементы o: XML определены в определенном пространстве имен:

/ lang /

Примечание

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

xmlns: o = «/ lang /»

Пространства имен функций и процедур

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

Пример:



  
  
      
  



   
   

 

Каждый объект в программе o: XML является экземпляром типа.Более того,
все узлы в программном документе являются объектами.

Тип определяется своим именем, родителями, переменными, конструкторами и
функции.

Базовые типы o: XML состоят из расширенной модели документа XPath:

  • Node

  • Nodeset

  • Element

  • String

  • Number

  • Boolean

    Boolean

    Node — это абстрактный класс, что означает, что он не определяет никаких общедоступных
    конструкторы.Это родительский тип для всех остальных основных типов, кроме Nodeset.
    у которого нет родительского типа.

    Каждый объект имеет содержимое, которое определяется типом объекта. Строка
    например, объекты имеют простую строку в качестве содержимого, содержимое
    Набор узлов — это 0 или более узлов, а содержимое
    Элемент — это узел элемента XML со своими атрибутами и дочерними узлами.

    Содержимое типа равно возвращаемому значению его
    конструктор. Тип может создавать объекты со структурно и семантически разным содержанием.

    Доступ к содержимому можно получить из тела функции типа через переменную this.

    Функция типа — это функция, определенная как часть определения типа. Переменным типа можно переназначить значения и ссылаться на них, а содержимое объекта доступно через специальную переменную this.
    Если имя параметра функции идентично имени переменной типа, переменной типа присваивается
    значение параметра перед выполнением тела функции. Родительские экземпляры доступны для
    вызывающих родителей, функцию типа, определенную в Node.

    Функции типов (не включая конструкторы) можно вызывать только через экземпляр типа с оператором dot .

    Тип может определять одну или несколько функций, имеющих имя типа.
    сам. Эти функции являются конструкторами типа и являются
    вызывается для создания экземпляра типа.

    В отличие от функций других типов, конструкторы являются глобальными функциями o: Path, которые должны вызываться напрямую.

    Возвращаемое значение конструктора составляет содержимое объекта и является частью его состояния и открытого интерфейса — см. Раздел «Содержимое».

    Родительские типы также инициализируются конструктором. Это можно сделать
    явно с родительским ключевым элементом .

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

    Содержимое родительских экземпляров доступно объекту через
    защищенная родительская функция, определенная Node.

    Например,

    
    
      
      
        
        
        
        
            
          
        
      
    
    
     

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

    Созданные конструкторы по умолчанию

    Конструктор по умолчанию — это конструктор, который не принимает параметров.

    Если (и только если) конструкторы не определены, конструктор по умолчанию
    генерируется средой исполнения.

    Созданный конструктор по умолчанию вызывает только конструкторы по умолчанию для
    родительские типы. Если у типа есть один или несколько родительских типов без значений по умолчанию
    конструктор ошибочно не определить допустимый конструктор.

    Конструктор копирования — это конструктор, который принимает единственный параметр
    тот же тип, что и объявленный тип.Он вызывается функцией копирования и предназначен для создания идентичной копии данного объекта.
    Каждый допустимый тип имеет ровно один допустимый конструктор копирования.

    Если тип не объявляет свой собственный конструктор копии, он будет
    генерируется автоматически.

    Пример 9.1. Конструктор сгенерированных копий

    
      
      
      
      
        
        
        
      
    
     

    Переменная типа — это переменная, определенная в определении типа. Тип
    переменные с именами, соответствующими параметру функции типа, будут
    инициализируется соответствующим значением параметра перед телом функции
    выполняет.Другим будет присвоено значение по умолчанию, если оно определено, в противном случае с учетом
    значение пустого набора узлов.

    Например,

    
      
      
      
      
      
        
        
          
          
        
      
    
    
    
     

    приведет к переменной типа столбца
    foo с $ a = ‘a’, $ b = ‘b’, $ c = ‘c’ и $ d — пустой набор узлов.

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

    Пример:

    
      
        
        
            
        
      
    
    
    
       
       
    
     

    Тип o: XML наследует функциональность, то есть функции типа, от одного или нескольких родительских
    типы. Первое объявленное наследование представляет собой первичный родительский тип,
    второй объявил своего вторичного родителя и т. д.

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

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

    Типы объектов определяются динамически во время выполнения.

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

    Функции типа сначала ищутся в самом типе, затем во всех
    его родительские типы в том порядке, в котором они были объявлены, затем в родительских типах
    родительские типы, пока не будут исчерпаны все родительские типы.

    Если функция с идентичной подписью объявлена ​​как в родительском, так и в
    дочерние типы, функция дочерних типов имеет приоритет.

    Методы типа могут содержать спецификатор доступа в качестве атрибута объявляющего элемента.

    Возможные декларации доступа:

    Декларации доступа

    общедоступные

    Доступно всем.

    защищенный

    Доступен для экземпляров этого типа и любого из его дочерних типов.

    частный

    Доступен только для экземпляров этого типа.

    Функция типа может быть объявлена ​​ общедоступной ,
    защищенный или частный . Если нет доступа
    спецификатор присутствует, по умолчанию — общедоступный .

    Все переменные типа являются частными , защищенные и общедоступные переменные не допускаются.

    Конструкторы также могут объявлять спецификатор доступа. Защищенный тип — это
    тип без общедоступных конструкторов — то же, что и абстрактный тип. Тип с
    только частные конструкторы формально верны, но не имеют смысла.

    Например,

    
    
      
        
        
          
        
      
      
          
      
    
    
    
      
      
        
         
        
      
      
        
        
      
    
    
     
     
     
    
     

    Введение в XML

    Дуг Тидвелл
    Опубликовано 7 августа 2002 г.

    Об этом руководстве

    Стоит ли мне использовать это руководство?

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

    В этом руководстве вы узнаете:

    • Почему был создан XML
    • Правила XML-документов
    • Как определить, что XML-документ может и не может содержать
    • Программные интерфейсы, которые работают с XML-документами
    • Что основные стандарты XML и их совместная работа
    • Как компании используют XML в реальном мире

    Что такое XML?

    Введение

    XML или Extensible Markup Language — это язык разметки, который вы можете использовать для создания
    свои собственные теги.Он был создан Консорциумом Всемирной паутины (W3C) для преодоления
    ограничения HTML, языка гипертекстовой разметки, который является основой всех веб-
    страниц. Как и HTML, XML основан на SGML — стандартном обобщенном языке разметки.
    Хотя SGML использовался в издательской индустрии на протяжении десятилетий, его
    сложность пугала многих людей, которые иначе могли бы ее использовать (SGML также
    означает «Звучит отлично, может быть, позже»).XML был разработан с расчетом на Интернет.

    Зачем нам нужен XML?

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

     

    Mrs.Мэри МакГун
    1401 Main Street
    Anytown, NC 34829

    Проблема с HTML в том, что он был разработан для людей. Даже без
    просматривая приведенный выше HTML-документ в браузере, мы с вами можем понять, что это
    чей-то почтовый адрес. (В частности, это почтовый адрес кого-то из
    Соединенные Штаты; даже если вы не знакомы со всеми компонентами почтовой службы США
    адреса, вы, наверное, догадались, что это означает.)

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

    Визуализация HTML

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

    Рис. 1. HTML-адрес

    Обработка HTML

    Чтобы завершить обсуждение примера HTML-документа, рассмотрим задачу:
    извлечение почтового индекса из этого адреса.Вот такой (намеренно хрупкий)
    алгоритм поиска почтового индекса в разметке HTML:

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

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

    Образец XML-документа

    Теперь давайте посмотрим на образец XML-документа. С помощью XML вы можете придать значение
    теги в документе. Что еще более важно, машине легко обрабатывать
    информация также. Вы можете извлечь почтовый индекс из этого документа, просто
    поиск контента в окружении <почтовый-код> и теги , технически известные как элемент .

     <адрес>
      <имя>
         Миссис 
        <имя>
          Мэри
        
        <фамилия>
          МакГун
        
      
      <улица>
        1401 Main Street
      
       Anytown 
       Северная Каролина 
      <почтовый индекс>
        34829
      
     

    Теги, элементы и атрибуты

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

     <адрес>
      <имя>
         Миссис 
        <имя>
          Мэри
        
        <фамилия>
          МакГун
        
      
      <улица>
        1401 Main Street
      
       Anytown 
      <почтовый индекс>
        34829
      
     
    • Тег — это текст между левой угловой скобкой ( <) и
      правый угловой кронштейн (> ).Есть стартовые теги (например,
      ) и закрывающие теги (например,
      )
    • Элемент - это начальный тег, конечный тег и все, что между ними. В
      в примере выше элемент содержит три дочерних элемента
      элементы: </code>, <code> <first-name> </code> и<br /> <code> <фамилия> </code>.</li><li> Атрибут - это пара "имя-значение" внутри начального тега элемента. В<br /> в этом примере состояние <code> </code> является атрибутом <code><br /> <city> элемент </code>; в предыдущих примерах <code><br /> <state> </code> был элементом (см. образец XML<br /> документ).</li></ul><h4><span class="ez-toc-section" id="_XML-26"> Как XML меняет Интернет </span></h4><p> Теперь, когда вы увидели, как разработчики могут использовать XML для создания документов с<br /> данные с самоописанием, давайте посмотрим, как люди используют эти документы для улучшения<br /> паутина.Вот несколько ключевых областей:</p><ul><li> <strong> XML упрощает обмен данными. </strong> Потому что разные<br /> организации (или даже разные части одной организации) редко<br /> стандартизировать единый набор инструментов, это может потребовать значительного объема работы<br /> для приложений для общения. Используя XML, каждая группа создает одну утилиту<br /> который преобразует их внутренние форматы данных в XML и наоборот. Лучшее из<br /> все, есть большая вероятность, что их поставщики программного обеспечения уже предоставляют инструменты для<br /> преобразовать свои записи в базе данных (или каталоги LDAP, или заказы на поставку, и<br /> и т.д.) в XML и обратно.</li><li> <strong> XML позволяет использовать интеллектуальный код. </strong> Поскольку XML-документы могут быть<br /> структурирован так, чтобы идентифицировать каждую важную часть информации (а также<br /> отношения между частями), можно написать код, который может обрабатывать<br /> эти XML-документы без вмешательства человека. Тот факт, что производители программного обеспечения<br /> потратили огромное количество времени и денег на создание инструментов разработки XML<br /> означает, что написание этого кода - относительно простой процесс.</li><li> <strong> XML обеспечивает интеллектуальный поиск. </strong> Хотя поисковые системы<br /> с годами неуклонно совершенствовалась, все еще довольно часто возникают ошибочные<br /> результаты поиска. Если вы ищете на HTML-страницах кого-то по имени "Чип",<br /> вы также можете найти страницы о шоколадной стружке, компьютерной стружке, древесной стружке и<br /> куча других бесполезных совпадений. Поиск XML-документов для <code><br /> <first-name> </code> элементов, содержащих текст <code><br /> Чип </code> даст вам гораздо лучший набор результатов.</li></ul><p> Я также расскажу о реальном использовании XML в тематических исследованиях.</p><h3><span class="ez-toc-section" id="_XML-27"> Правила XML-документа </span></h3><h4><span class="ez-toc-section" id="_XML-28"> Обзор: правила XML-документа </span></h4><p> Если вы просмотрели документы HTML, вы знакомы с основными концепциями использования<br /> теги для разметки текста документа. В этом разделе обсуждаются различия<br /> между HTML-документами и XML-документами. В нем рассматриваются основные правила XML.<br /> документы и обсуждает терминологию, используемую для их описания.</p><p> Один важный момент в отношении XML-документов: <strong> Спецификация XML требует<br /> парсер для отклонения любого XML-документа, который не соответствует основным правилам. </strong><br /> Большинство парсеров HTML принимают неаккуратную разметку, предполагая, что автор<br /> документ предназначен. Чтобы избежать беспорядочной структуры, характерной для среднего<br /> HTML-документа, создатели XML решили навязать структуру документа из<br /> начало.</p><p> (Кстати, если вы не знакомы с этим термином, парсер <em> </em> - это часть<br /> код, который пытается прочитать документ и интерпретировать его содержимое.)</p><h4><span class="ez-toc-section" id="i-32"> Недействительные, действительные и правильно сформированные документы </span></h4><p> Есть три типа XML-документов:</p><ul><li> <strong> Недействительные документы </strong> не соответствуют правилам синтаксиса, определенным в<br /> Спецификация XML. Если разработчик определил правила того, что документ может<br /> содержатся в DTD или схеме, и документ не соответствует тем правилам, которые<br /> документ также недействителен.(См. Определение содержимого документа для<br /> правильное введение в DTD и схемы для XML-документов.)</li><li> <strong> Действительные документы </strong> следуют как правилам синтаксиса XML, так и правилам<br /> определены в их DTD или схеме.</li><li> <strong> Правильно сформированные документы </strong> соответствуют правилам синтаксиса XML, но не<br /> иметь DTD или схему.</li></ul><h4><span class="ez-toc-section" id="i-33"> Корневой элемент </span></h4><p> XML-документ должен содержаться в одном элементе. Этот единственный элемент называется<br /> корневой элемент <strong> </strong>, и он содержит весь текст и любые другие<br /> элементы в документе.В следующем примере XML-документ содержится в<br /> единственный элемент, элемент <code> <greeting> </code>. Обратите внимание, что<br /> в документе есть комментарий за пределами корневого элемента; это совершенно законно.</p><pre data-widget="syntaxhighlighter"> <? Xml version = "1.0"?> <! - Правильно оформленный документ -> <приветствие> Привет мир! </greeting> </pre><p> Вот документ, который не содержит ни одного корневого элемента:</p><pre data-widget="syntaxhighlighter"> <? xml version = "1.0"?> <! - Недействительный документ -> <приветствие> Привет мир! </greeting> <приветствие> Hola, el Mundo! </greeting> </pre><p> XML-синтаксический анализатор должен отклонить этот документ, независимо от информации, которую он<br /> может содержать.</p><h4><span class="ez-toc-section" id="i-34"> Элементы не могут перекрываться </span></h4><p> <strong> Элементы XML не могут перекрываться. </strong> Вот разметка, которой нет<br /> Legal:</p><pre data-widget="syntaxhighlighter"> <! - НЕЛЬЗЯ использовать разметку XML -> <p> <b> Я <i> правда люблю </b> XML. </i> </p> </pre><p> Если вы начнете с элемента <code> <i> </code> внутри <code> <b> </code><br /> элемент, вы также должны закончить его на этом. Если вы хотите, чтобы текст <code> XML </code><br /> выделены курсивом, вам нужно добавить второй элемент <code> <i> </code> в<br /> исправьте разметку:</p><pre data-widget="syntaxhighlighter"> <! - допустимая разметка XML -> <p> <b> Я <i> правда любовь </i> </b> <i> XML.</i> </p> </pre><p> Анализатор XML принимает только эту разметку; парсеры HTML в большинстве веб-браузеров<br /> приму оба.</p><h4><span class="ez-toc-section" id="i-35"> Требуются закрывающие теги </span></h4><p> <strong> Вы не можете оставлять закрывающие теги. </strong> В первом примере ниже<br /> разметка недопустима, потому что нет конечного абзаца (<code></p><p> </code>)<br /> теги. Хотя это приемлемо в HTML (и, в некоторых случаях, в SGML), синтаксический анализатор XML<br /> отклонит это.</p><pre data-widget="syntaxhighlighter"> <! - НЕПРАВИЛЬНАЯ разметка XML -> <p> Яда, яда, яда ... <p> Яда, яда, яда ... <p> ... </pre><p> Если элемент вообще не содержит разметки, он называется <strong> пустым.<br /> элемент </strong>; HTML-разрыв (<code> <br /> </code>) и изображение (<code><br /> <img> </code>) являются двумя примерами. В пустых элементах в XML<br /> документы, вы можете поставить закрывающую косую черту в начальный тег. Два элемента разрыва<br /> и два элемента изображения ниже означают то же самое для анализатора XML:</p><pre data-widget="syntaxhighlighter"> <! - Два эквивалентных элемента разрыва -> <br> </br> <br /> <! - Два эквивалентных элемента изображения -> <noscript><img class="lazy lazy-hidden" src = "../img/c.gif "></noscript><img class="lazyload lazy lazy-hidden" src = "../img/c.gif "><noscript><img src = "../img/c.gif "></noscript> </img> <noscript><img class="lazy lazy-hidden" src = "../ img / c.gif" /></noscript><img class="lazyload lazy lazy-hidden" src = "../ img / c.gif" /><noscript><img src = "../ img / c.gif" /></noscript> </pre><h4><span class="ez-toc-section" id="i-36"> Элементы чувствительны к регистру </span></h4><p> <strong> Элементы XML чувствительны к регистру. </strong> в HTML, <code></p><h2><span class="ez-toc-section" id="_XML-29"> </code><br /> и <code></p><h2><span class="ez-toc-section" id="_XML-29"> </code> одинаковы; в XML - нет. Если вы попытаетесь закончить<br /> <code></p><h2><span class="ez-toc-section" id="_XML-29"> </code> с тегом <code> </span></h2><p> </code>, вы<br /> получить ошибку. В приведенном ниже примере заголовок вверху недопустим, а заголовок<br /> внизу нормально.</p><pre data-widget="syntaxhighlighter"> <! - НЕПРАВИЛЬНАЯ разметка XML -> <h2><span class="ez-toc-section" id="i-37"> Элементы с учетом регистра </span></h2> <! - допустимая разметка XML -> <h2><span class="ez-toc-section" id="i-38"> Элементы с учетом регистра </span></h2> </pre><h4><span class="ez-toc-section" id="i-39"> Атрибуты должны иметь значения в кавычках </span></h4><p> Есть два правила для атрибутов в XML-документах:</p><ul><li> Атрибуты должны иметь значения</li><li> Эти значения должны быть заключены в кавычки</li></ul><p> Сравните два примера ниже . Разметка вверху допустима в HTML, но не в<br /> XML.Чтобы сделать эквивалент в XML, вы должны дать атрибуту значение, и вы<br /> необходимо заключить его в кавычки.</p><pre data-widget="syntaxhighlighter"> <! - НЕПРАВИЛЬНАЯ разметка XML -> <ol compact> <! - допустимая разметка XML -> <ol compact = "yes"> </pre><p> Вы можете использовать как одинарные, так и двойные кавычки, при условии, что вы последовательны.</p><p> Если значение атрибута содержит одинарные или двойные кавычки, вы можете использовать<br /> другие кавычки, окружающие значение (например, <code> name = "Doug's car" </code>),<br /> или используйте объекты <code> & quot; </code> для двойной кавычки и <code><br /> & апос; </code> для одинарной кавычки.Объект <em> </em> - это символ, например<br /> <code> & quot; </code>, который синтаксический анализатор XML заменяет другим текстом, например<br /> <code> "</code>.</p><h4><span class="ez-toc-section" id="_XML-30"> Объявления XML </span></h4><p> Большинство документов XML начинаются с объявления <em> XML </em>, которое обеспечивает базовую<br /> информация о документе для парсера. Объявление XML рекомендуется, но<br /> не требуется. Если он есть, он должен быть первым в документе.</p><p> Объявление может содержать до трех пар имя-значение (многие называют их<br /> атрибуты, хотя технически это не так). Версия <code> </code> - это<br /> используемая версия XML; в настоящее время это значение должно быть <code> 1,0 </code>. Модель <code><br /> кодировка </code> - это набор символов, используемый в этом документе. Модель <code><br /> Набор символов ISO-8859-1 </code>, упомянутый в этой декларации, включает все<br /> символы, используемые в большинстве западноевропейских языков.Если нет <code> кодировка </code><br /> указано, синтаксический анализатор XML предполагает, что символы находятся в <code><br /> Набор UTF-8 </code>, стандарт Unicode, который поддерживает практически все символы и<br /> идеограмма из языков мира.</p><pre data-widget="syntaxhighlighter"> <? Xml version = "1.0" encoding = "ISO-8859-1" standalone = "no"?> </pre><p> Наконец, <code> standalone, </code>, который может быть <code> yes </code> или <code><br /> № </code>, определяет, можно ли обработать этот документ без чтения<br /> другие файлы.Например, если XML-документ не ссылается на другие файлы, вы<br /> укажите <code> standalone = "yes" </code>. Если XML-документ ссылается на другой<br /> файлы, которые описывают, что может содержать документ (подробнее об этих файлах в<br /> минуту) можно указать <code> standalone = "no" </code>. Потому что <code><br /> standalone = "no" </code> по умолчанию, вы редко увидите <code> standalone </code><br /> в объявлениях XML.</p><h4><span class="ez-toc-section" id="_XML-31"> Другие элементы в XML-документах </span></h4><p> Есть еще несколько вещей, которые вы можете найти в XML-документе:</p><ul><li> <strong> Комментарии: </strong> Комментарии могут появляться в любом месте документа; Oни<br /> может даже появляться до или после корневого элемента.Комментарий начинается с <code><br /> <! - </code> и заканчивается на <code> -> </code>. Комментарий не может содержать<br /> двойной дефис (<code> - </code>), кроме конца; за этим исключением<br /> комментарий может содержать что угодно. Самое главное, что любая разметка внутри комментария<br /> игнорируется; если вы хотите удалить большой раздел XML-документа, просто оберните<br /> этот раздел в комментарии. (Чтобы восстановить закомментированный раздел, просто удалите<br /> теги комментариев.) Вот некоторая разметка, которая содержит комментарий:</li></ul><pre data-widget="syntaxhighlighter"> <! - Вот PI для Cocoon: -> <? cocoon-process type = "sql"?> </pre><ul><li> <strong> Инструкции обработки: </strong> Инструкция обработки - это разметка<br /> предназначенный для определенного фрагмента кода. В приведенном выше примере есть<br /> инструкция обработки (иногда называемая PI) для Cocoon, обработка XML<br /> framework от Apache Software Foundation. Когда Cocoon обрабатывает XML<br /> документ, он ищет инструкции по обработке, которые начинаются с <code><br /> cocoon-process </code>, затем обрабатывает XML-документ соответствующим образом.В этом<br /> Например, атрибут <code> type = "sql" </code> сообщает Cocoon, что XML<br /> документ содержит инструкцию SQL.</li></ul><pre data-widget="syntaxhighlighter"> <! - Вот объект: -> <! ENTITY dw "developerWorks"> </pre><ul><li> <strong> Сущности: </strong> В приведенном выше примере определяется сущность <em> </em> для<br /> документ. Где угодно, где XML-процессор находит строку <code><br /> & dw; </code>, он заменяет объект строкой <code><br /> developerWorks </code>.Спецификация XML также определяет пять сущностей, которые вы можете использовать<br /> вместо различных специальных символов. Это следующие объекты:</p><ul><li> <code> & lt; </code> для знака «меньше»</li><li> <code> & gt; </code> для знака «больше»</li><li> <code> & quot; </code> для двойной кавычки</li><li> <code> ' </code> для одинарной кавычки (или апострофа)</li><li> <code> & amp; </code> для амперсанда.</li></ul></li></ul><h4><span class="ez-toc-section" id="i-40"> Пространства имен </span></h4><p> Сила XML заключается в его гибкости, том факте, что вы, я и миллионы<br /> другие люди могут определять наши собственные теги для описания наших данных.Помните образец XML<br /> документ на имя и адрес человека? Этот документ включает <code><br /><title> </code> элемент вежливости человека, идеально<br /> разумный выбор имени элемента. Если у вас есть книжный онлайн-магазин, вы можете<br /> создайте элемент <code><title> </code> для названия книги. Если вы запустите<br /> онлайн-ипотечной компании, вы можете создать элемент <code><title> </code> для<br /> титул на объект собственности.Все это разумный выбор, но все<br /> они создают элементы с тем же именем. Как узнать, что данный <code><br /> Элемент<title> </code> относится к человеку, книге или собственности?<br /> С <em> пространствами имен </em>.</p><p> Чтобы использовать пространство имен, вы определяете префикс <em> пространства имен </em> и сопоставляете его с<br /> конкретная строка. Вот как вы можете определить префиксы пространства имен для наших трех<br /> <code><title> </code> элементов:</p><pre data-widget="syntaxhighlighter"> <? Xml version = "1.0 "?> <customer_summary xmlns: addr = "http://www.xyz.com/addresses/" xmlns: books = "http://www.zyx.com/books/" xmlns: mortgage = "http://www.yyz.com/title/" > ... <addr:name> <title> Госпожа ... ... ... Властелин колец ... ... NC2948-388-1983 ...

В этом примере три префикса пространства имен - addr ,
книги
, ипотека и .Обратите внимание, что определение пространства имен для
конкретный элемент означает, что все его дочерние элементы принадлежат одному и тому же
пространство имен. Первый элемент </code> принадлежит <code><br /> addr </code>, поскольку его родительский элемент <code><br /> <адрес: Имя> </code>, есть.</p><p> И последнее: <strong> Строка в определении пространства имен - это просто<br /> строка. </strong> Да, эти строки выглядят как URL-адреса, но это не так.Ты мог бы<br /> определить <code> xmlns: addr = "mike" </code>, и это тоже будет работать. Единственный<br /> в строке пространства имен важно то, что она уникальна; поэтому<br /> большинство определений пространств имен выглядят как URL-адреса. Парсер XML не переходит на <code><br /> http://www.zyx.com/books/ </code> для поиска DTD или схемы просто использует<br /> этот текст в виде строки. Это сбивает с толку, но именно так работают пространства имен.</p><h3><span class="ez-toc-section" id="i-41"> Определение содержания документа </span></h3><h4><span class="ez-toc-section" id="_content"> Обзор: определение документа<br /> content </span></h4><p> Итак, в этом руководстве вы узнали об основных правилах XML-документов;<br /> это все хорошо, но вам нужно определить элементы, которые вы собираетесь использовать для<br /> представляют данные.В этом разделе вы узнаете о двух способах сделать это.</p><ul><li> Один из способов - использовать определение типа документа <strong>, </strong> или <strong><br /> DTD. </strong> DTD определяет элементы, которые могут появляться в XML-документе,<br /> порядок, в котором они могут появляться, как они могут быть вложены друг в друга,<br /> и другие основные детали структуры XML-документа. DTD являются частью оригинальной<br /> XML и очень похожи на SGML DTD.</li><li> Другой метод - использовать схему <strong> XML. </strong> Схема может определять<br /> все структуры документа, которые вы можете поместить в DTD, а также он может определять<br /> типы данных и более сложные правила, чем DTD. W3C разработал XML<br /> Спецификация схемы через пару лет после первоначальной спецификации XML.</li></ul><h4><span class="ez-toc-section" id="i-42"> Определения типов документа </span></h4><p> DTD позволяет вам определять базовую структуру XML-документа.Следующая пара<br /> разделов смотрите на фрагменты DTD. Прежде всего, вот DTD, который определяет<br /> базовая структура примера адресного документа в разделе Что такое<br /> XML? :</p><pre data-widget="syntaxhighlighter"> <! - address.dtd -> <! Адрес ЭЛЕМЕНТА (название, улица, город, штат, почтовый индекс)> <! Имя ЭЛЕМЕНТА (заголовок? Имя, фамилия)> <! Название ЭЛЕМЕНТА (#PCDATA)> <! ELEMENT имя (#PCDATA)> <! Фамилия элемента (#PCDATA)> <! ЭЛЕМЕНТ улица (#PCDATA)> <! ЭЛЕМЕНТ город (#PCDATA)> <! Состояние элемента (#PCDATA)> <! ELEMENT postal-code (#PCDATA)> </pre><p> Этот DTD определяет все элементы, используемые в образце документа.Он определяет три<br /> базовые вещи:</p><ul><li> Элемент <code><br /> <address> </code> содержит <code> <name> </code>,<br /> <code> <улица> </code>, <code> <город> </code>, <code><br /> <состояние> </code> и <code> <почтовый-код> </code>. Все из тех<br /> элементы должны появиться, и они должны появиться в этом порядке.</li><li> Элемент <code> <name> </code> содержит необязательный элемент <code><br /><title> </code> элемент (знак вопроса означает, что заголовок<br /> необязательно), за которым следуют <code> <имя> </code> и <code><br /> <last-name> </code> элемент.</li><li> Все остальные элементы содержат текст. (<code> #PCDATA </code> означает<br /> проанализированные символьные данные; вы не можете включить в эти<br /> элементов.)</li></ul><p> Хотя DTD довольно прост, он дает понять, какие комбинации элементов<br /> законны. Адресный документ, содержащий элемент <code> <postal-code> </code>.<br /> перед элементом <code> <state> </code> недопустим, и ни один из них не<br /> не имеет элемента <code> <last-name> </code>.</p><p> Кроме того, <strong> замечает, что синтаксис DTD отличается от обычного XML.<br /> синтаксис. </strong> (документы схемы XML, напротив, сами являются XML, которые<br /> имеет некоторые интересные последствия.) Несмотря на различный синтаксис для DTD, вы можете<br /> все же поместите обычный комментарий в самом DTD.</p><h4><span class="ez-toc-section" id="_DTD"> Символы в DTD </span></h4><p> В DTD используется несколько символов, указывающих, как часто (и нужно ли) что-то<br /> может появиться в документе XML.Вот несколько примеров, а также их<br /> значения:</p><ul><li> <code> <! ELEMENT адрес (название, город, штат)> </code><p> The <code><br /> Элемент</p> <address> </code> должен содержать <code><br /> <имя> </code>, <code> <город> </code> и <code><br /> <state> </code>, именно в таком порядке. Все элементы<br /> требуется. <strong> Запятая обозначает список элементов.</strong></p></li><li> <code> <! ELEMENT name (title ?, имя, фамилия)> </code><p> Это<br /> означает, что элемент <code> <name> </code> содержит необязательный<br /> <code><title> </code> элемент, за которым следует обязательный <code><br /> <first-name> </code> и элемент <last-name> </code> <code>.<br /> <strong> Знак вопроса означает, что элемент является необязательным; это может<br /> появляются один раз или не появляются совсем.</strong></p></li><li> <code> <! Адресная книга ELEMENT (адрес +)> </code><p> An <code><br /> <addressbook> элемент </code> содержит один или несколько <code><br /> <адрес> </code> элементов. У вас может быть столько <code></p> <address> </code> элементов, сколько вам нужно, но они должны быть по адресу<br /> хотя бы один. <strong> Знак плюс указывает, что элемент должен появиться в<br /> хотя бы один раз, но может появляться любое количество раз.</strong></p></li><li> <code> <! Частные адреса ELEMENT (адрес *)> </code><p> A <code> <private-addresses> Элемент </code> содержит ноль или более <code><br /> <адрес> </code> элементов. <strong> Звездочка означает, что<br /> элемент может появляться любое количество раз, включая ноль. </strong></p></li><li> <code> <! ELEMENT name (title ?, имя, (отчество | отчество) ?, last-name)> </code><p> Элемент <code> <name> </code> содержит<br /> необязательный элемент <code><title> </code>, за которым следует <code><br /> <first-name> </code> элемент, за которым может следовать либо <code><br /> <среднее-начальное> </code> или <code> <среднее-имя> </code><br /> элемент, за которым следует элемент <code> <last-name> </code>.В другом<br /> слова, оба <code> <средний-начальный> </code> и <code><br /> <middle-name> </code> являются необязательными, и у вас может быть только одно из<br /> два. <strong> Вертикальные полосы обозначают список вариантов; ты можешь выбрать<br /> только один элемент из списка. </strong> Также обратите внимание, что в этом примере используется<br /> круглые скобки для группировки определенных элементов, и использует вопросительный знак напротив<br /> группа.</p></li><li> <code> <! ELEMENT имя ((титул ?, имя, фамилия) | (фамилия, имя-матери, имя-имя))> </code><p> The <code> <имя> </code><br /> Элемент может содержать одну из двух последовательностей: Необязательный <code><br /><title> </code>, за которым следует <code> <first-name> </code> и<br /> a <code> <имя> </code>; или <code> <фамилия> </code>, а<br /> <code> <имя-матери> </code> и <code><br /> <данное-имя> </code>.</p></li></ul><h4><span class="ez-toc-section" id="i-43"> Несколько слов о гибкости </span></h4><p> Прежде чем продолжить, небольшое замечание о разработке типов XML-документов для обеспечения гибкости.<br /> Учитывайте типовое название и адрес типового документа; Я ясно написал это с США.<br /> почтовые адреса в уме. Если вам нужно DTD или схему, определяющую правила для других<br /> типы адресов, вам придется добавить к нему намного больше сложности. Требование<br /> <code> <state> Элемент </code> может иметь смысл в Австралии, но он<br /> не стал бы в Великобритании.Канадский адрес может обрабатываться образцом DTD в Document Type Definitions, но с добавлением <code><br /> Элемент <province> </code> - лучшая идея. Наконец, имейте в виду, что во многих<br /> В разных странах мира такие понятия, как титул, имя и фамилия, не имеют смысла.</p><p> Итог: если вы собираетесь определить структуру XML-документа, вы<br /> следует предусмотреть в своем DTD или схеме столько же предусмотрительности, сколько если бы вы<br /> разработка схемы базы данных или структуры данных в приложении.Более будущее<br /> требования, которые вы можете предвидеть, тем проще и дешевле вам будет реализовать<br /> их позже.</p><h4><span class="ez-toc-section" id="i-44"> Определение атрибутов </span></h4><p> В этом вводном руководстве не очень подробно рассказывается о том, как работают DTD, но<br /> здесь есть еще одна основная тема: определение атрибутов. Вы можете определить<br /> атрибуты элементов, которые появятся в вашем XML-документе. Используя DTD, вы<br /> также можно:</p><ul><li> Определить, какие атрибуты требуются.</li><li> Определить значения по умолчанию для атрибутов.</li><li>. Список всех допустимых значений для данного атрибута.<br /> элемент <code> <city> </code>.Вот как это сделать:</p><pre data-widget="syntaxhighlighter"> <! ELEMENT city (#PCDATA)> <! ATTLIST city state CDATA #REQUIRED> </pre><p> Определяет элемент <code> <city> </code>, как и раньше, но измененный<br /> пример также использует объявление <code> ATTLIST </code> для перечисления атрибутов<br /> элемент. Название <code> city </code> внутри списка атрибутов сообщает парсеру, что<br /> эти атрибуты определены для элемента <code> <city> </code>. Название<br /> Состояние <code> </code> - это имя атрибута, а ключевые слова <code><br /> CDATA </code> и <code> # ТРЕБУЕТСЯ </code> сообщает синтаксическому анализатору, что <code><br /> Атрибут состояния </code> содержит текст и является обязательным (если не является обязательным, <code><br /> CDATA #IMPLIED </code> сделает свое дело).</p><p> Чтобы определить несколько атрибутов для элемента, напишите <code> ATTLIST </code> как<br /> это:</p><pre data-widget="syntaxhighlighter"> <! ELEMENT city (#PCDATA)> <! ATTLIST city state CDATA #REQUIRED postal-code CDATA #REQUIRED> </pre><p> В этом примере определяется состояние <code> </code> и почтовый индекс <code> </code> как<br /> атрибуты элемента <code> <city> </code>.</p><p> Наконец, DTD позволяют вам определять значения по умолчанию для атрибутов и перечислять все<br /> допустимые значения для атрибута:</p><pre data-widget="syntaxhighlighter"> <! ELEMENT city (#PCDATA)> <! ATTLIST город-штат CDATA (AZ | CA | NV | OR | UT | WA) "CA"> </pre><p> В данном примере показано, что он поддерживает только адреса из состояний<br /> Аризона (Аризона), Калифорния (CA), Невада (Невада), Орегон (ИЛИ), Юта (Юта) и Вашингтон<br /> (WA), и штат по умолчанию - Калифорния.Таким образом, вы можете сделать очень ограниченную форму<br /> проверки данных. Хотя это полезная функция, это лишь небольшая часть того, что вы<br /> может работать с XML-схемами (см. XML-схемы).</p><h4><span class="ez-toc-section" id="XML-5"> XML-схемы </span></h4><p> XML-схемы дают больше возможностей для определения того, как должны выглядеть действительные XML-документы.<br /> У них есть несколько преимуществ перед DTD:</p><ul><li> <strong> XML-схемы используют синтаксис XML. </strong> Другими словами, схема XML<br /> XML-документ.Это означает, что вы можете обрабатывать схему так же, как и любую другую<br /> документ. Например, вы можете написать таблицу стилей XSLT, которая преобразует XML<br /> схему в веб-форму с автоматически сгенерированным кодом JavaScript<br /> который проверяет данные по мере их ввода.</li><li> <strong> Схемы XML поддерживают типы данных. </strong> Хотя DTD поддерживают<br /> типы данных, ясно, что эти типы данных были разработаны из публикации<br /> перспектива.Схемы XML поддерживают все исходные типы данных из DTD (вещи<br /> например идентификаторы и ссылки на идентификаторы). Они также поддерживают целые числа, числа с плавающей запятой,<br /> даты, время, строки, URL-адреса и другие типы данных, полезные для обработки данных и<br /> Проверка.</li><li> <strong> XML-схемы являются расширяемыми. </strong> В дополнение к типам данных<br /> определено в спецификации схемы XML, вы также можете создать свою собственную, и вы<br /> может выводить новые типы данных на основе других типов данных.</li><li> <strong> XML-схемы обладают большей выразительностью. </strong> Например, с XML<br /> схемы вы можете определить, что значение любого <code> <состояние> </code><br /> атрибут не может быть длиннее 2 символов или что значение любого <code><br /> Элемент <postal-code> </code> должен соответствовать регулярному выражению <code><br /> [0-9] {5} (- [0-9] {4})? </code>. Вы не можете сделать ничего из этого с<br /> DTD.</li></ul><h4><span class="ez-toc-section" id="_XML-32"> Образец схемы XML </span></h4><p> Вот схема XML, которая соответствует исходному имени и адресу DTD. Он добавляет два<br /> ограничения: значение элемента <code> <state> </code> должно быть точно<br /> два символа и значение элемента <code> <postal-code> </code><br /> должно соответствовать регулярному выражению <code> [0-9] {5} (- [0-9] {4})? </code>. Хотя<br /> схема намного длиннее, чем DTD, она более четко выражает, что такое действительный документ<br /> похоже.Вот схема:</p><pre data-widget="syntaxhighlighter"> <? Xml version = "1.0" encoding = "UTF-8"?> <xsd: schema xmlns: xsd = "http://www.w3.org/2001/XMLSchema"> <xsd: element name = "address"> <xsd: complexType> <xsd: последовательность> <xsd: element ref = "name" /> <xsd: element ref = "street" /> <xsd: element ref = "city" /> <xsd: element ref = "state" /> <xsd: element ref = "postal-code" /> </ xsd: последовательность> </ xsd: complexType> </ xsd: element> <xsd: element name = "name"> <xsd: complexType> <xsd: последовательность> <xsd: element ref = "title" minOccurs = "0" /> <xsd: element ref = "first-Name" /> <xsd: element ref = "last-Name" /> </ xsd: последовательность> </ xsd: complexType> </ xsd: element> <xsd: element name = "title" type = "xsd: string" /> <xsd: element name = "first-Name" type = "xsd: string" /> <xsd: element name = "last-Name" type = "xsd: string" /> <xsd: element name = "street" type = "xsd: string" /> <xsd: element name = "city" type = "xsd: string" /> <xsd: element name = "state"> <xsd: simpleType> <xsd: Restriction base = "xsd: string"> <xsd: length value = "2" /> </ xsd: ограничение> </ xsd: simpleType> </ xsd: element> <xsd: element name = "postal-code"> <xsd: simpleType> <xsd: Restriction base = "xsd: string"> <xsd: pattern value = "[0-9] {5} (- [0-9] {4})?" /> </ xsd: ограничение> </ xsd: simpleType> </ xsd: element> </ xsd: schema> </pre><h4><span class="ez-toc-section" id="i-45"> Определение элементов в схемах </span></h4><p> В схеме XML в примере схемы XML определено число<br /> элементов XML с элементом <code> <xsd: element> </code>.Первые два<br /> определенные элементы, <code> <адрес> </code> и <code> <имя> </code>, являются<br /> состоит из других элементов. Элемент <code> <xsd: sequence> </code> определяет<br /> последовательность элементов, содержащихся в каждом. Вот пример:</p><pre data-widget="syntaxhighlighter"> <xsd: element name = "address"> <xsd: complexType> <xsd: последовательность> <xsd: element ref = "name" /> <xsd: element ref = "street" /> <xsd: element ref = "city" /> <xsd: element ref = "state" /> <xsd: element ref = "postal-code" /> </ xsd: последовательность> </ xsd: complexType> </ xsd: element> </pre><p> Как и в версии DTD, пример схемы XML определяет, что <code><br /> <адрес> </code> содержит <code> <имя> </code>, <code><br /> <улица> </code>, а <code> <город> </code>, а <code><br /> <state> </code> и элемент <code> <postal-code> </code>, в котором<br /> заказ.Обратите внимание, что схема фактически определяет новый тип данных с <code><br /> <xsd: complexType> </code> элемент.</p><p> Большинство элементов содержат текст; определить их просто. Вы просто объявляете<br /> новый элемент и присвойте ему тип данных <code> xsd: string </code>:</p><pre data-widget="syntaxhighlighter"> <xsd: element name = "title" type = "xsd: string" /> <xsd: element name = "first-Name" type = "xsd: string" /> <xsd: element name = "last-Name" type = "xsd: string" /> <xsd: element name = "street" type = "xsd: string" /> <xsd: element name = "city" type = "xsd: string" /> </pre><h4><span class="ez-toc-section" id="i-46"> Определение содержимого элемента в схемах </span></h4><p> Схема примера определяет ограничения для содержимого двух элементов: содержимого<br /> элемента <code> <state> </code> должен состоять из двух символов, а<br /> содержимое элемента <code> <postal-code> </code> должно соответствовать обычному<br /> выражение <code> [0-9] {5} (- [0-9] {4})? </code>.Вот как это сделать:</p><pre data-widget="syntaxhighlighter"> <xsd: element name = "state"> <xsd: simpleType> <xsd: Restriction base = "xsd: string"> <xsd: length value = "2" /> </ xsd: ограничение> </ xsd: simpleType> </ xsd: element> <xsd: element name = "postal-code"> <xsd: simpleType> <xsd: Restriction base = "xsd: string"> <xsd: pattern value = "[0-9] {5} (- [0-9] {4})?" /> </ xsd: ограничение> </ xsd: simpleType> </ xsd: element> </pre><p> Для элементов <code> <state> </code> и <code> <postal-code> </code>,<br /> схема определяет новые типы данных с ограничениями.В первом случае используется <code><br /> <xsd: length> </code> элемент, а второй использует <code><br /> <xsd: pattern> </code>, чтобы определить регулярное выражение, которое<br /> элемент должен совпадать.</p><p> Это резюме лишь поверхностно описывает возможности схем XML; есть целые<br /> книги, написанные по этой теме. Для целей этого введения достаточно сказать<br /> что схемы XML - это очень мощный и гибкий способ описания того, что допустимый XML<br /> документ выглядит так.</p><h3><span class="ez-toc-section" id="_XML-33"> Интерфейсы программирования XML </span></h3><h4><span class="ez-toc-section" id="_XML-34"> Обзор: программирование XML<br /> интерфейсы </span></h4><p> В этом разделе рассматриваются различные программные интерфейсы для XML. Эти<br /> Интерфейсы предоставляют разработчикам единообразный интерфейс для работы с XML-документами.<br /> Доступно множество API; в этом разделе рассматриваются четыре самых популярных и<br /> общие полезные: объектная модель документа (DOM), простой API для XML.<br /> (SAX), JDOM и Java API для анализа XML (JAXP).</p><h4><span class="ez-toc-section" id="i-47"> Объектная модель документа </span></h4><p> Объектная модель документа, обычно называемая DOM, определяет набор интерфейсов для<br /> проанализированная версия XML-документа. Парсер читает весь документ и<br /> строит дерево в памяти, поэтому ваш код может затем использовать интерфейсы DOM для управления<br /> дерево. Вы можете перемещаться по дереву, чтобы увидеть, что содержалось в исходном документе,<br /> вы можете удалять разделы дерева, вы можете переставлять дерево, добавлять новые ветви,<br /> и так далее.</p><p> Модель DOM была создана W3C и является официальной рекомендацией<br /> консорциум.</p><h4><span class="ez-toc-section" id="_DOM-2"> Проблемы с DOM </span></h4><p> DOM предоставляет богатый набор функций, которые можно использовать для интерпретации и<br /> манипулировать XML-документом, но эти функции имеют свою цену. Как исходный DOM<br /> для XML-документов разрабатывался ряд людей по рассылке XML-DEV<br /> list высказал опасения по этому поводу:</p><ul><li> Модель DOM строит в памяти дерево всего документа.Если документ очень<br /> большой, для этого требуется значительный объем памяти.</li><li> Модель DOM создает объекты, которые представляют все в исходном документе,<br /> включая элементы, текст, атрибуты и пробелы. Если вы заботитесь только о<br /> небольшая часть исходного документа, создавать все<br /> те объекты, которые никогда не будут использоваться.</li><li> Парсер DOM должен прочитать весь документ, прежде чем ваш код получит управление.За<br /> очень большие документы, это может вызвать значительную задержку.</li></ul><p> Это просто проблемы, возникшие в результате разработки объектной модели документа; несмотря на<br /> эти проблемы, <strong> DOM API - очень полезный способ синтаксического анализа XML<br /> документы. </strong></p><h4><span class="ez-toc-section" id="_API_XML"> Простой API для XML </span></h4><p> Чтобы обойти проблемы DOM, участники XML-DEV (во главе с Дэвидом Меггинсоном)<br /> создал интерфейс SAX. SAX имеет несколько характеристик, которые устраняют проблемы<br /> о DOM:</p><ul><li> Парсер SAX отправляет события в ваш код.Парсер сообщает вам, когда находит<br /> начало элемента, конец элемента, текст, начало или конец<br /> документ и так далее. Вы решаете, какие события важны для вас, и вы<br /> решить, какие структуры данных вы хотите создать для хранения данных<br /> те события. Если вы явно не сохраняете данные из события, это<br /> отброшен.</li><li> Парсер SAX вообще не создает никаких объектов, он просто доставляет события в<br /> ваше приложение.Если вы хотите создавать объекты на основе этих событий,<br /> тебе.</li><li> Синтаксический анализатор SAX начинает доставлять вам события, как только начинается синтаксический анализ. Ваш<br /> код получит событие, когда парсер найдет начало документа, когда он<br /> находит начало элемента, когда находит текст и т. д. Ваше приложение<br /> сразу начинает давать результаты; вам не нужно ждать, пока весь<br /> документ был проанализирован.Даже лучше, если вы ищете только определенные вещи<br /> в документе ваш код может вызвать исключение, как только обнаружит, что<br /> находясь в поиске. Исключение останавливает синтаксический анализатор SAX, и ваш код может делать все, что угодно.<br /> он должен иметь дело с найденными данными.</li></ul><p> Сказав все это, SAX и DOM имеют свое место. Остальная часть<br /> в этом разделе обсуждается, почему вы можете захотеть использовать тот или иной интерфейс.</p><h4><span class="ez-toc-section" id="_SAX"> Проблемы SAX </span></h4><p> Честно говоря, синтаксические анализаторы SAX также имеют проблемы, которые могут вызывать беспокойство:</p><ul><li> События SAX не имеют состояния. Когда парсер SAX находит текст в XML-документе, он<br /> отправляет событие в ваш код. Это событие просто дает вам текст, который был<br /> найденный; он не сообщает вам, какой элемент содержит этот текст. Если вы хотите знать<br /> что вы должны сами написать код управления состоянием.</li><li> SAX-события непостоянны.Если вашему приложению нужна структура данных,<br /> моделирует XML-документ, вы должны написать этот код самостоятельно. Если вам нужно<br /> доступ к данным из события SAX, и вы не сохранили эти данные в своем коде, вы<br /> придется снова проанализировать документ.</li><li> SAX не контролируется централизованно управляемой организацией. Хотя <strong><br /> на сегодняшний день это не вызвало проблем, некоторые разработчики сочли бы<br /> было бы удобнее, если бы SAX контролировалась такой организацией, как W3C.</li></ul><h4><span class="ez-toc-section" id="JDOM"> JDOM </span></h4><p> разочарован трудностями при выполнении определенных задач с моделями DOM и SAX,<br /> Джейсон Хантер и Бретт Маклафлин создали пакет JDOM. JDOM - это Java<br /> технологический проект с открытым исходным кодом, который пытается следовать правилу 80/20:<br /> Доставьте то, что нужно 80% пользователей, с помощью 20% функций в DOM и SAX. JDOM работает<br /> с парсерами SAX и DOM, поэтому он реализован как относительно небольшой набор Java<br /> классы.</p><p> Основная особенность JDOM заключается в том, что она значительно сокращает объем кода, который вам нужно<br /> написать. Хотя это вводное руководство не обсуждает темы программирования в<br /> глубины, приложения JDOM обычно составляют одну треть от длины приложений DOM, и<br /> примерно вдвое меньше, чем у приложений SAX. (Пуристы DOM, конечно, предполагают, что<br /> изучение и использование DOM - хорошая дисциплина, которая окупится в долгосрочной перспективе.)<br /> JDOM не делает всего, но для большей части синтаксического анализа, который вы хотите выполнить, это<br /> наверное как раз то.</p><h4><span class="ez-toc-section" id="Java_API_XML"> Java API для анализа XML </span></h4><p> Хотя DOM, SAX и JDOM предоставляют стандартные интерфейсы для наиболее распространенных задач,<br /> они по-прежнему не обращаются к нескольким вопросам. Например, процесс создания<br /> <code> DOMParser Объект </code> в программе Java отличается от одного парсера DOM до<br /> следующий. Чтобы решить эту проблему, Sun выпустила JAXP, Java API для анализа XML.<br /> Этот API предоставляет общие интерфейсы для обработки XML-документов с использованием DOM, SAX и<br /> XSLT.</p><p> JAXP предоставляет такие интерфейсы, как <code> DocumentBuilderFactory </code> и<br /> <code> DocumentBuilder </code>, которые предоставляют стандартный интерфейс для различных<br /> парсеры. Существуют также методы, позволяющие контролировать,<br /> парсер учитывает пространство имен и использует ли он DTD или схему для проверки XML<br /> документ.</p><h4><span class="ez-toc-section" id="i-48"> Какой интерфейс вам подходит? </span></h4><p> Чтобы определить, какой программный интерфейс подходит именно вам, нужно понимать<br /> элементы дизайна всех интерфейсов, и вам нужно понять, что вы<br /> приложение должно иметь дело с XML-документами, которые вы собираетесь обрабатывать.Рассмотреть возможность<br /> эти вопросы помогут вам найти правильный подход.</p><ul><li> <strong> Будет ли ваше приложение написано на Java? </strong> JAXP работает с DOM,<br /> SAX и JDOM; если вы пишете свой код на Java, вы должны использовать JAXP для<br /> изолируйте свой код от деталей реализации различных парсеров.</li><li> <strong> Как будет развертываться ваше приложение? </strong> Если ваше приложение<br /> будет развернут как Java-апплет, и вы хотите минимизировать количество<br /> загруженный код, имейте в виду, что парсеры SAX меньше парсеров DOM.Также имейте в виду, что использование JDOM требует небольшого количества кода в дополнение к<br /> Парсер SAX или DOM.</li><li> <strong> После синтаксического анализа XML-документа потребуется ли вам доступ к этим данным через несколько<br /> раз? </strong> Если вам нужно вернуться к проанализированной версии XML<br /> файла, вероятно, правильный выбор - DOM. Когда запускается событие SAX, это зависит от<br /> вы (разработчик) сохраните его как-нибудь, если он вам понадобится позже.Если вам нужно<br /> получить доступ к событию, которое вы не сохранили, вам нужно снова проанализировать файл. DOM сохраняет все<br /> данных автоматически.</li><li> <strong> Вам нужно кое-что из источника XML? </strong> Если только ты<br /> нужно кое-что из источника XML, SAX, вероятно, будет правильным выбором. SAX<br /> не создает объекты для всего в исходном документе; Вы можете решить<br /> что важно. С SAX вы можете смотреть на каждое событие, чтобы узнать, актуально ли оно<br /> в соответствии с вашими потребностями, а затем обработайте его соответствующим образом.Даже лучше, если ты найдешь<br /> то, что вы ищете, ваш код может вызвать исключение, чтобы остановить синтаксический анализатор SAX<br /> все вместе.</li><li> <strong> Вы работаете на машине с очень маленьким объемом памяти? </strong> Если да,<br /> SAX - ваш лучший выбор, несмотря на все другие факторы, которые вы можете<br /> рассмотреть возможность.</li></ul><p> Имейте в виду, что API XML существуют для других языков; сообщества Perl и Python в<br /> В частности, есть очень хорошие инструменты XML.</p><h3><span class="ez-toc-section" id="_XML-35"> Стандарты XML </span></h3><h4><span class="ez-toc-section" id="_XML-36"> Обзор: стандарты XML </span></h4><p> Во вселенной XML существует множество стандартов. В дополнение к базовому XML<br /> стандарт, другие стандарты определяют схемы, таблицы стилей, ссылки, веб-службы,<br /> безопасность и другие важные предметы. В этом разделе представлены самые популярные стандарты<br /> для XML и указывает ссылки для поиска других стандартов.</p><h4><span class="ez-toc-section" id="_XML-37"> Спецификация XML </span></h4><p> Эта спецификация, расположенная по адресу w3.org / TR / REC-xml, определяет основные правила для документов XML. Все<br /> Здесь определяются правила XML-документов, обсуждавшиеся ранее в этом руководстве.</p><p> Помимо основного стандарта XML, еще одной важной частью является спецификация пространств имен.<br /> XML. Вы также можете найти стандартные пространства имен на W3C: w3.org/TR/REC-xml-names/.</p><h4><span class="ez-toc-section" id="_XML-38"> Схема XML </span></h4><p> Язык схемы XML состоит из трех частей:</p><ul><li> <strong> Праймер </strong>, расположенный в w3.org / TR / xmlschema-0, который дает введение в схему XML<br /> документы и то, для чего они предназначены;</li><li> Стандарт для <strong> структур документов </strong>, расположенный по адресу w3.org/TR/xmlschema-1, который иллюстрирует, как определить структуру<br /> XML-документы;</li><li> Стандарт для типов данных <strong> </strong>, расположенный по адресу w3.org/TR/xmlschema-2, который определяет некоторые общие типы данных и правила.<br /> для создания новых.</li></ul><p> В этом руководстве кратко обсуждаются схемы в разделе «Определение содержимого документа».<br /> ; если вам нужна полная информация обо всех вещах, которые вы можете делать с XML-схемами,<br /> грунтовка - лучшее место для начала.</p><h4><span class="ez-toc-section" id="XSL_XSLT_XPath"> XSL, XSLT и XPath </span></h4><p> Extensible Stylesheet Language, XSL, определяет набор элементов (называемых<br /> объекты форматирования), которые описывают, как следует форматировать данные. Для наглядности это<br /> Стандарт часто называют XSL-FO, чтобы отличить его от XSLT. Хотя это<br /> в первую очередь предназначен для создания высококачественных документов для печати, вы также можете использовать<br /> объекты форматирования для создания аудиофайлов из XML. Стандарт XSL-FO находится на w3.org / TR / xsl /.</p><p> Расширяемый язык таблиц стилей для преобразований, XSLT, представляет собой словарь XML<br /> это описывает, как преобразовать XML-документ во что-то еще. Стандарт<br /> на w3.org/TR/xslt (нет<br /> закрывающая косая черта).</p><p> XPath, язык пути XML, представляет собой синтаксис, описывающий расположение в документах XML.<br /> Вы используете XPath в таблицах стилей XSLT, чтобы описать, какую часть XML-документа вы<br /> хочу преобразовать.XPath также используется в других стандартах XML, поэтому<br /> отдельный стандарт от XSLT. XPath определен в w3.org/TR/xpath (нет<br /> закрывающая косая черта).</p><h4><span class="ez-toc-section" id="DOM"> DOM </span></h4><p> Объектная модель документа определяет, как XML-документ преобразуется в оперативную память.<br /> древовидная структура. Модель DOM определена в ряде спецификаций W3C:</p><ul><li> <strong> Core DOM </strong> определяет саму DOM, древовидную структуру и<br /> типы узлов и исключений, которые ваш код будет находить при прохождении через<br /> дерево.Полная спецификация находится на w3.org/TR/DOM-Level-2-Core/.</li><li> <strong> События </strong> определяет события, которые могут произойти с деревом, и как<br /> эти события обрабатываются. Эта спецификация представляет собой попытку согласовать<br /> различия в объектных моделях, поддерживаемых Netscape и Internet Explorer<br /> начиная с версии 4 этих браузеров. Эта спецификация находится на w3.org/TR/DOM-Level-2-Events/.</li><li> <strong> Стиль </strong> определяет, как таблицы стилей XSLT и таблицы стилей CSS могут<br /> доступ к программе.Эта спецификация находится на w3.org/TR/DOM-Level-2-Style/.</li><li> <strong> Обходы и диапазоны </strong> определяют интерфейсы, которые позволяют программам<br /> пройти по дереву или определить диапазон узлов в дереве. Вы можете найти<br /> полная спецификация на w3.org/TR/DOM-Level-2-Traversal-Range/.</li><li> <strong> Views </strong> определяет интерфейс <code> AbstractView </code> для<br /> документ. См. W3.org/TR/DOM-Level-2-Views/ для получения дополнительной информации.</li></ul><h4><span class="ez-toc-section" id="SAX_JDOM_JAXP"> SAX, JDOM и JAXP </span></h4><p> Простой API для XML определяет события и интерфейсы, используемые для взаимодействия с<br /> Синтаксический анализатор XML, совместимый с SAX.Вы можете найти полную спецификацию SAX на сайте www.saxproject.org.</p><p> Проект JDOM был создан Джейсоном Хантером и Бреттом Маклафлином и находится на jdom.org/. На сайте JDOM вы<br /> можете найти код, примеры программ и другие инструменты, которые помогут вам начать работу. (Для <em><br /> developerWorks: </em> статей по JDOM, см.<br /> темы.</p><p> Важным моментом в SAX и JDOM является то, что оба они пришли из XML.<br /> Сообщество разработчиков, а не орган по стандартизации.Их широкое признание - дань уважения<br /> активное участие разработчиков XML со всего мира.</p><h4><span class="ez-toc-section" id="i-49"> Связывание и создание ссылок </span></h4><p> В мире XML существует два стандарта для создания ссылок и ссылок: XLink и<br /> XPointer:</p><ul><li> <strong> XLink, </strong> язык связывания XML, определяет множество способов<br /> связывать разные ресурсы вместе. Вы можете использовать обычные двухточечные ссылки (как<br /> с элементом HTML <code> <a> </code>) или расширенными ссылками, которые могут<br /> включать многоточечные ссылки, ссылки через третьих лиц и правила, определяющие<br /> что значит перейти по данной ссылке.Стандарт XLink находится на w3.org/TR/xlink/.</li><li> <strong> XPointer, </strong> язык указателей XML, использует XPath как способ<br /> ссылки на другие ресурсы. Он также включает некоторые расширения XPath. Вы можете<br /> найдите спецификацию на сайте www.w3.org/TR/xptr/.</li></ul><h4><span class="ez-toc-section" id="i-50"> Безопасность </span></h4><p> Есть два важных стандарта, которые касаются безопасности XML-документов. Один<br /> - это стандарт </strong> цифровой подписи XML </strong> (w3.org/TR/xmldsig-core/), который определяет структуру XML-документа для<br /> цифровые подписи.Вы можете создать цифровую подпись XML для любого типа данных,<br /> будь то документ XML, файл HTML, обычный текст, двоичные данные и т. д. Вы<br /> может использовать цифровую подпись, чтобы убедиться, что конкретный файл не был изменен после<br /> он был подписан. Если данные, которые вы подписываете, являются XML-документом, вы можете встроить XML<br /> документ в самом файле подписи, что делает обработку данных и<br /> подпись очень простая.</p><p> Другой стандарт касается шифрования XML-документов.Хотя это здорово, что XML<br /> документы могут быть написаны так, чтобы человек мог их прочитать и понять, это может<br /> означают неприятности, если документ попал в чужие руки. <strong> XML<br /> Стандарт шифрования </strong> (w3.org/TR/xmlenc-core/) определяет, как части XML-документа<br /> может быть зашифрован.</p><p> Используя эти стандарты вместе, вы можете уверенно использовать XML-документы. Я могу<br /> поставить цифровую подпись для важного XML-документа, создав подпись, включающую<br /> Сам XML-документ.Затем я могу зашифровать документ (используя свой закрытый ключ и ваш<br /> открытый ключ) и отправим его вам. Получив его, вы можете расшифровать документ<br /> с вашим личным ключом и моим открытым ключом; это дает вам знать, что я тот, кто<br /> отправил документ. (При необходимости вы также можете доказать, что я отправил документ.)<br /> вы расшифровали документ, вы можете использовать цифровую подпись, чтобы убедиться, что<br /> документ никак не изменялся.</p><h4><span class="ez-toc-section" id="i-51"> Веб-службы </span></h4><p> <strong> Веб-службы </strong> - важный новый вид приложений. Сеть<br /> сервис - это фрагмент кода, который можно обнаружить, описать и получить доступ с помощью<br /> XML. В этом пространстве наблюдается большая активность, но три основных XML<br /> стандарты для веб-служб:</p><ul><li> <strong> SOAP: </strong> Первоначально протокол простого доступа к объектам, SOAP<br /> определяет формат XML-документа, который описывает, как вызвать метод удаленного<br /> кусок кода.Мое приложение создает XML-документ, описывающий метод<br /> Я хочу вызвать, передав ему все необходимые параметры, а затем он отправит это<br /> XML-документ по сети в этот фрагмент кода. Код получает XML<br /> документ, интерпретирует его, вызывает запрошенный мной метод, а затем отправляет обратно XML<br /> документ, описывающий результаты. Версия 1.1 спецификации SOAP находится по адресу w3.org/TR/SOAP/. Визит<br /> w3.org / TR /, чтобы увидеть все<br /> деятельность W3C, связанная с SOAP.</li><li> <strong> WSDL: </strong> Язык описания веб-служб - это XML<br /> словарь, описывающий веб-службу. Можно написать кусок кода<br /> который берет документ WSDL и вызывает невиданную ранее веб-службу. В<br /> информация в файле WSDL определяет имя веб-службы, имена<br /> его методы, аргументы этих методов и другие детали.Вы можете найти<br /> последняя версия WSDL на w3.org/TR/wsdl (без закрывающей косой черты).</li><li> <strong> UDDI: </strong> Универсальное описание, открытие и интеграция<br /> Протокол определяет интерфейс SOAP для реестра веб-служб. Если у тебя есть<br /> фрагмент кода, который вы хотите развернуть как веб-службу, спецификация UDDI определяет<br /> как добавить описание вашей услуги в реестр. Если ты ищешь<br /> для фрагмента кода, который предоставляет определенную функцию, спецификация UDDI определяет, как<br /> чтобы запросить реестр, чтобы найти то, что вам нужно.Источник всего UDDI - uddi.org.</li></ul><h4><span class="ez-toc-section" id="i-52"> Другие стандарты </span></h4><p> Существует ряд других стандартов XML, которые я здесь не рассматриваю. В добавление к<br /> широко применимые стандарты, такие как масштабируемая векторная графика (www.w3.org/TR/SVG/) и<br /> SMIL, язык синхронизированной интеграции мультимедиа (www.w3.org/TR/smil20/),<br /> существует множество отраслевых стандартов. Например, Консорциум HR-XML имеет<br /> определил ряд стандартов XML для человеческих ресурсов; вы можете найти эти стандарты<br /> в hr-xml.орг.</p><p> Наконец, если вы хотите получить хороший источник стандартов XML, посетите титульные страницы для получения информации о<br /> много XML<br /> схемы и другие ресурсы. На этом сайте представлены стандарты для самых разных<br /> отраслей.</p><h3><span class="ez-toc-section" id="i-53"> Примеры из практики </span></h3><h4><span class="ez-toc-section" id="i-54"> Примеры из реальной жизни </span></h4><p> К этому моменту я надеюсь, что вы убедились, что XML имеет огромный потенциал для<br /> революционизируют способ работы электронного бизнеса. Хотя потенциал велик, что действительно важно<br /> реальные результаты на рынке.В этом разделе описаны три тематических исследования в<br /> какие организации использовали XML для оптимизации своих бизнес-процессов и улучшения<br /> их результаты.</p><p> Все рассматриваемые здесь тематические исследования взяты из программы IBM jStart. JStart<br /> команда существует, чтобы помочь клиентам использовать новые технологии для решения проблем. Когда<br /> заказчик соглашается на обязательство jStart, заказчик получает консультации IBM и<br /> услуги разработки со скидкой, при том понимании, что полученный<br /> проект будет использован в качестве примера.Если вы хотите увидеть больше тематических исследований,<br /> включая тематические исследования, связанные с веб-сервисами и другими новыми технологиями, посетите<br /> jStart веб-страница.</p><p> <em> Имейте в виду, что команда jStart больше не занимается проектами XML;<br /> В настоящее время команда сосредоточена на взаимодействии с веб-сервисами. Веб-службы используют XML в<br /> специализированным способом, обычно через упомянутые стандарты SOAP, WSDL и UDDI<br /> ранее в веб-сервисах </em>.</p><h4><span class="ez-toc-section" id="i-55"> Провинция Манитоба </span></h4><h5><span class="ez-toc-section" id="_2"> Рис. 2. Провинция Манитоба </span></h5><p> Правительство провинции Манитоба создало Реестр личного имущества для<br /> круглосуточно предоставлять собственникам самые современные Интернет-услуги.<br /> Основными преимуществами приложения были более быстрый и удобный доступ к<br /> данные об объекте недвижимости, меньше ручных операций в процессе управления имуществом и меньше<br /> звонки в колл-центр правительства.Другими словами, предоставление клиентам большего<br /> сервис при экономии государственных денег и снижении нагрузки на правительство.</p><h4><span class="ez-toc-section" id="i-56"> Дизайн приложения </span></h4><p> Приложение было разработано как многоуровневое приложение <em> n </em> с<br /> интерфейс отделен от внутренней логики. Данные для каждой транзакции, необходимые для<br /> можно преобразовать различными способами, в зависимости от того, как это нужно было отрендерить<br /> на устройстве, представленном в приложении или отформатированном для внутренней обработки<br /> система.Другими словами, приложение было прекрасной возможностью использовать XML.</p><p> Как и в любом приложении, пользовательский интерфейс приложения был чрезвычайно<br /> важный. Чтобы упростить первую реализацию, необходимые XML-данные были<br /> преобразован в HTML. Это дало пользователям интерфейс браузера для приложения. В<br /> реестр был построен с помощью VisualAge для Java, в частности Visual Servlet Builder<br /> составная часть. Он также использует Enterprise Java Beans (EJB), включая сессионные компоненты и<br /> Entity beans.</p><h4><span class="ez-toc-section" id="_XML-39"> Создание нескольких пользовательских интерфейсов с помощью XML </span></h4><p> В дополнение к интерфейсу HTML, клиентский интерфейс Java и электронный B2B<br /> интерфейс тоже были запланированы. Для всех этих интерфейсов структурированные данные XML<br /> трансформируется в соответствующие структуры и документы. Первоначальное развертывание<br /> услуга позволила одному деловому партнеру, Canadian Securities Registration Systems,<br /> для отправки данных транзакции XML с помощью Secure Sockets Layer.XML-транзакция<br /> данные были преобразованы в соответствующий формат для внутренних транзакций.</p><p> Конечным результатом стало то, что провинция Манитоба смогла создать гибкий новый<br /> приложение и их конечные пользователи могут получить более легкий доступ к реестру собственности и<br /> быстро. Поскольку провинция использует XML в качестве формата данных, правительственная ИТ-группа<br /> обладает большой гибкостью при разработке новых интерфейсов и методов доступа.Лучший<br /> в общем, внутренние системы вообще не нужно было менять.</p><h4><span class="ez-toc-section" id="_XML-40"> Банки первого союза на XML </span></h4><h5><span class="ez-toc-section" id="_3_XML"> Рис. 3. Банки первого союза на XML </span></h5><p> Национальный банк первого союза, один из крупнейших банков США, находится в процессе<br /> реинжиниринга многих своих приложений с использованием Java и XML. Как самый большой<br /> компании, его среда неоднородна, с OS / 390, AIX, Solaris, HP / 9000 и<br /> Серверы Windows NT и клиенты Windows NT, Windows 98, Solaris и AIX.Учитывая это<br /> среды, First Union выбрала Java для независимого от платформы кода и XML для<br /> платформенно-независимые данные.</p><h4><span class="ez-toc-section" id="i-57"> Система обмена сообщениями </span></h4><p> Распределенные приложения банка построены на инфраструктуре обмена сообщениями с использованием<br /> IBM MQSeries для доставки сообщений в систему OS / 390. Содержание сообщения<br /> на основе спецификации под названием Common Interface Message (CIM), первый союз<br /> фирменный стандарт.И интерфейсные, и внутренние компоненты приложения.<br /> зависят от формата сообщения. Использование XML в качестве формата данных изолирует оба<br /> стороны приложения от будущих изменений и дополнений в обмен сообщениями<br /> протокол.</p><h4><span class="ez-toc-section" id="_XML-41"> Использование инструментов XML для автоматизации потоков данных </span></h4><p> При разработке этого приложения на основе XML команда First Union и IBM создала<br /> сервис, преобразующий CIM в XML-документ. Другая часть приложения<br /> преобразует XML-запрос в соответствующий формат для внутренней обработки<br /> системы.Наконец, третий сервис конвертирует копии книг COBOL в DTD. Однажды копия<br /> книга была преобразована в DTD, First Union может использовать DTD и парсер XML4J<br /> для автоматической проверки XML-документа; тогда банк может быть уверен, что XML<br /> документ соответствует структуре данных COBOL, которую ожидает OS / 390.</p><p> Использование технологии Java и XML было очень успешным для First Union. В соответствии с<br /> Билл Барнетт, менеджер группы интеграции распределенных объектов в First Union,<br /> «Комбинация Java и XML действительно принесла нам пользу.Без<br /> платформенно-независимая среда, такая как Java, и независимость протокола сообщений, которую мы<br /> полученные от использования XML, у нас не было бы уверенности, что наши распределенные<br /> инфраструктура может развиваться, чтобы удовлетворить потребности наших постоянно растущих клиентов<br /> базы ».</p><h4><span class="ez-toc-section" id="Hewitt_Associates_LLC"> Hewitt Associates LLC </span></h4><h5><span class="ez-toc-section" id="_4_Hewitt_Associates_LLC"> Рис. 4. Hewitt Associates LLC </span></h5><p> Hewitt Associates LLC - глобальная консалтинговая компания, специализирующаяся на<br /> ресурсные решения.У компании более 200 корпоративных клиентов по всему миру; те<br /> компании, в свою очередь, имеют более 10 миллионов сотрудников. Клиенты Hewitt требуют<br /> своевременное и точное предоставление информации о людских ресурсах для этих 10 миллионов<br /> сотрудники.</p><p> До своего участия в jStart компания Hewitt создавала собственные проприетарные решения, когда<br /> клиенты запросили данные о людских ресурсах. Эти нестандартные решения обычно<br /> шлюзы к существующим устаревшим приложениям Hewitt; в некоторых случаях решения<br /> имел дело с собственно байтовыми потоками.Эти специальные приложения были очень дороги для<br /> разработка, тестирование и развертывание, ведущая Hewitt к исследованию веб-сервисов.</p><h4><span class="ez-toc-section" id="i-58"> Веб-сервисы спешат на помощь! </span></h4><p> Чтобы решить эти проблемы, Хьюитт и команда jStart работали вместе над созданием Web<br /> услуги для удовлетворения потребностей клиентов Hewitt. Веб-сервисы - это новый вид<br /> приложение, которое использует XML несколькими интересными способами:</p><ul><li> Прежде всего, веб-службы обычно используют SOAP, стандарт XML для перемещения XML.<br /> данные из одного места в другое.</li><li> Во-вторых, интерфейсы, предоставляемые веб-службой (имена методов, параметры,<br /> типы данных и т. д.) описываются с помощью XML.</li><li> Далее описание веб-службы может быть сохранено или получено из UDDI.<br /> реестр; вся информация, которая входит в реестр или выходит из него, является<br /> в формате XML.</li><li> Наконец, данные, предоставляемые веб-службой, - это <em> сами </em><br /> XML.</li></ul><p> Компания Hewitt представила два приложения, которые демонстрируют их способность предоставлять данные<br /> более гибкими способами:</p><ul><li> С защищенным почтовым ящиком участника авторизованные пользователи могут запрашивать отчеты<br /> содержащие персонализированную информацию о выходе на пенсию и др. emp</li></ul><h2><span class="ez-toc-section" id="Extensible_Markup_Language_XML"> Extensible Markup Language (XML) </span></h2><p> Extensible Markup Language (XML)</p><p align="right"> <small> о XML.Заявление о деятельности в формате XML </small></p><p> <br clear="all" /></p><ol><li> Введение</li><li> Рабочие группы</li><li> События</li><li> Другие ресурсы</li><li> Контакт</li></ol><p> Рядом: XML спецификации и их переводы.</p><p> Extensible Markup Language (XML) - это простой и очень гибкий текстовый формат.<br /> получено из SGML (ISO 8879). Первоначально разработан для решения задач<br /> крупномасштабные электронные публикации, XML также играет все более<br /> важную роль в обмене разнообразными данными в Интернете и<br /> в другом месте.</p><p> На этой странице описывается работа, выполняемая W3C в рамках XML Activity,<br /> и как он устроен. Работа в W3C происходит в <i> рабочих группах </i>.<br /> Рабочие группы в рамках деятельности XML перечислены ниже вместе с<br /> ссылки на их отдельные веб-страницы.</p><p> Вы можете найти и скачать официальные технические спецификации здесь, потому что мы<br /> опубликовать их. Это <em>, а не </em>, где можно найти учебные пособия, продукты,<br /> курсы, книги или другая информация, связанная с XML. Есть несколько ссылок ниже<br /> это может помочь вам найти такие ресурсы.</p><p> Вы найдете ссылки на Рекомендации W3C, Предлагаемые рекомендации,<br /> Рабочие проекты, наборы тестов на соответствие и другие документы на страницах для<br /> каждая рабочая группа. Каждый документ также содержит адреса электронной почты, которые вы можете использовать<br /> для отправки комментариев или вопросов, например, если вы писали программное обеспечение<br /> реализовать их и нашли проблемы или ошибки.</p><p> Пожалуйста, наберите <em>, а не </em>, напишите нам письмо с просьбой помочь вам изучить<br /> язык или спецификация; в Интернете есть множество ресурсов, а<br /> люди, редактирующие и разрабатывающие спецификации, очень заняты.Мы<br /> <em> - это </em>, заинтересованные в технических комментариях и исправлениях.</p><p> Если ваша организация желает присоединиться к W3C, или если вы хотите<br /> формально участвовать в рабочей группе (и иметь необходимые ресурсы для<br /> посещать собрания), вы можете узнать больше о<br /> Консорциум.</p><p> Более подробная информация о каждой из этих рабочих групп содержится в заявлении о деятельности, а также об отдельных рабочих группах.<br /> Группируйте общедоступные веб-страницы.</p><p> У большинства рабочих групп есть как общедоступная веб-страница, так и другая, более закрытая<br /> тот, который доступен только членам W3C.На частной странице есть телефон<br /> номера, расписания встреч и конференц-звонков, ссылки на внутренние<br /> редактирование черновиков и другой административной информации.</p><h4><span class="ez-toc-section" id="_XSLT"> Рабочая группа XSLT </span></h4><p> Рабочая группа XSLT отвечает за<br /> XSL-преобразования (XSLT) и ряд вспомогательных спецификаций.</p><p> Вы можете прочитать общедоступную страницу рабочей группы XSLT<br /> и у них также есть страница только для участников.</p><h4><span class="ez-toc-section" id="_XML-42"> Рабочая группа по эффективному обмену XML </span></h4><p> Эффективный обмен XML<br /> Группа отвечает за разработку способов обмена XML-документами в<br /> способы, которые настолько эффективны, насколько это практично, без ущерба для<br /> совместимость самого XML.Эта рабочая<br /> Группа - <em>, а не </em>, о создании закрытых, проприетарных или запутанных<br /> «Двоичный XML» - W3C стремится к увеличению<br /> совместимость!<br /> Формат EXI - это сжатый поток событий синтаксического анализа, который может использовать<br /> схему XML, чтобы избежать передачи известной информации и<br /> использовать представления собственных типов. Получатель потока EXI не<br /> должны восстанавливать исходный документ, но могут обрабатывать события синтаксического анализа напрямую, как если бы синтаксический анализ был выполнен, экономя ЦП, память, время и полосу пропускания.</p><p> Вы можете прочитать Рабочую группу по эффективному обмену XML<br /> Публичная страница; есть также страница только для участников.</p><h4><span class="ez-toc-section" id="_XML-43"> Рабочая группа XML-запросов </span></h4><p> Рабочая группа по XML-запросам работает над языком XML-запросов, позволяющим<br /> предоставлять гибкие средства запросов и обработки лесов деревьев, обычно<br /> обмен с использованием XML или JSON.<br /> Это включает публикацию XQuery, а также XPath в<br /> совместно с рабочей группой XSLT.</p><p> Вы можете прочитать общедоступную страницу рабочей группы XML-запросов<br /> а также есть только для членов<br /> страница.</p><p> XML Прага,<br /> ведущая конференция по XML в Европе.</p><p> Разметка</p><p>,<br /> в Штутгарте - симпозиум,<br /> имеет местный упор на публикации.</p><p> Существует так много ресурсов, связанных с XML, что мы не можем перечислить<br /> их все здесь. Это <em> хорошая вещь </em>, потому что это означает, что XML - это<br /> успех! Помимо истории разработки XML в W3C, существует<br /> обширный указатель на титульных страницах,<br /> поддерживается Робином Кавером.Общедоступные веб-страницы отдельных рабочих групп могут<br /> есть ссылки на определенные ресурсы. Существуют группы новостей Usenet (например, comp.text.xml) и общедоступные списки рассылки (например,<br /> xml-dev).</p><p> Вы также можете попробовать поисковую систему, такую ​​как Google, для:</p> <address> Лиам Куин, руководитель деятельности по XML<br /> </address><hr /><h3><span class="ez-toc-section" id="i-59"> Примечание </span></h3><p> Спецификация XML и другая информация, относящаяся к ядру XML.<br /> Рабочая группа переехала в основную рабочую группу XML.<br /> Страница.</p><p> Есть также отдельная страница для переводов.</p><p> Существует отдельная страница, описывающая XML-спецификации DTD, используемые для многих из наших<br /> технические характеристики.</p><p> Также есть + страница для XML.</p><p> Комментарии к документации по XML</p><h2><span class="ez-toc-section" id="-_C"> - Руководство по программированию на C # </span></h2><ul data-bi-name="page info" lang="en-us" dir="ltr"><li> <time data-article-date="" aria-label="Article review date" datetime="2015-07-20T00:00:00.000Z" data-article-date-source="ms.date"> 20.07.2015 </time></li><li> 2 минуты на чтение</li><li></li></ul><h4><span class="ez-toc-section" id="i-60"> В этой статье </span></h4><p> В C # вы можете создать документацию для своего кода, включив элементы XML в специальные поля комментариев (обозначенные тройной косой чертой) в исходном коде непосредственно перед блоком кода, на который, например, ссылаются комментарии.</p><pre> <code> /// <резюме> /// Этот класс выполняет важную функцию. /// </summary> открытый класс MyClass {} </code> </pre><p> При компиляции с параметром -doc компилятор будет искать все теги XML в исходном коде и создавать файл документации XML. Чтобы создать окончательную документацию на основе файла, созданного компилятором, вы можете создать собственный инструмент или использовать такой инструмент, как DocFX или Sandcastle.</p><p> Для ссылки на элементы XML (например, ваша функция обрабатывает определенные элементы XML, которые вы хотите описать в комментарии к документации XML), вы можете использовать стандартный механизм цитирования (<code> <</code> и <code>> </code>).Для ссылки на общие идентификаторы в элементах ссылки на код (<code> cref </code>) можно использовать либо escape-символы (например, <code> cref = "List & lt; T & gt;" </code>), либо фигурные скобки (<code> cref = "List {T}" </code> ). В качестве особого случая компилятор анализирует фигурные скобки как угловые, чтобы сделать комментарий документации менее громоздким для автора при обращении к универсальным идентификаторам.</p><div class='yarpp-related yarpp-related-none'><p>No related posts.</p></div></div><div class="entry-footer is-start"> <b>Share :</b><ul class="post-share"><li><a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://wwwoldi.ru/raznoe/xml-yazyk-programmirovaniya-uchebnik-xml-dlya-nachinayushhih.html"><i class="fab fa-facebook-f"></i></a></li><li><a target="_blank" href="http://twitter.com/share?text=Xml%20язык%20программирования:%20Учебник%20XML%20для%20начинающих&url=https://wwwoldi.ru/raznoe/xml-yazyk-programmirovaniya-uchebnik-xml-dlya-nachinayushhih.html"><i class="fab fa-twitter"></i></a></li><li><a target="_blank" href="http://pinterest.com/pin/create/button/?url=https://wwwoldi.ru/raznoe/xml-yazyk-programmirovaniya-uchebnik-xml-dlya-nachinayushhih.html&media=&description=Xml%20язык%20программирования:%20Учебник%20XML%20для%20начинающих"><i class="fab fa-pinterest"></i></a></li><li> <a target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&title=Xml%20язык%20программирования:%20Учебник%20XML%20для%20начинающих&url=https://wwwoldi.ru/raznoe/xml-yazyk-programmirovaniya-uchebnik-xml-dlya-nachinayushhih.html"><i class="fab fa-linkedin"></i></a></li></ul></div></div></article></div><nav class="navigation post-navigation" aria-label="Записи"><h2 class="screen-reader-text">Навигация по записям</h2><div class="nav-links"><div class="nav-previous"><a href="https://wwwoldi.ru/raznoe/linuks-gentu-razrushiteli-legend-gentoo-linux-habr.html" rel="prev"><span class="nav-subtitle">Previous:</span> <span class="nav-title">Линукс генту: Разрушители легенд — Gentoo Linux / Хабр</span></a></div><div class="nav-next"><a href="https://wwwoldi.ru/raznoe/kak-obnovit-explorer-do-poslednej-versii-kakk-obnovit-microsoft-edge-obzor-i-preimushhestva.html" rel="next"><span class="nav-subtitle">Next:</span> <span class="nav-title">Как обновить explorer до последней версии: Какк обновить Microsoft Edge — обзор и преимущества</span></a></div></div></nav><aside class="related-posts"><h2 class="section-heading">Related Post</h2><div class="row"><div class="rpl-xl-4 rpl lg-6"><article class="related-post hentry post"><div class="post-wrapper"><div class="main-entry-content"><header class="entry-header"><h4><a href="https://wwwoldi.ru/raznoe/kak-postavit-delta-v-vorde-kak-v-vorde-postavit-deltu.html">Как поставить дельта в ворде: Как в Ворде поставить дельту</a></h4></header></div></div></article></div><div class="rpl-xl-4 rpl lg-6"><article class="related-post hentry post"><div class="post-wrapper"><div class="main-entry-content"><header class="entry-header"><h4><a href="https://wwwoldi.ru/raznoe/chto-takoe-servis-pak-chto-takoe-service-pack.html">Что такое сервис пак: Что такое Service Pack?</a></h4></header></div></div></article></div><div class="rpl-xl-4 rpl lg-6"><article class="related-post hentry post"><div class="post-wrapper"><div class="main-entry-content"><header class="entry-header"><h4><a href="https://wwwoldi.ru/raznoe/kak-perevesti-yutub-v-nochnoj-rezhim-sorry-this-page-cant-be-found.html">Как перевести ютуб в ночной режим: Sorry, this page can’t be found.</a></h4></header></div></div></article></div></div></aside></main><div id="comments" class="comments-area"><div id="respond" class="comment-respond"><h3 id="reply-title" class="comment-reply-title">Добавить комментарий <small><a rel="nofollow" id="cancel-comment-reply-link" href="/raznoe/xml-yazyk-programmirovaniya-uchebnik-xml-dlya-nachinayushhih.html#respond" style="display:none;">Отменить ответ</a></small></h3><form action="https://wwwoldi.ru/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">Ваш адрес email не будет опубликован.</span> <span class="required-field-message">Обязательные поля помечены <span class="required">*</span></span></p><p class="comment-form-comment"><label for="comment">Комментарий <span class="required">*</span></label><textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">Имя <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p><p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p><p class="comment-form-url"><label for="url">Сайт</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p><p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Отправить комментарий" /> <input type='hidden' name='comment_post_ID' value='12703' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /></p></form></div></div></div><div class="rpl-lg-4 secondary" id="sidebar-secondary"><aside id="secondary" class="sidebar"><section id="categories-3" class="widget sidebar-widget widget_categories"><div class="sidebar-title"><h3 class="widget-title">Рубрики</h3></div><ul><li class="cat-item cat-item-8"><a href="https://wwwoldi.ru/category/jquery">Jquery</a></li><li class="cat-item cat-item-5"><a href="https://wwwoldi.ru/category/mysql">Mysql</a></li><li class="cat-item cat-item-4"><a href="https://wwwoldi.ru/category/php">Php</a></li><li class="cat-item cat-item-9"><a href="https://wwwoldi.ru/category/dlya-chajnikov">Для чайников</a></li><li class="cat-item cat-item-3"><a href="https://wwwoldi.ru/category/raznoe">Разное</a></li><li class="cat-item cat-item-7"><a href="https://wwwoldi.ru/category/server">Сервер</a></li><li class="cat-item cat-item-1"><a href="https://wwwoldi.ru/category/sovety">Советы</a></li><li class="cat-item cat-item-6"><a href="https://wwwoldi.ru/category/ustanovka">Установка</a></li></ul></section><section id="calendar-5" class="widget sidebar-widget widget_calendar"><div id="calendar_wrap" class="calendar_wrap"><table id="wp-calendar" class="wp-calendar-table"><caption>Декабрь 2024</caption><thead><tr><th scope="col" title="Понедельник">Пн</th><th scope="col" title="Вторник">Вт</th><th scope="col" title="Среда">Ср</th><th scope="col" title="Четверг">Чт</th><th scope="col" title="Пятница">Пт</th><th scope="col" title="Суббота">Сб</th><th scope="col" title="Воскресенье">Вс</th></tr></thead><tbody><tr><td colspan="6" class="pad"> </td><td>1</td></tr><tr><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td></tr><tr><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td></tr><tr><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td></tr><tr><td id="today">23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td></tr><tr><td>30</td><td>31</td><td class="pad" colspan="5"> </td></tr></tbody></table><nav aria-label="Предыдущий и следующий месяцы" class="wp-calendar-nav"> <span class="wp-calendar-nav-prev"><a href="https://wwwoldi.ru/2024/11">« Ноя</a></span> <span class="pad"> </span> <span class="wp-calendar-nav-next"> </span></nav></div></section><section id="archives-11" class="widget sidebar-widget widget_archive"><div class="sidebar-title"><h3 class="widget-title">Архивы</h3></div><ul><li><a href='https://wwwoldi.ru/2024/11'>Ноябрь 2024</a></li><li><a href='https://wwwoldi.ru/2024/10'>Октябрь 2024</a></li><li><a href='https://wwwoldi.ru/2021/11'>Ноябрь 2021</a></li><li><a href='https://wwwoldi.ru/2021/10'>Октябрь 2021</a></li><li><a href='https://wwwoldi.ru/2021/09'>Сентябрь 2021</a></li><li><a href='https://wwwoldi.ru/2021/08'>Август 2021</a></li><li><a href='https://wwwoldi.ru/2021/07'>Июль 2021</a></li><li><a href='https://wwwoldi.ru/2021/06'>Июнь 2021</a></li><li><a href='https://wwwoldi.ru/2021/05'>Май 2021</a></li><li><a href='https://wwwoldi.ru/2021/04'>Апрель 2021</a></li><li><a href='https://wwwoldi.ru/2021/03'>Март 2021</a></li><li><a href='https://wwwoldi.ru/2021/02'>Февраль 2021</a></li><li><a href='https://wwwoldi.ru/2021/01'>Январь 2021</a></li><li><a href='https://wwwoldi.ru/2020/12'>Декабрь 2020</a></li><li><a href='https://wwwoldi.ru/2020/11'>Ноябрь 2020</a></li><li><a href='https://wwwoldi.ru/2020/10'>Октябрь 2020</a></li><li><a href='https://wwwoldi.ru/2020/09'>Сентябрь 2020</a></li><li><a href='https://wwwoldi.ru/2020/08'>Август 2020</a></li><li><a href='https://wwwoldi.ru/2020/07'>Июль 2020</a></li><li><a href='https://wwwoldi.ru/2020/06'>Июнь 2020</a></li><li><a href='https://wwwoldi.ru/2020/05'>Май 2020</a></li><li><a href='https://wwwoldi.ru/2020/04'>Апрель 2020</a></li><li><a href='https://wwwoldi.ru/2020/03'>Март 2020</a></li><li><a href='https://wwwoldi.ru/2020/02'>Февраль 2020</a></li><li><a href='https://wwwoldi.ru/2020/01'>Январь 2020</a></li><li><a href='https://wwwoldi.ru/2019/12'>Декабрь 2019</a></li><li><a href='https://wwwoldi.ru/2019/11'>Ноябрь 2019</a></li><li><a href='https://wwwoldi.ru/2019/10'>Октябрь 2019</a></li><li><a href='https://wwwoldi.ru/2019/09'>Сентябрь 2019</a></li><li><a href='https://wwwoldi.ru/2019/08'>Август 2019</a></li><li><a href='https://wwwoldi.ru/2019/07'>Июль 2019</a></li><li><a href='https://wwwoldi.ru/2019/06'>Июнь 2019</a></li><li><a href='https://wwwoldi.ru/2019/05'>Май 2019</a></li><li><a href='https://wwwoldi.ru/2019/04'>Апрель 2019</a></li><li><a href='https://wwwoldi.ru/2019/03'>Март 2019</a></li><li><a href='https://wwwoldi.ru/2019/02'>Февраль 2019</a></li><li><a href='https://wwwoldi.ru/2019/01'>Январь 2019</a></li><li><a href='https://wwwoldi.ru/2018/12'>Декабрь 2018</a></li><li><a href='https://wwwoldi.ru/2018/11'>Ноябрь 2018</a></li><li><a href='https://wwwoldi.ru/2018/10'>Октябрь 2018</a></li><li><a href='https://wwwoldi.ru/2018/09'>Сентябрь 2018</a></li><li><a href='https://wwwoldi.ru/2018/08'>Август 2018</a></li><li><a href='https://wwwoldi.ru/2018/07'>Июль 2018</a></li><li><a href='https://wwwoldi.ru/2018/06'>Июнь 2018</a></li><li><a href='https://wwwoldi.ru/2018/05'>Май 2018</a></li><li><a href='https://wwwoldi.ru/2018/04'>Апрель 2018</a></li><li><a href='https://wwwoldi.ru/2018/03'>Март 2018</a></li><li><a href='https://wwwoldi.ru/2018/02'>Февраль 2018</a></li><li><a href='https://wwwoldi.ru/2018/01'>Январь 2018</a></li><li><a href='https://wwwoldi.ru/1970/02'>Февраль 1970</a></li><li><a href='https://wwwoldi.ru/1970/01'>Январь 1970</a></li></ul></section></aside></div></div></div></div><footer class="site-footer is-bg"><div class="footer-in"><div class="container"><div class='row'><div class="rpl-xl-12 rpl-md-6 rpl-sm-12 footer-widget-item"></div></div></div></div><div class="site-info"><div class="container"><div class="siteinfo-text"> 2024 © Все права защищены. Карта сайта</div></div></div></footer> <noscript><style>.lazyload{display:none}</style></noscript><script data-noptimize="1">window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script><script async data-noptimize="1" src='https://wwwoldi.ru/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js'></script> <!-- noptimize --> <style>iframe,object{width:100%;height:480px}img{max-width:100%}</style><script>new Image().src="//counter.yadro.ru/hit?r"+escape(document.referrer)+((typeof(screen)=="undefined")?"":";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+";"+Math.random();</script> <!-- /noptimize --></div> <script defer src="https://wwwoldi.ru/wp-content/cache/autoptimize/js/autoptimize_4ec849326303dc135eb2ade0194eb357.js"></script></body></html><script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="8ed6efd2ae1cd20e5d15f42c-|49" defer></script>