Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Трэвис Б. -> "XML и SOAP: программирование для серверов BizTalk. Новейшие технологии" -> 95

XML и SOAP: программирование для серверов BizTalk. Новейшие технологии - Трэвис Б.

Трэвис Б. XML и SOAP: программирование для серверов BizTalk. Новейшие технологии — Русская Редакция, 2001. — 496 c.
ISBN5-750Z-0129-5
Скачать (прямая ссылка): xmlprogrammdlyaserverov2001.pdf
Предыдущая << 1 .. 89 90 91 92 93 94 < 95 > 96 97 98 99 100 101 .. 157 >> Следующая

0O xml-rid'SD instance scan File Чу1: Is. x'nj" lltli.OU" '%c" done

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

Как же продолжить анализ? Для этого OmniMark использует управляющую последовательность Считайте это эквивалентом инструкции continue Mfii-purse. Поскольку для генерации вывода, соответствующего содержанию текущего элемента, нужно будет продолжить анализ, этот оператор имеет простой последовательности %-г, которую вы можете вывести в строку текста. Инструкция do просто устанавливает анализатор в некое начальное состояние для обработки ввода. Чтобы процесс начался, нужно вывести оператор продолжения анализа

du xml-pai S<; сіаелпеті Г ейіГі file "daffy.xml" eilt plit Начіїіо S6& Конец" done

Каждое правило разметки обязано использовать оператор продолжения анализа или его альтернативу — оператор suppress, который продолжает анализ, подавляя вывод анализируемого содержимого в поток По очевидным причинам в каждом правиле разметки

может быть не более одного оператора или suppress. He делайте частой ошибки — не думайте, что служит для подстановки значения содержимого элемента. Это абсолютно неверно. Любой вывод, получаемый с помощью — либо п-тл'-окданных, напрямую направленный в текущий вывод, либо результат выполнения правил синтаксического анализа содержимого элемента.

Создание областей ввода

Для обработки любых данных в программе на OmniMark нужно определить область в которой находятся данные, и затем сканировать или анализировать эти данные. Можно создать текущую область ввода, используя оператор using input as и имя источника данных: Часть IV Справочные материмы

р raccas

USlng ififiui аз file "daffy. Ul" submit 4carrenl:-injJut

Встроенная переменная їсиї-п'їн-іпрнп і рп н и мает значения источника для текущей области ввода. Вы можете упростить этот пронесе, указав имя источника данных прямо в операторе submit.

Process

Submit fUe "daf,cy. txt"

В предыдущем примере оператор submit создает текущую області ввода и инициирует процесс сканирования. Однако встроенная переменная если вы хотите продолжить обработку текущей области ввода в другой операции сканирования. Ниже оператор do scan в праінїж find берет на себя выполнение сканирования в текущей точке, выводит некие лашіг.іе. а затем позволяет исходному продолжить обработку:

Process

submit file '^деіе

find

do scan flcurrent-ir.put

match .ifv" => table-body ul output

done

Текущая область ввода устанавливается и оператором do .ж-гж.« Параметр scan описывает источник данных.

Jo хні I-parse document scan file ducks.xrl output "%c;" done

Создание областей вывода

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

обгоні duck

local stream DS ops"' bar as file ПшвшйНйе A OmniMsrk дня нетерпеливых. по

і і. ¦

using output SS bar do

oat put ' K-pfi ¦ рй к{№ Sc

Правило временно назначает текущим устройством вывода файл Bar.txt. Любой вывод внутри блока операторов {!п.,.done согласно оператору using as будет направляться в файл. По окончании работы блока текущим внїЖї станет устройство по умолчанию. Заметьте, однако, что оператор output содержит оператор продолжения анализа < Чч'), так что новое устройство вывода будет действовать для всех операций обработки элемента duck. Оно становится текущей областью вывода для всех операторов output, выполняющихся в любом правиле разметки, которое срабатывает в результате анализа элемента duck.

Чтобы понять, как работает процесс создания области вывода, рассмотрим файл XML Duck,хіпі. Он содержит схему и следующую разметку:

А р1г.уг утка</с 1 ?>о "> иод^од^т к <э1сус- ^"MEty^cltyi. • > < /1__г te>

Теперь рассмотрим такую программу на OmniMark:

global, st'1Ciain чат-'tis gl.titfaI St -а' р".зу'-і ¦'

огосевз

open as ;'i'.i'.- "i-.'Tii'h

open аійуг^-s as using as words

do .ий-пг-гзо instance

file ' 'Jul!,. >unJ output' %'C"

done element line

output element player using as

output

dorie

Выполнив эту программу, мы получим два файла: words.txt будет содержать фразу подходит к а people.txt — Утка бармену Хоро- 288

IV Спрзаочяые материалы

шенько рассмотрите этот код. чтобы убедиться, что вы действительно понимаете. какое устройство вывода будет текущим в правиле element line. Вам ясно, почему вывод в файлы выполнен именно так? Если да, то вы знаете достаточно, чтобы понимать, как OnmiMaik управляет выводом. Нет? Не переживайте. Такая иерархическая програм м нам модель — новинка для большинства программистов. Так как XML-документ — тоже иерархический объект, эта модель имеет важное значение для обработки подобных документов. Просто помните, что модель вывода имеет иерархическую структуру. Поработав с OmniMark или с другим иерархическим языком программирования, вы начнете понимать, как это происходит.
Предыдущая << 1 .. 89 90 91 92 93 94 < 95 > 96 97 98 99 100 101 .. 157 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100