Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Распред-ые СОИ.doc
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
591.87 Кб
Скачать

Использование Java Script для html

Создавая шаблон HTML-документа, Вы можете указывать в нем практически любые элементы HTML, в том числе и блоки <SCRIPT>, внутри которых можно задавать любые конструкции Java Script, используя для этого область CDATA:

<xsl>

<rule>

<root/>

<HTML>

<HEAD>

<SCRIPT LANGUAGE="JSCRIPT"><![CDATA[

var ie4=((navigator.appName=="Microsoft Internet Explorer")&&(parseInt(navigator.appVersion) >= 4 ));

function msover(){

if (ie4){

event.srcElement.style.color="red";

event.srcElement.style.cursor = "hand";

}

}

function msout(){

if (ie4){

event.srcElement.style.color="black";

event.srcElement.style.cursor = "auto";

}

} ]]></SCRIPT>

</HEAD>

<BODY>

<children/>

</BODY>

</HTML>

</rule>

<rule>

<target-element type="chapter"/>

<DIV id='=tagName + formatNumber(childNumber(this),"1")'

background-color="marron"

onmouseover='="msover("+ tagName + formatNumber(childNumber(this),"1")+")"'

onmouseout='="msout("+ tagName + formatNumber(childNumber(this),"1")+")"'

<children/>

</DIV>

</rule>

</xsl>

Если использовать эти правила для следующего XML- документа:

<contents>

<chapter>Part1</chapter>

<chapter>Part2</chapter>

<chapter>Part3</chapter>

</contents>

то в результате мы получим такой HTML-файл:

<HTML>

<HEAD>

<SCRIPT LANGUAGE="JSCRIPT">

var ie4=((navigator.appName=="Microsoft Internet Explorer")&&(parseInt(navigator.appVersion) >= 4 ));

function msover(){

if (ie4){

event.srcElement.style.color="red";

event.srcElement.style.cursor = "hand";

}

}

function msout(){

if (ie4){

event.srcElement.style.color="black";

event.srcElement.style.cursor = "auto";

}

}

</SCRIPT>

</HEAD>

<BODY>

<DIV id=''chapter1" onmouseover="msover("chapter1")"'

onmouseout="msout("chapter1")"'

Part 1

</DIV>

<DIV id=''chapter2" onmouseover="msover("chapter2")"'

onmouseout="msout("chapter2")"'

Part 2

</DIV>

<DIV id=''chapter3" onmouseover="msover("chapter3")"'

onmouseout="msout("chapter3")"'

Part 3

</DIV>

</BODY>

</HTML>

Встроенные функции xsl

В завершении приведем список внутренних функций, которые можно использовать в JavaScript -сценариях, предназначенных для анализатора msxsl:

Ancestor(elementType, elem)

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

ChildNumber(elem)

Возвращает индекс текущего элемента в списке других дочерних элементов данного типа.

AncestorChildNumber()

Возвращает номер ближайшего предка текущего элемента или null, если такового не существует

path(xsl)

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

HierarchicalNumberRecursive(elementType,elem)

Метод, похожий на метод path, но возвращает только дочерние элементы

FormatNumber(n,format)

Возвращает строку - символьное представление номера(т.е. "один", "два" и т.д.). Возможно определение следующих форматов: "1" - 0,1,2,.. "01" - 01,02,03,... "a" - a,b,c,..z, aa, ab,..zz "A" - A,..,Z,AA, .. ZZ

FormatNumberList(list,format,separator)

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

DTD - определения

Александр Печерский

В XML- документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документов(сложность DTD является одной из причин того, что использование SGML, требующего определение DTD для любого документа, не получило столь широкого распространения как, например, HTML). Как уже отмечалось, в XML использовать DTD не обязательно - документы, созданные без этих правил, будут правильно обрабатываться программой-анализатором, если они удовлетворяют основным требованиям синтаксиса XML. Однако контроль за типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа. До тех пор, пока грамматика нашего нового языка не описана, его сможем использовать только мы, и для этого мы будем вынуждены применять специально разработанное программное обеспечение, а не универсальные программы-анализаторы..

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

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

<?xml version="1.0" standalone="yes" ?>

<! DOCTYPE journal SYSTEM "journal.dtd">

...

Внутри же документа DTD- декларации включаются следующим образом:

...

<! DOCTYPE journal [

<!ELEMENT journal (contacts, issues, authors)>

...

]>

...

В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа XML- процессор в первую очередь ищет DTD внутри документа. Если правила внутри документа не определены и не задан атрибут standalone ="yes" , то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда. Если же атрибут standalone имеет значение "yes", то использование внешних DTD описаний будет запрещено.