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

Корневое правило

Разбор любого XSL- документа всегда начинается с правила для корневого элемента, в котором определяется область всего разбираемого XML документа и поэтому тэги форматирования, помещенные сюда, будут действовать на весь документ в целом. Для обозначения корневого правила необходимо включить в него элемент <root/>.

Отношения между элементами

Дочерние элементы в XML-документе всегда находятся внутри области, определяемой тэгами родительского по отношению к ним элемента. Для того, чтобы точно указать месторасположение обрабатываемого элемента в дереве XML, в XSL используется дополнительный тэг <element>;. При помощи него можно указать, какие элементы должны предшествовать текущему, а какие - следовать после него.

Приоритеты правил

В том случае, если внутри XSL- документа встречается несколько правил для одного и того же элемента, то msxsl будет использовать то из них, которое более точно определяет позицию данного элемента.

В общем случае приоритет правил определяется следующим образом (в порядке убывания приоритета):

  • правила, помеченные специальным тэгом <importance>

  • правила с наибольшим значением атрибута id, если он определен

  • правила с наибольшим значением атрибута class, если он определен

  • правила, имеющие наибольшую вложенность, определяемую тэгом <element>

  • правила, использующие атрибут type совместно с <target-element>

  • правила, в которых отсутствует атрибут type в <target-element> или <element>

  • правила с более высоким приоритетом, задаваемым атрибутом priority тэга <rule>

  • правила с наибольшим значением квалификаторов <only>, <position>, <attribute>

27. Встроенные функции 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)

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