Слайд 1Технология Идентификации Ресурсов X-Pointer
Слайд 2Предназначение
X-Pointer – это язык, описывающий местонахождение тех или иных ресурсов.
Выражения
языка X-Pointer позволяют создавать так называемые URI – которые отслеживают целостность ссылок, т.к. они они могут адресовываться не только на внешние документы, но и на части какого-либо документа, путем создания некоторой иерархической структуры выражения. Например, можно указать ссылку на конкретное слово, значение атрибута XML- документа.
Слайд 3Основные Правила
Ссылки на языке X-Pointer могут указывать только на XML-документы, т.е.
имеющие расширения : text/xml application/xml.
Все выражения X-Pointer записываются при помощи символов Unicode, если символов не хватает можно использовать Escape- последовательности (общения принтера и компьютера), но это практически исключено.
Слайд 4Основные термины
Субресурс (sub-resource)-Часть целого XML-ресурса, такая как отдельная глава или
абзац. Основная единица адресации языка X-Pointer.
Набор Указателей (location-set) – упорядоченный список точек адресации XML – документа, в который входят все адресуемые субресурсы различных типов.
Точка (pointer) – место в XML-документе, где конкретно расположен адресуемый субресурс.
Интервал (range) – часть содержимого XML-документа, размешенная между двумя точками, адресованными при помощи выражений X-Pointer.
Слайд 5Ошибки языка X-Pointer:
Синтаксическая ошибка (syntax error) – выражение X-Pointer содержит
конструкцию, не удовлетворяющее правилам оформления выражений X-Pointer.
Ошибка адресации (resource error) – синтаксически правильное выражение X-Pointer указывает на несуществующий XML-документ.
Ошибка адресации субресурса (subresource error) – все правильно, но отсутствуем указываемый субресурс.
Слайд 7Пример XML-документа:
Id ID
#REQUIRED>
]>
……………………………….
First paragraph
Second paragraph
Будем считать что URL этого XML-файла : http://www.site.com/xml/f1.xml
Слайд 8Ключевое слово root указывает на точку местонахождения открывающего тега самого главного
элемента, кот. Объявлен как тип документа (DOCTYPE)
/hlink>
В этой строке мы указываем уже не на URL XML-документа, а URI некоторого субресурса. Перед выражением X-Pointer ставится знак #. Будет загружен документ из файла f1.xml , а фокус передан на открывающийся тег , т.к он является корневым для нашего документа.
Слайд 9Конструкция ID (name) позволяет адресовать элемент в XML-документе, у кот. значение
атрибута id установлено в name.
Link on first paragraph
Установили ссылку на 1 параграф с содержимым First Paragraph.
Ключевое слово here является указателем на текущее положение самого указателя, т.е. отсчет будет вестись от самой ссылки, адресовать можно только те субресурсы, кот. находятся в том же XML-документе что и сама ссылка.
Link
Указатель на указатель. Сам по себе бесполезен, используется в качестве основы для относительной адресации.
item
Id ID #REQUIRED>
Id ID #REQUIRED>
]>
……………………………….
Part 1
Part 2
- Second item
Слайд 12Ключевое слово Child позволяет адресовать все дочерние элементы источника, на кот
мы указали при помощи абсолютной адресации, при этом адресуется только потомки находящиеся на 1 уровень ниже.
#root().child(2)”>Link to second item
Указывает на элемент item c идентификатором i2.
Слайд 13Для адресации всех потомков начального элемента используется descendant .При перемещении относительно
ключевого элемента мы уже не учитываем иерархию потомков, а просто обходим содержимое и используем только порядковый номер
Обратимся к одному и тому же элементу : part с индентификатором p2
Link to part 2
Link to part 2
Link to part 2 - сначала установили абсолютный указатель на Эл. Item с идентификатором i1, а уж от него движемся к искомому элементу part
Слайд 14Ancestor – если надо пройти вверх по иерархии объектов вверх от
ключевого элемента к его предкам
Link to root
Двигаемся от самого глубокого элемента part к элементу body.
Ключевое слово psibling используется для указания на «предшествующих братьев», т.е. на элементы, у которых родитель совпадает с родителем исходного элемента и которые в содержимом XML-документа находятся после адресуемого элемента.
Fsibling – позволяет адресовать «последующих братьев»
Link to part 2
Переход от экземпляра документа с идентификатором p1 к экземпляру с идентификатором p2.
Link to part 1
Переход от экземпляра документа с идентификатором p2 к экземпляру с идентификатором p1.
Слайд 15Following – если нас не интересует иерархическая зависимость элементов друг от
друга, и мы хотим просто по содержимому XML-документа и просчитать то или иное количество экземпляров вниз.
#root().following(4)”>Link to part 2
Для установки гиперссылки на элемент с идентификатором i2.
Preceding – для смещения вверх по содержимому XML-документа от начального элемента поиска
#Id(i1).preceding(1)”>Link to part 2
Установим абсолютный указатель на элемент, близкий к концу документа, двинемся вверх по направлению к part 2.
Слайд 16Адресация интервалов
Мы можем адресовываться не только на единичные элементы, но и
на целые фрагменты XML- документа, т.к. они тоже являются субресурсами.
Ссылка на фрагмент производится при помощи 2 выражений X-Pointer, при этом возвращается блок, находящийся между двумя точками, на которые указывают выражения X-Pointer.Первое выражение должно адресовывать элемент, находящийися ближе к началу документа, иначе сообщение об ошибке.
Слайд 17Range-to – создание ссылки на ресурс интервального типа
(Id(“chap1”))”>Link to chapter 1
Ссылка на фрагмент документа который находится между элементами с идентификаторами chap 1 и chap2.
Слайд 18Адресация строчных субресурсов
Это механизм текстового поиска в документе. Адресация осуществляется
при помощи функции string – range.
String-range(//title,”Thomas Pynchon”)[17]
Ищем 17-ое вхождение элемента типа title, значение которого равно Thomas Pynchon
Слайд 19String-range(//title,”Thomas Pynchon”, 8,4)
При успехе поиска функция возвратит точку адресации подстроки “Pync”,которая
начинается с 8 символа строки поиска и содержит 4 символа.Можем получить несколько подстрок.
Слайд 20String-range(String-range(//P,”Thomas Pynchon”)[17],”P”, 1,0)
В качестве базы поиска передаются результаты первичного поиска –
17-ый экземпляр элемента P, который содержит строку Thomas Pynchon ; уточняющий поиск – найти символ P, от которого мы возьмем подстроку, начинающуюся с этого символа и не содержащую ни одного символа.