Электронная коммерция. Учебное пособие по выполнению практических работ
.pdf
в Веб-сервисах реализация возможностей языка XML осуществляется при помощи протоколов UDDI, WSDL, SOAP.
UDDI (Universal Description and Discovery Protocol) — универсальный протокол описания и обнаружения местонахождения бизнесов (компаний или частных лиц, осуществляющих электронную коммерцию) и интеграции бизнес-услуг.
WSDL (Web Services Description Protocol) — протокол описания Веб-сервисов. При помощи WSDL описываются интерфейсы, параметры и требования к объединению.
SOAP (Simple Object Access Protocol) — простой протокол доступа к объектам. Используется поверх HTTP (протокол, который используется между Веб-серверами и Веб-браузерами), а также может быть использован через ТСР, SMTP (Simple Mail Transfer Protocol) или IBM MQSeries.
Синтаксис языка подобен синтаксису языка HTML. Каждому открывающему флагу (тегу, дескриптору) <тег> в программе должен соответствовать закрывающий тег </тег>, или <тег/>. В последнем случае, при помощи тега <тег/> задается элемент без содержания. Тег задает элемент, содержит тип элемента, его имя и уникальный идентификатор, внутри тега могут размещаться атрибуты. Атрибуты указывают на дополнительные свойства элемента. Язык XML позволяет пользователю создавать собственные флаги. Например, для создания элемента Petrov в имени заказчика используется флаг (тэг) <CustomerName>.
При записи кода программы это выглядит так: <CustomerName> Петров</CustomerName>.
Для определения более полных реквизитов заказчика может использоваться флаг <Customer>, включающий, кроме фамилии, телефон и название фирмы:
<Customer>
<CustomerName> Петров</CustomerName> <phone > 123-45-67 </phone >
<Company > CompTek</Company> </Customer>
Флаг <Customers> используется для ввода данных группы пользователей.
Особенностью языка XML является его зависимость от регистра. Все флаги, атрибуты и содержание зависят от регистра, на котором вводятся символы.
81
Часть 5. «Использование языка XML»
Синтаксис языка XML поддерживается обозревателем Internet Explorer версий 4, 5 и 6.
Пример кода программы HTML-документа, использующего синтаксис XML и вид документа, соответствующего этой программе, показан на приведенном Листинге 3.9. Программа предназна- чена для составления списка заказчиков и их характеристик.
Листинг 3.9. Код программы простейшего HTML-документа, использующего синтаксис XML
<HTML>
<HEAD>
<TITLE> XML </TITLE> </HEAD> <BODY>
<CUSTOMERS>
<HR SIZE=5 WIDTH=80% ALIGN=CENTER COLOR="Green"> <CUSTOMER> <CUSTOMERName>Петров</CUSTOMERName> <phone>123-45-67</phone>
<Company>CompTek</Company>
</CUSTOMER>
<HR SIZE=5 WIDTH=80% ALIGN=CENTER COLOR="Blue"> <CUSTOMER> <CUSTOMERName>Сидоров</CUSTOMERName> <phone>321-654-987</phone> <Company>ВымпелКом</Company>
</CUSTOMER>
</CUSTOMERS>
</BODY>
</HTML>
Вид документа
Петров 123-45-67 CompTek
Сидоров 321-654-987 ВымпелКом
82
Задание 3.13. «Создание простейшего HTML-документа, использующего синтаксис XML»
Цель задания: Научиться создавать простейший HTML-документ, использующий синтаксис XML
Задание: Создать HTML-документ, использующий синтаксис XML, со списком заказчиков и их характеристик.
Выполнение:
1.Открыть Блокнот, выполняя команды Пуск Программы Стандартные Блокнот.
2.Набрать код программы в соответствии с листингом 3.9.
3.Изменить фамилии заказчиков, названия фирм и телефонов по своему усмотрению.
4.Сохранить программу в своей папке с расширением .txt, присвоив файлу имя JS6.
5.Сохранить программу в своей папке с расширением .htm, присвоив файлу имя JS6.
6.Вызвать программу на выполнение, дважды щелкнув левой клавишей мыши на значке с именем JS6.htm.
7.Сохранить программу в своей папке.
Структура и составляющие XML-документов. Документы XML могут быть двух типов — правильно построенные документы и действительные документы.
Правильно построенные документы удовлетворяют специфике XML, но не имеют определения типа документа DTD. DTD (Document Type Definition) определение типа документа, описание типа (шаблона) документа.
Пример правильного документа
<?xml version="1.0"?>
<body > Здесь записывается тело (содержание) правильного документа
</body >
Действительные документы XML — документы состоят из двух частей: из определения используемого языка DTD и собственно документа. DTD — это преамбула документа, где определяются его компоненты и структура.
Пример действительного документа
<?xml version="1.0"?>
83
Часть 5. «Использование языка XML»
<!DOCTYPE body [ <!ELEMENT body (#PCDATA)> ]>
<body > Здесь записывается тело (содержание) правильного и действительного документа
</body >
Определение типа документа DTD. Определение типа документа DTD (Document Type Definition) определяет части документа и указывает, каким образом они могут использоваться, что может быть в них размещено, требуются ли фрагменты документа.
DTD может включать в себя набор объявлений элементов и атрибутов, сущности (entities), условные обозначения и комментарии. Различные объявления компонентов определяют, как документ будет структурирован и эта информация передается анализатору. Анализатор отправляет результаты в приложение, обеспечивающее просмотр данных.
Определение типа документа DTD следует сразу после строки объявления XML:
<?xml version="1.0" encoding= "UTF=8"> Оно начинается со второй строки <!DOCTYPE имя документа
[.......
.........]>
Вторая строка служит для связывания XML-документа с соответствующим DTD. В квадратные скобки помещается объявление элементов документа, их атрибутов и сущностей.
Элемент. Объявления элементов записываются по следующему формату <!ELEMENT имя содержание>. Например, ниже приведено описание элемента DOC и составляющих его элементов SUBJECT, DATE, ADDRESS, MEMO. Для элементов SUBJECT, DATE, ADDRESS, MEMO указан тип (#PCDATA), указывающий на то, что содержимым элементов являются обычные текстовые данные.
<!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO)> <!ELEMENT SUBJECT (#PCDATA)
<!ELEMENT DATE (#PCDATA) <!ELEMENT ADDRESS (#PCDATA)
84
<!ELEMENT MEMO (#PCDATA)
В DTD кроме элементов могут использоваться атрибуты и сущности.
Атрибут. Атрибуты используются для:
определения отдельных свойств элементов (размер, высота, вес, цвет и т. д.);
указания местоположения объекта (сноски, графики, ссылки);
определения сведений о форматировании отображаемых объектов, их виде.
Формат представления атрибута имеет вид:
<ATLIST имя_элемента имя_атрибута тип использовать_по_умол- чанию>
После указания имени элемента указывается присваиваемое атрибуту имя, его тип и возможность использовать атрибут по умол- чанию.
В указанном выше примере может быть продолжение: <!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO)> <!ELEMENT SUBJECT (#PCDATA)
<!ELEMENT DATE (#PCDATA) <!ELEMENT ADDRESS (#PCDATA) <!ELEMENT MEMO (#PCDATA) <!ATTLIST SUBJECT
sex CDATA #REQUIRED number CDATA #REQUIRED>
Здесь указано, что элемент SUBJECT имеет атрибуты sex и number, которые имеют тип CDATA. Это значит, что их содержимым может быть строки из любых символов, кроме <, >, &, ". Слово #REQUIRED означает, что атрибуты sex и number являются обязательными для элемента SUBJECT.
Сущность. Сущности представляют собой текст или данные, которые могут быть заменены в документе на основании их объявления в сущности. Например, пусть в DTD имеется сущность вида:
<!ENTITY Юпитер "Программное обеспечение фирмы ИВК для интеграции приложений"
85
Часть 5. «Использование языка XML»
Если процессор XML встретит в тексте сущность & Юпитер , то он заменит его на текст Программное обеспечение фирмы ИВК для интеграции приложений.
DTD может помещаться внутри и вне документа и может вообще отсутствовать, т. е. оно не является обязательным.
В случае внешнего DTD оно может быть общедоступным и в этом случае используется ключевое слово PUBLIC. Например:
<!DOCTYPE book PUBLIC "–//Company XYZ//DTD book//EN" http://www.site.com/dtds/book.dtd>
Начинается такое объявление со знака минус, далее следуют две косые черты, затем указывается владелец DTD. Это объявление не является стандартным, его владельцем является фирма XYZ.book — это имя DTD и оно расположено по адресу http://www.site.com/dtds/book.dtd>.
Если же DTD собственное и оно расположено на локальной машине, то ставится ключевое слово SYSTEM. Так, DTD расположенное на локальной машине будет иметь вид:
<!DOCTYPE book SYSTEM "http://www.site.com/dtds/book.dtd">.
Âэтом объявлении за ключевым словом SYSTEM следует адрес
èимя файла, в котором хранится DTD. Двойные наклонные линии не ставятся и имя владельца не указывается.
Факторы, влияющие на выбор типа DTD:
1)Большие документы требуют применения внешних DTD. В этом случае при помощи DTD создается приближение к стандартизации.
2)Малые документы не требуют использования внешних DTD.
3)В некоторых документах, предназначенных для интернет применение внешних DTD не целесообразно.
4)XML-процессоры, не проверяющие действительности XML-документов, не требуют DTD.
Задание 3.14. Создание XML-документ без DTD.
Цель задания: Научиться создавать простейший XML-документ без DTD
Задание: Создать XML-документ без DTD
Выполнение:
1) Наберите код программы в соответствии с приведенным ниже Листингом 3.10.
86
Листинг 3.10. Код программы XML-документа без DTD.
<?xml version="1.0"?> <documents> <books>
<book id="Book1"> <title> Contest </title>
<author>Ivan Petrov </author> <date>21.08.05</date> </book>
<book id="Book2"> <title> Floriculture</title>
<author>P. Ivanov </author> <date>10.10.04</date> </book>
</books>
<articles>
<article id="Article1"> <author>Nic. Sidorov </author> <title> Electricity</title> <date>12.09.05</date> </article>
</articles>
</documents>
2)Сохраните документ в своей папке дважды. Один раз с расширением .txt и второй раз с расширением .xml, указав при этом кодировку Юникод, тип документа — все файлы.
3)Выполните программу с расширением .xml.
Cоздание XML-документ с внутренним DTD
Приведем пример внутреннего DTD:
<?xml version="1.0"> <!DOCTYPE DOC [
<!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO)> <!ELEMENT SUBJECT (#PCDATA)
<!ELEMENT DATE (#PCDATA) <!ELEMENT ADDRESS (#PCDATA) <!ELEMENT MEMO (#PCDATA)
87
Часть 5. «Использование языка XML»
<! ENTITY PUBLISHER "Solon"> ]>
<DOC>
<SUBJECT> Today's Memo </SUBJECT>
<DATE> 01.10.05 </DATE> <ADDRESS> MOSCOW</ADDRESS> <MEMO> It is best Publisher </MEMO> </DOC>
Âэтом коде программы запись <!ELEMENT DOC (SUBBJECT, DATE, ADDRESS, MEMO)> определяет список элементов для корневого элемента DOC. Оно сообщает анализатору, что корневой элемент DOC содержит элементы потомки SUBJECT, DATE, ADDRESS, MEMO и что эти элементы должны появиться в документе в этом же порядке. Если порядок будет нарушен, то будет сообщение об ошибке.
<!ELEMENT SUBJECT (#PCDATA) — определяет элемент SUBJECT и указывает, что этот элемент будет содержать символьные данные, которые подлежит обрабатывать анализатором. Аналогично записываются другие элементы.
<! ENTITY PUBLISHER "Solon">определяет простую сущность и указывает, что значением этой сущности является издательство Solon.
Пример 5.1
Пусть фирма осуществляет перевозки товаров автомашинами с прицепом (trailers). На каждую автомашину может быть помещен 20или 30-футовый контейнер (container). В каждом контейнере находятся коробки (box) c товарами (contents). Для сопровождения товаров создается XML-документ с именем trailer. Описание типа документа помещается сразу после строки с описанием версии языка XML и может иметь вид:
<!DOCTYPE trailers [
<!ELEMENT trailer(container, box+)> <! ELEMENT container(#PCDATA)> <! ELEMENT box( Type, content)> <! ELEMENT Type(#PCDATA)>
<! ELEMENT content (#PCDATA)>
]
88
В приведенном примере конструкция <!DOCTYPE trailers [..] задает описание элементов и структуру документа trailers. После этой строки следует строка <!ELEMENT trailer(container, box+)>. В этой строке описан элемент trailer документа trailers. Он содержит элементы container и box+. Знак + после элемента box указывает на то, что таких элементов может быть более одного. Запись <! ELEMENT container(#PCDATA)> описывает элемент с именем container, а атрибут #PCDATA указывает на то, содержимое элемента могут составлять символьные данные. Код программы xml-документа с использованием внутреннего DTD приведен на Листинге 3.11.
Листинг 3.11. Код программы простейшего XML-документа c использованием внутреннего DTD
<?xml version="1.0"?> <!DOCTYPE trailers[
<!ELEMENT trailer (identification,box+,content)> <!ELEMENT identification (trailer_type,container,customer)> <!ELEMENT trailer_type (#PCDATA)>
<!ELEMENT container (#PCDATA)> <!ELEMENT customer(#PCDATA)> <!ELEMENT box(#PCDATA)> <!ELEMENT content(#PCDATA)> ]>
<trailer>
<identification> <trailer_type>KPAZ_77-95-03</trailer_type> <container Type="20f">5674321</container> <customer> <CustomerName>Ivanov</CustomerName> <phone>432-76-51</phone> <Company>IBMM</Company> </customer>
</identification>
<box Type="Super Empire"> 100_box </box> <content> video </content>
</trailer>
После работы программы создается XML-документ, показанный на рисунке 3.9.
89
Часть 5. «Использование языка XML»
<?xml version="1.0" ?>
<!DOCTYPE trailers (View Source for full doctype...)> <trailer>
<identification> <trailer_type>KÐÀZ_77-95-03</trailer_type> <container Type="20f">5674321</container> <customer> <CustomerName>Ivanov</CustomerName> <phone>432-76-51</phone> <Company>IBMM</Company> </customer>
</identification>
<box Type="Super Empire">100_box</box> <content>video</content>
</trailer>
Рис. 3.9 XML-документ
Задание 3.15. Cоздание XML-документ с внутренним DTD
Цель задания: Научиться создавать простейший XML-документ с внутренним DTD
Выполнение:
1)К коду программы, записанному в Листинге 3.10, допишите внутреннее объявление типа документа DTD. Примите document в качестве корневого элемента, а входящими в него элементами book1, book2, article.
2)Дважды сохраните документ в своей папке. Один раз с расширением .txt и второй раз с расширением .xml, задав при этом кодировку Юникод.
3)Выполните программу с расширением .xml.
Преимуществом XML-документов по сравнению с HTML-до- кументами является их структурированность и наглядность, что следует из приведенных примеров. Для подтверждения этого на Листинге 3.12 приведен код программы для создания XML-доку- мента. Создается прайс-лист в соответствии с заданием 3.4. В программе описаны только две первые строки прайс-листа с названием Компьютеры.
Листинг 3.12. Код программы прайс-листа на языке ХML
<?xml version="1.0"?>
90
