Стилевые таблицы XSL
Falk0ner, вс, 06/07/2008 - 15:34.
Вычисление выражений
Наиболее простым примером использования сценариев в XSL -документе является вычисление значений параметров описываемых элементов. Для этого надо просто поставить знак равенства в качестве первого символа параметра, что заставит XSL-процессор вычислить значение выражения(синтаксис этого выражения должен отвечать требованиям JavaScript). Например, после разбора этого правила:
, в выходном документе окажутся следующие инструкции:
...
Очень часто в правилах XSL необходимо использовать атрибуты описываемого в них элемента. Для этого мы должны воспользоваться методом getAttribute(), описанным в объектной модели XML (мы рассматриваем объектную модель XML-документов, предложенную Microsoft, список этих функций приведен в конце раздела). Т.к. каждому элементу XSL доступен указатель на соответствующий ему объект, сценарий может обращаться к внутренним функциям и свойствам этих элементов, при помощи которых и осуществляются необходимые действия.
В следующем фрагменте XML- документа определяется элемент , в котором атрибут src используется для задания адреса файла, содержащего текст статьи.
Bugs report
Для того, чтобы использовать этот атрибут в выходном HTML-документе, необходимо определить следующее правило:
После обработки этого фрагмента в выходной документ будет помещен элемент:
Bugs report
Выполнение инструкций
Другим способом помещения в выходной HTML- документ информации, являющейся результатом выполнения каких-либо операций JavaScript – сценариев является использовнаие инструкции ;:
childNumber(this) |
|
Метод childNumber в данном случае возвращает текущий номер дочернего элемента.
Определение функций и глобальных переменных
Аналогично тэгу <script> в HTML, элемент содержит функции и определения глобальных переменных. Обычно в XSL-документе определяется один элемент , расположенный в самом начале.
}]]>
Если применить эти правила к такому фрагменту XML- документу:
rose
red
, то на выходе HTML -документ будет содержать следующие элементы:
Необходимо отметить, что использование глобальных переменных в некоторых случаях может приводить к серьезным ошибкам, вызванным попытками одновременного к ним доступа. Поэтому рекомендуется использовать такие переменные только в качестве констант.
Использование Java Script для HTML
Создавая шаблон HTML-документа, Вы можете указывать в нем практически любые элементы HTML, в том числе и блоки <script>, внутри которых можно задавать любые конструкции Java Script, используя для этого область CDATA:
<script LANGUAGE="JSCRIPT">= 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>
Если использовать эти правила для следующего XML- документа:
Part1
Part2
Part3
то в результате мы получим такой HTML-файл:
<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>
Встроенные функции 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)
Возвращает строку, представляющую список, элементами которого являются символьные представления чисел
Источник: http://helper10.narod.ru/
|
Отправить комментарий