Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009

.pdf
Скачиваний:
4972
Добавлен:
14.05.2016
Размер:
14.64 Mб
Скачать

1 7. Публикация БД с использованием XML

663

всего преобразовать в XML-документ HTML-страницы. При этом нужно обеспечить дополнительные ограничения, накладываемые со стороны XML. Можно получить также XML-доку менты путем преобразования следующих типов документов: файлов PDF (Portable Document Format), используемых для представления в Интернете текстовых и числовых данных большого объема; документов табличных процессоров, таких как Excel; файлов баз данных, например СУБД Access; файлов документов текстовых процессоров, таких как Word.

В общем случае преобразование в ХМ L-документ из файла документ другого формата может представлять достаточно трудоемкую задачу. Для решения задачи такого преобразования могут быть задействованы разнообразные инструментальные средства, такие как редакторы XML, синтаксические обозреватели и процессоры, серверные продукты, обозреватели Web, инструментальные средства проверки ссылок и синтаксиса.

Обработка XML-документов обычно включает в себя синтаксический анализ и собственно обработку, например, для отображения документа обозревателем или для извлечения данных из документа и помещения их базу данных. Синтаксический анализ XML-документов может выполняться с помощью синтаксических анализаторов или с помощью встроенных средств современных обозревателей Web. В частности, в составе обозревателя Internet Explorer 5.0 имеется встроенное средство синтаксического анализа, называемое MSXML.

С помощью синтаксических анализаторов выполняется считывание XMLдокумента и построение соответствующего этому документу иерархического дерева разбора данных. С их помощью можно создавать также соответствующее представление XML-документа. Для синтаксического анализа XML-до- кументов используются два основных подхода. Первый подход основан на использовании объектной модели документа DOM (Document Object Model), позволяющей отображать любые объекты в XML-документе. Второй подход представляет собой простой интерфейс прикладного программирования SAX (Simple API for XML).

При синтаксическом анализе с помощью объектной модели DOM выполняется считывание всего XML-документа, создание иерархического дерева разбора и возврат данных из этого дерева. Этот способ не позволяет пользователю вмешиваться в процесс анализа и в наибольшей степени подходит для выполнения синтаксического анализа документов не очень большого объема. Отметим, что описанный способ поддерживается с помощью анализатора MSXML в составе Internet Explorer 5.0.

Анализ XML-документа с помощью объектной модели DOM требует создания экземпляра анализатора. Для этого можно использовать объект ActiveX, представляющий собой документ. После этого можно выполнять

664

Часть 4. Публикация баз данных в Интернете

доступ к данным документа с помощью свойств и методов созданного объекта. При этом созданный объект-документ предварительно нужно связать с анализируемым Х М L-документом по его URL с помощью метода l o a d оъекта. После нужно указать корневой элемент документа и можно выполнять перемещение по структуре документа. Описанные действия могут быть реализованы с помощью следующих строк кода:

var vxmldoc = new ActiveXObject ("microsoft.xmldom"); vxmldoc.load("MyXMLDoc.xml");

var vroot = vxmldoc.documentNode;

Здесь в качестве аргумента метода A c t i v e X O b j e c t может быть задана также строка "msxml". Для доступа к дочерним элементам объекта-документа могут использоваться его свойства c h i l d r e n или c h i l d N o d e s .

Второй подход SAX обеспечивает интерфейс пользователя с синтаксическим анализатором. При этом выполняется интерактивный разбор не всего ХМ L-документа в целом, а представляющей в настоящее время наибольший интерес части. При этом пользователь может перемещаться по документу и информировать синтаксический анализатор об определенных событиях, например, выявлении начала следующего элемента. Этот подход позволяет выполнять синтаксический анализ больших ХМ L-документов. Упоминавшийся нами анализатор MSXML в составе Internet Explorer 5.0 не поддерживает подход SAX, но в дополнение к нему поставляются разработки других фирм, позволяющие его использование.

17.3. Сценарий для отображения XML-документа

Как отмечалось, современные обозреватели, например, Internet Explorer версии 5.0, позволяют проверять правильность и просматривать XML-до- кументы. При просмотре в обозревателях можно управлять степенью детальности отображения их иерархической структуры. Например, пусть имеется XML-документ, размещенный в файле myNewl.xml и содержащий следующий код:

<? x m l v e r s i o n = " 1 . 0 " ? >

<n o t e b o o k >

< t i t l e > P u b l i s h e r s b o o k s < / t i t l e >

<p u b l i s h e r >

<n a m e > B H V - S P b < / n a m e >

< a d d r e s s > B o b r u i s k a i a S t r e e t , 4 < / a d d r e s s > < t e l > ( 8 1 2 ) 5 4 1 - 8 5 - 5 1 < / t e l >

< E m a i l U r l > r o o t @ b h v . r u , w w w . b h v . r u < / E m a i l U r l > < / p u b l i s h e r >

1 7. Публикация БД с использованием XML

665

<b o o k s - l i s t >

<b o o k I D = " 1 " >

<t i t l e > S Q L - s e r v e r < / t i t l e >

<d a t e > 2 0 . 0 1 . 2 0 0 1 < / d a t e >

< s e r i e s > l n t h e o r i g i n a l < / s e r i e s >

< a b o u t > A d m i n i s t r a t i o n a n d u s e < / a b o u t > < a u t h o r s - l i s t >

< a u t h o r I D = " 1 " >

<f i r s t n a m e > E u g e n e < / f i r s t n a m e >

<l a s t n a m e > M a m a e v < / l a s t n a m e >

</ a u t h o r >

</ a u t h o r s - l i s t >

</ b o o k >

<b o o k I D = " 2 " >

< t i t l e > D a t a b a s e p u b l i c a t i o n in t h e I n t e r n e t < / t i t l e > < d a t e > 2 1 . 0 3 . 2 0 0 1 < / d a t e >

< s e r i e s > M a s t e r < / s e r i e s >

< a b o u t > T e c h n o l o g i e s o f t h e p u b l i c a t i o n in t h e l n t e r n e t < / a b o u t > < a u t h o r s - l i s t >

< a u t h o r I D = " 1 " >

<f i r s t n a m e > E u g e n e < / f i r s t n a m e >

<l a s t n a m e > M e s c h e r i a k o v < / l a s t n a m e >

</ a u t h o r >

< a u t h o r I D = " 2 " >

<f i r s t n a m e > A n a t o l y < / f i r s t n a m e >

<l a s t n a m e > K h o m o n e n k o < / l a s t n a m e >

</ a u t h o r >

</ a u t h o r s - l i s t >

</ b o o k >

</ b o o k s - l i s t >

</ n o t e b o o k >

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

В ряде случаев может потребоваться отображение отдельных (или всех) компонентов XML-доку мента с заданием требуемого их расположения в окне обозревателя. Для этого можно написать клиентскую программу в виде Javaапплета или сценария JScript.

Рассмотрим решение задачи отображения в требуемом виде приведенного выше ХМ L-документа в окне обозревателя с помощью сценария JScript и объектной модели DOM.

666

 

Часть 4. Публикация баз данных в Интернете

• ' 3 О Л П у б л и к а ц и я Б Д в И н т е р н е т \ Г л а в а 8 И с п о л ь з о в а н и е Х т 1 \ М е щ . . . Д И Е З

Файл Правка Вид

Избранное

Сервис ^правка

<?хпп1 version="1.0"

?>

 

<notebook>

 

 

<title > P u b l i s h e r s

b o o k s < / t i t l e

>

-<publisher>

<n a m e > B H V - S P b < / n a m e >

< a d d r e s s > B o b r u i s k a i a S t r e e t , 4</address> <tel > ( 8 1 2 ) 5 4 1 - 8 5 - 5 1 </tel>

< E m a i l U r l > i * o o t @ b h v . r u , w w w . b h v . r u < / E n n a i l U r l > </publisher>

- <books-list>

- <book I D = " l " >

-c title > S Q L - s e r v e r < / t i t l e > < d a t e > 2 0 . 0 1 . 2 0 0 1 < / d a t e >

< s e r i e s > I n t h e o r i g i n a l < / s e r i e s >

< a b o u t > A d m i n i s t r a t i o n a n d u s e < / a b o u t > + <authors-list>

</book>

+ <book I D = " 2 " > </books-list>

</notebook>

Рис. 17.1. Вид XML-документа notebook.xml в окне обозревателя

Документ HTML с решающим нашу задачу сценарием JScript содержит следующий код:

< H T M L > < h e a d > < t i t l e > < / t i t l e > < s c r i p t l a n g u a g e = " j a v a s c r i p t " >

v a r x m l d o c = n e w A c t i v e X O b j e c t ( " m s x m l " ) ; v a r x m l s r c = " m y N e w l . x m l " ;

f u n c t i o n v i e w T i t l e ( e l e m ) {

/ / О т о б р а ж е н и е з а г о л о в к а д о к у м е н т а , о п р е д е л я е м о г о э л е м е н т о м < t i t l e > w i n d o w . d o c u m e n t . w r i t e l n ( ' < c e n t e r > < t a b l e w i d t h = " 1 0 0 % "

b o r d e r - O x t r x t d w i d t h = " 1 0 0 % " a l i g n = " c e n t e r " x b x f o n t

c o l o r = " b l a c k " > ' + e l e m . t e x t + ' < / f o n t x / b x / t d x / t r > < / t a b l e > < / c e n t e r > < b r > ' ) ; }

f u n c t i o n v i e w P u b l i s h e r L i s t ( e l e m )

{ / / О т о б р а ж е н и е с о д е р ж и м о г о д о ч е р н и х э л е м е н т о в < P u b l i s h e r > v a r c u r _ i t e m = e l e m . c h i l d r e n . i t e m ( " n a m e " ) ;

w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r x t d a l i g n = " c e n t e r " c o l s p a n = " 2 "

1 7. Публикация БД с использованием XML

667

b g c o l o r = " g r a y " > < b > < f o n t со1ог="\л/1")Ке">Издательство ' + c u r _ i t e m . t e x t + , < / f o n t > < / b > < / t d > < / t r > ' ) ;

w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d b g c o l o r = " s i l v e r "

c o l s p a n = " 2 " > < c e n t e r x t a b l e w i d t h = " 8 0 % " b o r d e r = 0 > ' ) ; i f ( e l e m . t y p e = = 0 )

{ i f ( e l e m . c h i l d r e n ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d c o l s p a n = 2 w i d t h = " 6 0 % " > < / t d x / t r > ' ) ; v a r c u r _ i t e m = e l e m . c h i l d r e n . i t e m ( " a d d r e s s " ) ;

i f ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d > < f o n t с о 1 о г = " д г е е п " > А д р е с < / f o n t x / t d x t d a l i g n = " r i g h t " x b x f o n t

c o l o r = " g r a y " > ' + c u r _ i t e m . t e x t + , < / f o n t > < / b x / t d > < / t r > ' ) ; } v a r c u r _ i t e m = e l e m . c h i l d r e n . i t e m ( " t e r ' , 0 ) ;

i f ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( , < t r > < t d > < f o n t с о 1 о г = " д г е е п " > Т е л е ф о н < / f o n t x / t d x t d a l i g n = " r i g h t " x b x f o n t

c o l o r = " g r a y " > , + c u r _ i t e m . t e x t + ' < / f o n t > < / b > < / t d > < / t r > ' ) ; } v a r c u r _ i t e m = e l e m . c h i l d r e n . i t e m ( " E m a i l U r l " ) ;

i f ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( , < t r > < t d > < f o n t c o l o r = " g r e e n " > E - M a i l , U R L < / f o n t > < / t d x t d а М д п = " п д Ь Г > < Ь > < Т о т

c o l o r = " g r a y " > ' + c u r _ i t e m . t e x t + , < / f o n t x / b x / t d > < / t r > ' ) ; } v a r c u r _ i t e m = e l e m . c h i l d r e n . i t e m ( " u r l " ) ;

i f ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d x f o n t c o l o r = " g r e e n " > U R L < / f o n t x / t d x t d a l i g n = " r i g h t " X b > < f o n t

c o l o r = , , g r a y " > ' + c u r _ i t e m . t e x t + , < / f o n t > < / b > < / t d > < / t r > ' ) ;

} } }

w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d c o l s p a n = 2 w i d t h = " 6 0 % " > < / t d x / t r > ' ) ;

w i n d o w . d o c u m e n t . w r i t e l n ( , < / t a b l e > < / c e n t e r > < / t d > < / t r > ' ) ;

}

f u n c t i o n v i e w B o o k s L i s t ( e l e m )

{ / / О т о б р а ж е н и е с о д е р ж и м о г о д о ч е р н и х э л е м е н т о в < b o o k s - l i s t > w i n d o w . d o c u m e n t . w r i t e l n ^ t r x t d a l i g n = " c e n t e r " c o l s p a n = " 2 "

b g c o l o r = " g r a y " > < b > < f o n t c o l o r = " w h i t e " > K H n r n и з д а т е л ь с т в а c / f o n t x / b x / t d x / t r v ) ;

w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d b g c o l o r = " s i l v e r "

c o l s p a n = " 2 " X c e n t e r > < t a b l e w i d t h = " 8 0 % " b o r d e r = 0 > ' ) ; i f ( e l e m . t y p e = = 0 )

{i f ( e l e m . c h i l d r e n ! = n u l l )

{f o r ( i = 0 ; i < e l e m . c h i l d r e n . l e n g t h ; i + + )

668 Часть 4. Публикация баз данных в Интернете

{ v a r c u r _ b o o k = e l e m . c h i l d r e n . i t e m ( " b o o k " , i ) ;

w i n d o w . d o c u m e n t . w r i t e l n ( , < t r > < t d c o l s p a n = 2 w i d t h = " 6 0 % " > < / t d > < / t r > ' ) ; if(cur_book.children!=null)

{v a r c u r _ i t e m = c u r _ b o o k . c h i l d r e n . i t e m ( " t i t l e " ) ;

if ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d a l i g n = " l e f t " c o l s p a n = " 2 " x b x f o n t

c o l o r = " b l a c k ' , > ' + c u r J t e m . t e x t + ' < / f o n t x / b x / t d x / t r > ' ) ;

}

var c u r _ i t e m = c u r _ b o o k . c h i l d r e n . i t e m ( " s e r i e s " ) ; i f ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( , < t r > < t d > < f o n t с о 1 о г = " д г е е п " > С е р и я < / f o n t x / t d x t d a l i g n = " r i g h t " x b x f o n t

c o l o r = ' ' g r a y " > ' + c u r J t e m . t e x t + ' < / f o n t x / b x / t d x / t r > ' ) ;

}

v a r c u r _ i t e m = c u r _ b o o k . c h i l d r e n . i t e m ( " a u t h o r s - l i s t " ) ; i f ( c u r _ i t e m ! = n u l l )

{ w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r x t d > < f o n t с о 1 о г = " д г е е п " > А в т о р ы < / f o n t x / t d x t d a l i g n = " r i g h t " x b x f o n t

c o l o r = " g r a y " > ' + c u r _ i t e m . t e x t + ' < / f o n t > < / b > < / t d > < / t r > , ) ;

}

w i n d o w . d o c u m e n t . w r i t e l n ( ' < t r > < t d c o l s p a n = 2 w i d t h = " 1 0 0 % " > < / t d x / t r > ' ) ;

} } } } }

f u n c t i o n v i e w E r r o r Q

{ w i n d o w . d o c u m e n t . w r i t e l n ( ' < c e n t e r > < h r > E r r o r w a s d e t e c t e d ' ) ; }

f u n c t i o n p a r s e ( r o o t )

 

{ i f ( r o o t = = n u l l ) return; var i=0; var

e l e m ;

i{f ( r o o t . c h i l d r e n ! = n u l l )

 

/ / ЕСЛИ в л о ж е н н ы е э л е м е н т ы не

о п р е д е л е н ы ,

/ / т о с в о й с т в о c h i l d r e n б у д е т

 

/ / у с т а н о в л е н о в null

 

w i n d o w . d o c u m e n t . w r i t e l n ( ' < c e n t e r > < t a b l e w i d t h = " 8 0 % " b o r d e r - 0 > < t r x t d > ' ) ; / / П е р е б о р д о ч е р н и х э л е м е н т о в f o r ( i = 0 ; i < r o o t . c h i l d r e n . l e n g t h ; i + + )

{ e l e m = r o o t . c h i l d r e n . i t e m ( i ) ;

/ / Р а з б о р п о д э л е м е н т о в < t i t l e >

i f ( r o o t . c h i l d r e n . i t e m ( i ) . t a g N a m e = = " T I T L E " ) { v i e w T i t l e ( e l e m ) ;

}

/ / Р а з б о р п о д э л е м е н т о в < p u b l i s h e r >

i f ( e l e r r i . t a g N a m e = = " P U B L I S H E R " ) { v i e w P u b l i s h e r L i s t ( e l e m ) ;

}

/ / Р а з б о р п о д э л е м е н т о в < b o o k s - l i s t >

1 7. Публикация БД с использованием XML

669

i f ( e l e m . t a g N a m e = = " B O O K S - L I S T " ) { v i e w B o o k s L i s t ( e l e m ) ;

}

}

w i n d o w . d o c u m e n t . w r i t e l n ( ' < / t d > < / t r > < / t a b l e > ' ) ;

} }

f u n c t i o n v i e w D o c u m e n t ( )

{ / / З а г р у з к а X M L д о к у м е н т а

w i n d o w . d o c u m e n t . w r i t e l n ( ' < b o d y b g c o l o r = " w h i t e " > ' ) ; p a r s e ( x m l d o c . r o o t ) ;

/ / Н а ч а л о р а з б о р а д о к у м е н т а

w i n d o w . d o c u m e n t . w r i t e l n ^ / b o d y V ) ;

}

/ / < s c r i p t l a n g u a g e = " j a v a s c r i p t " > x m l d o c . U R L = x m l s r c ;

v i e w D o c u m e n t ( ) ;

// - - >

</ s c r i p t >

</ h e a d >

Приведенный сценарий выполняет разбор содержимого XML-документа из файла notebook.xml и задает его отображение в окне обозревателя Internet Explorer 5.0, как показано на рис. 17.2.

Таким образом, в рассмотренном примере состав и тип извлекаемых для отображения данных определяются документом XML, а состав отображаемых данных и порядок их расположения в окне обозревателя определяются с помощью сценария JScript. Определенным недостатком рассмотренного решения является ориентация сценария JScript строго на обозреватель Internet Explorer.

17.4. Формирование XML-документа на основе базы данных

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

НТМ L-документ, содержащий вызов Java-апплета, формирующего XMLдокумент, содержит следующий код:

<H T M L >

<H E A D >

6 70

Часть 4. Публикация баз данных в Интернете

D : \ r i у б л и к а ц и я Б Д в И к т е р н е т \ Г л а в а 8 И с п о л ь з о в а н и е Х т 1 \ М е щ е р я . . . Д И E J

Файл Правка Вид

Избранное

Сервис Справка

 

Publishers books

 

Издательство BHY~SFb

Адрес

 

Bobruiskaia Street, 4

Т е л е ф о н

 

(812)541-85-51

E-Mail,URL

r9ot(§bbjii,www№ r JTtt

 

Книги издательства

S Q L - s e x v e r

 

Серия

 

In tike original

Авторы

 

Eugene Mamaev

Database p u b l i c a t i o n i n the I n t e r n e t

Серия

 

M a s t e r

А в т о р ы

Eugene Mescheriakov Anatolv КЬмштемко

Р и с . 17.2. О т о б р а ж е н и е X M L - д о к у м е н т а в о к н е о б о з р е в а т е л я

< М Е Т А H T T P - E Q U I V = " C o n t e n t - T y p e " C O N T E N T = " t e x t / h t m l ; c h a r s e t = w i n d o w s - 1 2 5 1 " >

< T I T L E >

H T M L T e s t P a g e

</ T I T L E >

</ H E A D >

<B O D Y >

u n t i t l e d 3 . A p p l e t 1 will a p p e a r b e l o w in a J a v a e n a b l e d b r o w s e r . < B R > < A P P L E T

C O D E B A S E = " . "

C O D E = " A p p l e t X M L . A p p l e t l . c l a s s " N A M E = " T e s t A p p l e t "

W I D T H = 4 0 0

H E I G H T =

3 0 0

H S P A C E =

0

V S P A C E = 0

1 7. Публикация БД с использованием XML

671

A L I G N = m i d d l e

 

>

</ A P P L E T >

</ B O D Y >

</ H T M L >

Апплет, выполняющий формирование XML-документа на основе данных из базы данных Authors, входящей в состав учебника по ASP-страницам в комплекте Windows 2000 Server, содержит следующий код:

p a c k a g e A p p l e t X M L ;

i m p o r t j a v a . a w t . * ;

i m p o r t j a v a . a w t . e v e n t . * ; i m p o r t j a v a . a p p l e t . * ;

i m p o r t j a v a x . s w i n g . * ;

i m p o r t j a v a . a p p l e t . A p p l e t ; i m p o r t j a v a . a w t . G r a p h i c s ; i m p o r t j a v a . u t i l . V e c t o r ;

i m p o r t j a v a . s q l . * ; i m p o r t j a v a . i o . * ;

p u b l i c c l a s s A p p l e t l e x t e n d s J A p p l e t i m p l e m e n t s R u n n a b l e { p r i v a t e T h r e a d w o r k e r ;

p r i v a t e V e c t o r q u e r y R e s u l t s ;

p r i v a t e S t r i n g m e s s a g e = " И н и ц и а л и з а ц и я " ;

p u b l i c s y n c h r o n i z e d v o i d s t a r t ( ) {

/ / Ф у н к ц и я " s t a r t " в ы з ы в а е т с я к а ж д ы й р а з п р и с о з д а н и и п о т о к а T h r e a d if ( w o r k e r = = null) {

m e s s a g e = " С о е д и н е н и е с Б Д " ; w o r k e r = n e w T h r e a d ( t h i s ) ;

w o r k e r . s t a r t ( ) ;

}

}

/ / ф у н к ц и я r u n в ы з ы в а е т с я и з м е т о д о в о б ъ е к т а T h r e a d , p u b l i c v o i d r u n ( ) {

/ / З а д а н и е с т р о к и U R L - а д р е с а и с т о ч н и к а Б Д S t r i n g url = " j d b c : o d b c : A u t h o r s " ;

/ / З а д а н и е с т р о к и з а п р о с а

S t r i n g q u e r y = " S e l e c t * f r o m A u t h o r s " ; t r y {

/ / И н и ц и а л и з а ц и я д р а й в е р а

C l a s s . f o r N a m e ( " s u n . j d b c . o d b c . J d b c O d b c D r i v e r " ) ;

672

Часть 4. Публикация баз данных в Интернете

} c a t c h ( E x c e p t i o n e x ) {

/ / Б л о к о б р а б о т к и о ш и б о к и н и ц и а л и з а ц и и д р а й в е р а s e t E r r o r ( " C a n ' t f i n d D a t a b a s e d r i v e r c l a s s : " + ex);

r e t u r n ;

}

t r y {

/ / У с т а н о в к а с о е д и н е н и я с Б Д

C o n n e c t i o n c o n = D r i v e r M a n a g e r . g e t C o n n e c t i o n ( u r l , " " , " " ) ; / / В ы п о л н е н и е з а п р о с а к Б Д

S t a t e m e n t s t m t = c o n . c r e a t e S t a t e m e n t Q ; R e s u l t S e t rs = s t m t . e x e c u t e Q u e r y ( q u e r y ) ;

/ / О п р е д е л е н и е ф а й л а m y N e w . x m l д л я р а з м е щ е н и я / / д а н н ы х в ы х о д н о г о п о т о к а

t r y {

F i l e O u t p u t S t r e a m fil = n e w F i l e O u t p u t S t r e a m ( " m y N e w . x m l " ) ; D a t a O u t p u t S t r e a m d o s = n e w D a t a O u t p u t S t r e a m ( f i l ) ;

P r i n t S t r e a m p o s = n e w P r i n t S t r e a m ( d o s ) ; p o s . p r i n t l n ( " < ? x m l v e r s i o n - 1 . 0 ' ? > " ) ;

p o s . p r i n t l n ( „ < n o t e b o o k > " ) ; p o s . p r i n t l n ( " < A u t h o r L i s t > " ) ; i n t i = l ;

w h i l e ( r s . n e x t ( ) ) {

/ / И з н а б о р а д а н н ы х и з в л е к а е т с я с о д е р ж и м о е п о л е й A u t h o r и / / Y e a r B o r n и з т е к у щ е й з а п и с и

p o s . p r i n t l n ( " < A u t h o r I D = ' " + i + ' " > " ) ;

S t r i n g s = r s . g e t S t r i n g ( " A u t h o r " ) ; p o s . p r i n t l n ( " < N a m e > " ) ;

p o s . p r i n t l n ( s ) ;

p o s . p r i n t l n ( " < / N a m e > " ) ;

S t r i n g f = r s . g e t S t r i n g f ' Y e a r B o r n " ) ; p o s . p r i n t l n ( " < Y e a r B o r n > " ) ;

p o s . p r i n t l n ( f ) ;

p o s . p r i n t l n ( " < / Y e a r B o r n > " ) ; p o s . p r i n t l n ( " < / A u t h o r > " ) ;

i + + ;

}

p o s . p r i n t l n ( " < / A u t h o r L i s t > " ) ; p o s . p r i n t l n ( " < / n o t e b o o k > " ) ; p o s . c l o s e ( ) ;

} c a t c h ( E x c e p t i o n e x ) {

/ / Б л о к о б р а б о т к и о ш и б о к в ы п о л н е н и я о п е р а ц и й в ы в о д а в ф а й л s e t E r r o r ( " F i l e O u t P u t E x c e p t i o n : " + e x ) ;