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

 

ХАІ.603.№ 621п.13В.050103.(№ 116306).ПЗ

 

Виконав студент гр. 621п Каранда А. Ю.

________________ (№ групи) (П.І.Б)

(підпис, дата)

Перевірив:_Фролова Г.А._______________

(наукова ступінь, вчене звання)

____________________________________

(підпис, дата) (П.І.Б)

 

 

Цель работы:

Научиться привязать XML-документ к HTML-странице; сцеплять элементы HTML с элементами XML, использовать сценариии, которые используют в качестве базового объекта программирования связанные данные.

 

Задание

Создайте XML-документ (например, dz_m.xml), который содержит один корневой элемент и не менее 20 вложенных элементов типа запись, в свою очередь каждый вложенный элемент типа запись состоит из 7 вложенных элементов типа поле.

Визуализируйте документ XML с помощью CSS . Количество используемых стилей – не менее 9.

Создайте HTML-документ (например, dz_str.html). Используя сцепление HTML-элемента TABLE с данными документа XML, реализуйте постраничный вывод записей в браузере (по пять записей на одной странице) и кнопки постраничного перехода.

 

Описание тэгов и управляющих конструкций, использованных при выполнении задания

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

Можно использовать один HTML-элемент TABLE для отображения XML-документа, составленного по следующим правилам:

· корневой элемент содержит множество элементов типа запись;

· каждый элемент типа запись содержит одинаковый набор элементов типа полей;

· каждый элемент типа поле содержит только символьные данные.

Сцепление элемента TABLE с данными XML требует следующего синтаксиса:

<TABLE datasrc=”#[ссылка]”>

<TR>

<TD> <SPAN datafld = “имя элемента”/></SPAN></TD>

… инструкции для каждого поля …

</TR>

</TABLE>

Элемент TABLE страницы сцеплен со всем XML-документом путем присвоения атрибуту DATASRC элемента идентификатора (ID) фрагмента данных, предваренного символом #:

<TABLE DATASRC="#dsoStudent" BORDER="6" CELLPADDING="5" width=”100%”>

Таблица определена с одной строкой (элемент TR). Каждая ячейка в этой строке (т.е. каждый элемент TD) состоит из элемента SPAN, который сцеплен с одним из полей XML-документа таким образом, что этот элемент отображает содержимое поля.

Так как элемент TD не является связываемым HTML- элементом, то он не может быть непосредственно сцеплен с полями XML, поэтому необходимо использовать элемент SPANв качестве контейнера для данных XML. Атрибут datafld этого элемента, задает конкретное поле, которое должно связываться. Например, для связывания элемента SPANс элементом FAMILY из документа file_1.xml можно использовать следующую строку:

<TD> < SPAN DATAFLD = “FAMILY” > </SPAN> <TD>

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

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

<THEAD style=”background-color:aqua”>

<TH> Фамилия </TH>

… инструкции для каждого заголовка…

</THEAD>

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

· Для сцепленного элемента TABLE добавляется атрибут DATAPAGESIZE, значение которого равное максимальному числу записей, отображаемых за раз. Каждая страница записей будет содержать заданное число записей;

· Для сцепленного элемента TABLE добавляется атрибут ID и присвоить ему уникальный идентификатор;

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

 

Использование методов элемента TABLE

Отображает первую страниц записей ID_таблицы.firstPage ()
Отображает предыдущую страницу записей ID_таблицы.previousPage()
Отображает следующую страницу записей ID_таблицы.nextPage()
Отображает последнюю страницу записей ID_таблицы.lastPage()

 

В простейшем случае обращения к методам элемента TABLE заключается в присвоении метода атрибуту ONCLICK HTML-элемента BUTTON.

Листинг

Laba_9.html

<html>

<head>

<script type="text/javascript" src="script.js"></script>

<meta http-equiv="Content-Type" content="text/html; charset=cp1251">

</head>

<body>

<p>Страница была обновлена <span style="padding: 5px; border: 1px solid blue; background-color: #E3D1FF;" id="curr_datetime"></span></p>

 

<p align="center"><b>Задача 1</b> Написать функцию решения указанной задачи. Исходные данные получить при помощи датчика случайных чисел.</p>

<br>

<p><b>Вариант 6. </b>Дана последовательность чисел а1, а2, ..., ап. Указать наименьшую длину числовой оси, содержащую все эти числа.</p>

<p><b>Исходные данные:</b></p>

 

<b>n = </b><span id="n_element"></span>

<br>

<b>a = </b><span id="a_element"></span>

<br>

<p><u>Наименьшая длина числовой оси, содержащая все эти числа</u>: <span id="len"></span></p>

<br>

<input type="button" value="Найти" onclick="calc()"></input>

 

<br><br><br><br>

<!-- task 2 -->

<p align="center"><b>Задача 2</b> Написать функцию решения указанной задачи. Исходные данные должны задаваться внутри кода как константы.</p>

<br>

<p><b>Вариант 6. </b>Дана строка, содержащая слова разделенные пробелами. Вывести на экран слова из трех букв.</p>

<p><b>Исходные данные:</b></p>

 

<b>Текстовая строка : </b><span id="stroka"></span>

<br>

<p><u>Наденые слова из трех букв</u>: <span id="result"></span></p>

<br>

<input type="button" value="Найти" onclick="find_words()"></input>

</body>

<script>

// вывод времени

var curr_datetime = new Date();

curr_datetime = curr_datetime.toLocaleString();

display('curr_datetime', curr_datetime);

</script>

</html>

 

Script.js

// task 1

var nMin = 4;

var nMax = 20;

var aMin = 1;

var aMax = 50;

var n;

var a;

 

function calc() {

n = random(nMin, nMax);

a = new Array(n);

fill_a();

var min_axis_len = get_min_max(a);

 

display('n_element', n);

display('a_element', '['+a.join(', ')+']');

var leng = min_axis_len[1] - min_axis_len[0] + 1;

display('len', leng);

}

 

function fill_a() {

var len = a.length;

for(i = 0; i < len; i++){

a[i] = random(aMin, aMax);

}

}

 

function get_min_max(mas) {

var max = Math.max.apply(Math, mas);

var min = Math.min.apply(Math, mas);

 

return new Array(min, max);

}

 

function random(min, max) {

return parseInt(Math.random() * (max - min) + min);

}

// task 1 END

 

 

// task 2

var stroka = new String('Мне приснился интересный сон про то как плавал кит')

 

function find_words() {

var probelReg = /\s+/ig;

var wordReg = /^[А-я]{3}$/ig;

//alert(stroka);

var wordsArray = stroka.split(probelReg);

var result = new Array();

var len = wordsArray.length;

for(i = 0; i < len; i++){

if ( wordsArray[i].search(wordReg) != -1 ) {

result.push(wordsArray[i]);

}

}

 

display('stroka', stroka);

display('result', result.join(', '));

}

// task 2 END

 

function display(elem_id, text) {

document.getElementById(elem_id).innerHTML = text;

}


 

Отображение в окне браузера

 

Выводы:

В ходе выполнения лабораторной работы были получены практические навыки работы со стандартными объектами и функциями JavaScript, изучены функции в JavaScript.