Библиотека: XML: справочник

Глава 4

XPointer

Рассматриваемые в этой главе конструкции (инструкции XML или компоненты, включающие в себя инструкции) служат для создания элементов XPointer (расширенных указателей ), которые уточняют местоположение гиперссылок XLink. Язык XML поддерживает два вида ссылок: простые и расширенные. Простые ссылки аналогичны ссылкам языка HTML, а расширенные ссылки служат для перехода с произвольной ссылки на любую другую. Внутри расширенных ссылок можно использовать расширенные указатели XPointers для более точного определения местоположения ссылки. В этом случае задача найти, например, седьмой дочерний элемент третьего дочернего элемента пятого дочернего элемента не представляется сложной. Указатели XPointer используют несколько определителей местоположения для указания на отдельно взятую ссылку. Определитель местоположения (location term) всего лишь отсылает к некоей позиции внутри документа. Первый определитель местоположения в указателе XPointer обычно является абсолютным; после него могут быть использованы любые комбинации абсолютных и относительных определителей, а также определителей местоположения по подстроке.

Перечисленные далее конструкции приведены в алфавитном порядке, в описание каждой включены пункты о ее назначении, синтаксисе, аргументах, а также пункты с комментариями и примерами.

ПРИМЕЧАНИЕ В следующем далее справочнике команд полужирным шрифтом в примерах выделены компоненты текущей конструкции. Верхний индекс в квадратных скобках справа от имени конструкции (например, AbsTerm[4]) указывает на ее описание в спецификации XML.

  • AbsTerm[4] абсолютный определитель местоположения

Назначение

Задает абсолютный определитель местоположения .

Синтаксис EBNF

AbsTerm ::= 'root()' | 'origin()' | IdLoc | HTMLAddr

Стандартный синтаксис

root()|origin()|IdLoc|HTMLAddr

Аргументы

n root() описывает корневую папку или каталог наивысшего возможного уровня, содержащую ресурс (аналогично каталогу с:\ на компьютере с операционной системой Windows).

n origin() описывает ресурс или документ, из которого исходит ссылка.

n IdLoc является местоположением именованного идентификатора (ID) внутри содержащего его ресурса (см. конструкцию IdLoc). Синтаксис:

id(Name)

n HTMLAddr задает абсолютный адрес HTML содержательного ресурса. (см. конструкцию HTMLAddr). Синтаксис:

html([SkipLit])

Комментарии

Компонент AbsTerm является подэлементом конструкции XPointer.

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

Если указатель XPointer не начинается с абсолютного определителя местополо жения (AbsTerm), начальным определителем является корневая папка (root()).

Если источник местоположения не существует, для его задания можно использовать абсолютный определитель местоположения и ключевые слова root, origin, id и HTMLAddr.

Ключевые слова root() и origin() имеют пустые списки аргументов, в отличие от идентификаторов root или origin.

В более ранних версиях языка XPointer определитель местоположения origin() назывался here().

Не рекомендуется использовать определитель местоположения origin() вместе с URI для другого содержательного ресурса.

Ключевое слово origin() может использоваться для перехода на заданную страницу текущего документа без указания формального имени. Например, в электронной книге можно осуществить переход к «следующему разделу», «оглавлению» или «титульной странице».

Расширенный указатель XPointer может быть использован для доступа к идентификатору, чье имя осталось неизменным, а содержание изменилось.

Примеры

В данном примере используется идентификатор языка XPointer для получения всего ресурса, помеченного идентификатором ID(2489), который является составной частью документа test.xml, находящегося на Web-узле sample.com:

<A xml:link="extended"

href="http://www.sample.com/test.xml#ID(2489) ">

Sample Document</A>

XPointer

В следующем примере расширенной ссылки иллюстрируется нахождение ресурса ID(sect-01) в документе test.xml путем использования неполного адреса относительно текущего Web-узла:

<A xml:link="extended" href="test.xml #ID(sect_01)">

Sample Document</A>

В следующем примере поиск начинается с корня и проходит по каталогам до тех пор, пока не найдена позиция, в которой элемент RECIPE встречается во второй раз:

root().descendant(2,"RECIPE")

В следующем примере рассматривается переход к разделу Code:

html(Code)

Родственные конструкции

AttrTerm, HTMLAddr, IdLoc, OtherTerm, OtherTerms, RelTerm, SpanTerm, StringTerm, XPointer.
  • Arguments[9] аргументы

Назначение

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

Синтаксис EBNF

Arguments ::= '(' InstanceOrAll

(',' NodeType

(',' Attr ',' Val)*)? ')'

Стандартный синтаксис

(InstanceOrAll[,NodeType[,Attr ,Val[,Attr,Val

[,...Attr, Val]]]])

Аргументы

n ( отмечает начало списка аргументов .

n InstanceOrAll выбирает все или один случаи нахождения целевого элемента или подэлемента (см. конструкцию InstanceOrAll). Синтаксис:

all|Instance

n , разделительный символ в определителях местоположения.

n NodeType идентифицирует конкретный тип или номер узла (см. конструк цию NodeType). Синтаксис:

Name|#element|#pi|#comment|#text|#cdata|#all

n Attr описывает атрибут для управления выбором элемента (см. конструк цию Attr). Синтаксис:

*|Name

Глава 4 XPointer

n Val задает значение атрибута, на котором будет основан выбор элемента (см. конструкцию Val). Синтаксис:

#IMPLIED|*|Name|[SkipLit]

n ) отмечает конец списка аргументов.

Комментарии

Arguments является компонентом конструкции RelTerm.

Все относительные определители местоположения используют единый набор возможных аргументов.

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

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

Если для NodeType указать значение #all, результатом вывода могут оказаться как смежные, так и несмежные узлы.

Примеры

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

child(2,#element,BIRD,5)

child(2,#element, "BIRD",5)

Родственные конструкции

Attr, InstanceOrAll, NodeType, RelTerm, Val.
  • Attr[13] атрибут

Назначение

Описывает атрибут для управления выбором элемента.

Синтаксис EBNF

Attr ::= '*' | Name

Стандартный синтаксис

*|["|']Name["|']

Аргументы

n * является универсальным символом подстановки, представляющим собой любое имя атрибута.

n Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name в главе 2). Синтаксис:

#xnnnn [#xnnnn][_][:][#xnnnn]|[0|1|2|3|4|5

|6|7|8|9][.]|[-][#xnnnn][#xnnnn]...[#x nnnn]

Комментарии

Attr является компонентом конструкции Arguments.

Конструкция Attr — это не одно и то же, что и ключевое слово attr.

Чтобы найти конкретное имя атрибута внутри источника местоположения, в качестве аргумента следует использовать конструкцию Attr.

Если имя атрибута заключено в кавычки, то Attr является регистрозависи мым; если имя атрибута не заключено в кавычки, то Attr является регистроне зависимым.

Не смешивайте простые и двойные кавычки; кавычки в начале и конце имени должны совпадать.

Предпочтительнее указывать конкретное имя атрибута, а не универсальный символ подстановки *. Использование этого символа имеет смысл только при поиске конкретного значение атрибута, но не в имени атрибута.

Если конкретный узел не имеет имени атрибута, выбора не произойдет.

Пример

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

child(2,#element,BIRD,5)

Родственная конструкция

Arguments.
  • AttTerm[16] определитель местоположения идентичного атрибута

Назначение

Задает определитель местоположения идентичного атрибута.

Синтаксис EBNF

AttrTerm ::= 'attr(' Name ')'

Стандартный синтаксис

attr(Name)

Аргументы

n attr( является строкой, отмечающей начало определителя местоположе ния.

n Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name в главе 2). Синтаксис:

#xnnnn [#xnnnn][_][:][#xnnnn]|[0|1|2|3|4|5

|6|7|8|9][.]|[-][#xnnnn][#xnnnn]...[#x nnnn]

n ) отмечает конец определителя местополож ения.

Комментарии

AttrTerm является компонентом конструкции OtherTerm.

Определитель местоположения идентичного атрибута производит поиск имени атрибута и возвращает значение атрибута.

Пример

В следующем примере определяется атрибут BIRD:

attr(BIRD)

Родственные конструкции

AbsTerm, OtherTerm, OtherTerms, RelTerm, SpanTerm, StringTerm, XPointer.
  • HTMLAddr[6] абсолютный адрес HTML

Назначение

Задает абсолютный адрес HTML.

Синтаксис EBNF

HTMLAddr ::= 'html(' SkipLit ')'

Стандартный синтаксис

html([SkipLit])

Аргументы

n html( является строкой, отмечающей начало определителя местоположения.

n SkipLit является строкой, соответствующей атрибуту NAME элемента языка HTML <A>.

n ) отмечает конец определителя местоположения.

Комментарии

HTMLAddr является компонентом конструкции AbsTerm.

Конструкция HTMLAddr аналогична идентификатору HTML #, который указывает на якорь, являющийся целевым ресурсом ссылки.

Пример

В следующем примере производится поиск первого элемента типа А, атрибут которого NAME имеет значение WIDGET:

HTMLAddr(WIDGET)

Родственные конструкции

AbsTerm, IdLoc, Name (см. главу 2).
  • IdLoc[5] местоположение идентификатора

Назначение

Идентифицирует элемент с помощью конкретного идентификатора (ID).

Синтаксис EBNF

IdLoc ::= 'id(' Name ')'

Стандартный синтаксис

id(Name)

Аргументы

n id( является строкой, отмечающей начало определителя местоположения.

n Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name в главе 2). Синтаксис:

#xnnnn [#xnnnn][_][:][#xnnnn]|[0|1|2|3|4|5

|6|7|8|9][.]|[-][#xnnnn][#xnnnn]...[#x nnnn]

n ) отмечает конец определителя местоположения.

Комментарии

IdLoc является компонентом конструкции AbsTerm.

IdLoc назначает элементу тип идентификатора и конкретное имя.

Примеры

В данном примере используется идентификатор языка XPointer для получения всего ресурса, помеченного идентификатором ID(2489), который является составной частью документа test.xml, находящегося на Web-узле sample.com:

<A xml:link="extended"

href="http://www.sample.com/test.xml#ID(2489) ">

Sample Document</A>

В следующем примере расширенной ссылки иллюстрируется нахождение ресурса ID(sect-01) в документе test.xml путем использования неполного адреса относительно текущего Web-узла:

<A xml:link="extended" href="test.xml#ID(sect_01)">

Sample Document</A>

Родственные конструкции

AbsTerm, HTMLAddr, Name (см. главу 2).
  • Instance[11] экземпляр

Назначение

Вставляет номер экземпляра .

Синтаксис EBNF

Instance ::= ('+' | '-')? [1-9] Digit*

Стандартный синтаксис

[+|-][1_9]|[Digit[Digit[...Digit ]]]

Аргументы

n + является символом, обозначающим положительное число.

n - является символом, обозначающим отрицательное число.

n 1_9 является числом от 1 до 9.

n Digit является числом, поддерживаемым организацией Unicode (см. конструкцию Digit и приложение 1 , «Символы и наборы символов Unicode»). Синтаксис:

#xnnnn

Комментарии

Instance является компонентом конструкции InstanceOrAll.

Instance представляет собой положительное или отрицательное число экземпляров элемента или узла. Положительное число экземпляров указывает на конкретный экземпляр, начиная с первого случая, когда он встречается в содержащем его ресурсе. Отрицательное число экземпляров указывает на конкретный экземпляр, начиная с последнего случая, когда он встречается в содержащем его ресурсе.

Примеры

В данном примере производится выбор второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5:

child(2,#element,BIRD,5)

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

fsibling(-2,#element,"LAST",#IMPLIED)

Родственные конструкции

Digit, InstanceOrAll.
  • InstanceOrAll[11] один или все экземпляры

Назначение

Выбирает один или все экземпляры указанного элемента или подэлемента.

Синтаксис EBNF

InstanceOrAll ::= 'all' | Instance

Стандартный синтаксис

all|Instance

Аргументы

n all выбирает все экземпляры указанного элемента или подэлемента.

n Instance задает относительный или абсолютный номер экземпляра указанного элемента или подэлемента (см. конструкцию Instance). Синтаксис:

[+|-][1-9][Digit[Digit[…Digit ]]]

Комментарии

InstanceOrAll является компонентом конструкций Arguments и StringTerm.

Instance представляет собой положительное или отрицательное число экземпляров элемента или узла. Положительное число экземпляров указывает на конкретный экземпляр, начиная с первого случая, когда он встречается в содержащем его ресурсе. Отрицательное число экземпляров указывает на конкретный экземпляр, начиная с последнего случая, когда он встречается в содержащем его ресурсе.

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

Если указано значение All, результатом вывода могут оказаться как смежные, так и несмежные узлы.

Пример

В следующем примере возвращаются все вложенные элементы MIX ресурса ID(2489):

<A xml:link="extended"

href="http://www.sample.com/test.xml

#ID(2489).descendant(all,mix)

Sample Document</A>

Родственные конструкции

Arguments, Digit, Instance, Length, Position, StringTerm.
  • Keyword[8] ключевое слово

Назначение

Именует ключевое слово, указывающее на относительное местоположение выбираемого элемента.

Синтаксис EBNF

Keyword ::= 'child' | 'descendant' | 'ancestor'

| 'preceeding' | 'following' | 'psibling'

| 'fsibling'

Стандартный синтаксис

child | descendant | ancestor | preceding | following

| psibling | fsibling

Аргументы

n child означает, что элемент является наследником конкретного местополо жения источника .

n descendant означает, что элемент является дочерним, внучатым или иным прямым потомком конкретного местоположения источника.

n ancestor означает, что элемент является родительским, прародительским или иным предком конкретного местоположения источника.

n preceding означает, что элемент — вне зависимости от наличия родственных связей — подлежит соответствующей обработке ранее обработки конкретного местоположения источника.

n following означает, что элемент — вне зависимости от наличия родственных связей — подлежит соответствующей обработке после обработки конкретного местоположения источника.

n psibling означает, что элемент, имеющий того же родителя, что и указанный источник, подлежит соответствующей обработке до того, как указанный источник будет обработан.

n fsibling означает, что элемент, имеющий того же родителя, что и указанный источник, подлежит соответствующей обработке после того, как указанный источник будет обработан.

Комментарии

Keyword является компонентом конструкции RelTerm.

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

Элемент, являющийся предком для всех остальных предков, называется наиболее удаленным элементом (outermost element) или элементом документа (document element).

При задании дочернего ключевого слова рекомендуется также описать идентификатор. Наличие идентификатора гарантирует, что действие XPointer начнется в заданной части источника местоположения, чье содержание было или не было изменено. Если идентификатор остается неизменным, ссылка будет корректной; содержание, ассоциированное с идентификатором, не имеет воздействия на ссылку.

Ключевое слово descendant используется для поиска по всем потомкам первого уровня относительно заданного местоположения . Этот тип поиска называется поиском на первом уровне (depth-first traversal).

Ключевое слово following используется для поиска по всем элементам, следующим за конкретным источником местоположения, вне зависимости от отношения к родителю. Ключевое слово fsibling используется для поиска по всем элементам, следующим за конкретным источником местоположения, имеющим одного и того же родителя.

Примеры

В данном примере производится выбор второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5:
child(2,#element,BIRD,5)

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

descendant(2,#text)

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

fsibling(-2,#element,"LAST",#IMPLIED)

Родственные конструкции

Arguments, RelTerm.
  • Length[19] длина символов

Назначен ие

Задает количество выбираемых символов в строке.

Синтаксис EBNF

Length ::= [1_9] Digit*

Стандартный синтаксис

[1_9][Digit[Digit[...Digit]]]

Аргументы

n 1_9 является числом от 1 до 9.

n Digit является числом, поддерживаемым организацией Unicode (см. конструкцию Digit и приложение 1, «Символы и наборы символов Unicode»). Синтаксис:

#xnnnn

Комментарии

Length является компонентом конструкции StringTerm.

Если значение Length равно нулю или полностью опущено, расширенный указатель XPointer указывает на местоположение, непосредственно предшеству ющее символу, заданному конструкцией Position.

Пример

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

id(chap1).string(4,'$',1,5)

Родственные конструкции

Digit, InstanceOrAll, Position, StringTerm.
  • NodeType[12] тип узла

Назначение

Идентифицирует конкретный тип или номер узла.

Синтаксис EBNF

NodeType ::= Name | '#element' | '#pi' | '#comment'

| '#text' | '#cdata' | '#all'

Стандартный синтаксис

Name|#element|#pi|#comment|#text|#cdata|#all

Аргументы

n Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name в главе 2). Синтаксис:

#xnnnn [#xnnnn][_][:][#xnnnn]|[0|1|2|3|4|5

|6|7|8|9][.]|[-][#xnnnn][#xnnnn]...[#x nnnn]

n #element задает элемент XML. Это значение по умолчанию.

n #pi задает инструкции XML по обработке.

n #comment задает комментарии XML.

n #text задает текст внутри элемента XML или разделов CDATA.

n #cdata задает текст внутри разделов CDATA.

n #all позволяет задать все типы узлов.

Комментарии

NodeType является компонентом конструкции Arguments.

На типы узлов #pi, #comment, #text и #cdata не распространяются ограничения, установленные в атрибутах. Однако каждый из этих типов узлов допускает употребление определителей местоположения StringTerm, то есть строк.

Тип узла #element допускает применение к нему ограничений, заданных в атрибуте. Если эти ограничения есть, то тип узла #all идентичен типу #element.

Тип узла #element может содержать в себе все остальные типы узлов.

Примеры

В данном примере производится выбор второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5:

child(2,#element,BIRD,5)

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

descendant(2,#text)

Родственные конструкции

Arguments, Attr, InstanceOrAll, Val.
  • OtherTerm[3] тип определителя местоположения

Назначение

Именует тип определителя местоположения .

Синтаксис EBNF

OtherTerm ::= RelTerm | SpanTerm | AttrTerm | StringTerm

Стандартный синтаксис

RelTerm|SpanTerm|AttrTerm|StringTerm

Аргументы

n RelTerm задает относительный определитель местоположения (см. конструк цию RelTerm). Синтаксис:

[Keyword] Arguments

n SpanTerm служит для нахождения некоторого диапазона указателей XPointer. (см. конструкцию SpanTerm). Синтаксис:

span(XPointer,XPointer)

n AttrTerm задает определитель местоположения идентичного атрибута. (см. конструкцию AttrTerm). Синтаксис:

attr(Name)

n StringTerm задает определитель местоположения по содержащейся в нем подстроке (см. конструкцию StringTerm). Синтаксис:

string(InstanceOrAll,[SkipLit][,Position [,Length)

Комментарии

OtherTerm является компонентом конструкции OtherTerms.

Примеры

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

child(2,#element,"BIRD",5)

В следующем примере с помощью конструкции SpanTerm производится выбор диапазона, начинающегося со второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5, и заканчивающегося ближайшим к предпоследнему вложенному экземпляру элемента одного уровня, атрибут LAST которого имеет любое значение:

span(child(2,#element,BIRD,5),fsibling(-2,#element,

"LAST",#IMPLIED))

В следующем примере с помощью конструкции AttrTerm определяется атрибут BIRD:

attr(BIRD)

В следующем примере с помощью конструкции StringTerm производится выбор четвертой позиции во втором экземпляре строки Hermione:

root().string(2,"Hermione",4)

Родственные конструкции

AbsTerm, AttrTerm, OtherTerms, RelTerm, SpanTerm, StringTerm, XPointer.
  • OtherTerms[2] список определителей местоположения

Назначение

Перечисляет один или более определителей местоположения .

Синтаксис EBNF

OtherTerm | OtherTerm '.' OtherTerm

Стандартный синтаксис

OtherTerm|OtherTerm.OtherTerm

Аргументы

n OtherTerm именует тип определителя местоположения (см. конструкцию OtherTerm). Синтаксис:

RelTerm|SpanTerm|AttrTerm|StringTerm

n . является разделительным символом между определителями местополо жения.

Комментарии

OtherTerms является компонентом конструкции XPointer.

Если расширенный указатель XPointer не начинается с абсолютного определителя местоположения (AbsTerm), начальным определителем местоположе ния будет корневая папка (root()).

Примеры

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

child(2,#element,"BIRD",5)

В следующем примере с помощью конструкции SpanTerm производится выбор диапазона, начинающегося со второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5, и заканчивающегося ближайшим к предпоследнему вложенному экземпляру элемента одного уровня, атрибут LAST которого имеет любое значение:

span(child(2,#element,BIRD,5),fsibling(-2,#element,

"LAST",#IMPLIED))

Родственные конструкции

AbsTerm, AttrTerm, OtherTerm, RelTerm, SpanTerm, StringTerm, XPointer.
  • Position[18] символьная позиция

Назначение

Смещение символа, не являющегося символом разметки, относительно начала или конца строки.

Синтаксис EBNF

Position ::= ('+' | '-')? [1-9] Digit* | 'end'

Стандартный синтаксис

[+|-][1_9][Digit[Digit[...Digit ]]]|end

Аргументы

n + является символом, означающим положительное число. Значение по умолчанию равно 1.

n - является символом, означающим отрицательное число.

n 1_9 является числом от 1 до 9.

n Digit является числом, поддерживаемым организацией Unicode (см. конструкцию Digit и приложение 1, «Символы и наборы символов Unicode»). Синтаксис:

#xnnnn

n end является литералом , выбирающим позицию, следующую за последним идентичным символом.

Комментарии

Position является компонентом конструкции StringTerm.

Значение Position не может быть равно 0.

Если значение Position положительное, отсчет начинается вправо от начала строки в ресурсе и его потомках. Если значение Position отрицательное, отсчет начинается влево от конца строки.

Значение Position служит для отсчета символов и пробелов, но не символов разметки или специальных символов.

Значение Position зависит от регистра.

Примеры

В данном примере производится выбор четвертой позиции во втором экземпляре строки Hermione:

root().string(2,"Hermione",4)

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

id(chap1).string(4,'$',1,5)

Родственные конструкции

Digit, InstanceOrAll, Length, StringTerm.
  • RelTerm[7] относительный определитель местоположения

Назначение

Задает относительный определитель местоположения .

Синтаксис EBNF

RelTerm ::= Keyword? Arguments

Стандартный синтаксис

[Keyword] Arguments

Аргументы

n Keyword называет ключевое слово, показывающее относительное местоположение выбираемого элемента (см. конструкцию Keyword). Синтаксис:

child|descendant|ancestor|preceding

|following|psibling|fsibling

n Arguments передает аргументы, касающиеся относительного местоположе ния выбираемого элемента, ключевому слову (см. конструкцию Arguments). Синтаксис:

(InstanceOrAll[,NodeType[,Attr ,Val[,Attr,

Val[,...Attr, Val]]]])

Комментарии

RelTerm является компонентом конструкции OtherTerm.

Если расширенный указатель XPointer не начинается с абсолютного определителя местоположения (AbsTerm), начальным определителем местоположе ния будет корневая папка (root()).

Примеры

В данном примере производится выбор второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5:

child(2,#element,BIRD,5)

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

descendant(2,#text)

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

fsibling(-2,#element,"LAST",#IMPLIED)

Родственные конструкции

Arguments, Keyword, OtherTerm.
  • SpanTerm[15] диапазон определителей местоположения

Назначение

Служит для нахождения диапазона расширенных указателей XPointer.

Синтаксис EBNF

SpanTerm ::= 'span(' XPointer ',' XPointer ')'

Стандартный синтаксис

span(XPointer,XPointer)

Аргументы

n span( является строкой, отмечающей начало определителя местоположения .

n XPointer служит для нахождения частей разделов, полных разделов или диапазона разделов в содержащем их ресурсе (см. конструкцию XPointer). Синтаксис:

AbsTerm.OtherTerms|AbsTerm|OtherTerms

n , символ, разделяющий первый и второй указатели XPointer.

n ) отмечает конец определителя местоположения.

Комментарии

SpanTerm является компонентом конструкции OtherTerm.

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

StringTerm также может найти часть узла. StringTerm выбирает одну или более строк или позиций между заданными строками.

Диапазон начинается с первого символа данных, указанного первым расширенным указателем XPointer, и заканчивается последним символом, заданным вторым указателем XPointer.

Пример

В следующем примере производится выбор блока, начинающегося со второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5, и заканчивающегося ближайшим к предпоследнему вложенному экземпляру элемента одного уровня, атрибут LAST которого имеет любое значение:

span(child(2,#element,BIRD,5),fsibling(-2,#element,

"LAST",#IMPLIED))

Родственные конструкции

OtherTerm, XPointer.
  • StringTerm[17] определитель местоположения по подстроке

Назначение

Задает определитель местоположения по содержащейся в нем подстроке .

Синтаксис EBNF

StringTerm ::= 'string(' InstanceOrAll ','

SkipLit (',' Position(',' Length)?)?)

Стандартный синтаксис

string(InstanceOrAll,[SkipLit][,Position [,Length]]

Аргументы

n string( является строкой, отмечающей начало определителя местоположения.

n InstanceOrAll выбирает один или все экземпляры указанного элемента или подэлемента (cм. конструкцию InstanceOrAll). Синтаксис:

all|Instance

n , является символом, разделяющим аргументы определителя местоположения.

n SkipLit является строкой, соответствующей атрибуту NAME элемента языка HTML <A>.

n Position является необязательным компонентом, который задает смещение символа, не являющегося символом разметки, относительно начала или конца строки (см. конструкцию Position). Синтаксис:

[+|-][1_9][Digit[Digit[...Digit ]]]|end

n Length является необязательным компонентом, который задает количество символов в строке (см. конструкцию Length). Синтаксис:

[1_9][Digit[Digit[...Digit]]]

Комментари и

StringTerm является компонентом конструкции OtherTerm.

StringTerm может найти часть узла. StringTerm выбирает одну или более строк или позиций между заданными строками.

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

Если указан тип #all, результатом могут оказаться как смежные, так и несмежные узлы.

Примеры

В данном примере производится выбор четвертой позиции во втором экземпляре строки Hermione:

root().string(2,"Hermione",4)

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

id(chap1).string(4,'$',1,5)

Родственные конструкции

Digit, InstanceOrAll, Length, Position.
  • Val[14] значение атрибута

Назначение

Задает значение атрибута, исходя из которого производится выбор элемента.

Синтакси с EBNF

Val ::= '#IMPLIED' | '*' | Name | SkipLit

Стандартный синтаксис

#IMPLIED|*|Name|[SkipLit]

Аргументы

n #IMPLIED указывает на то, что значение не является обязательным и что значения по умолчанию не существует.

n * указывает на то, что допустимо любое значение.

n Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name в главе 2). Синтаксис:

#xnnnn [#xnnnn][_][:][#xnnnn]|[0|1|2|3|4|5

|6|7|8|9][.]|[-][#xnnnn][#xnnnn]...[#x nnnn]

n SkipLit является строкой, соответствующей атрибуту NAME элемента языка HTML <A>.

Комментарии

Val является компонентом конструкции Arguments.

Конструкция Val используется в качестве аргумента для выбора конкретного значения атрибута внутри определителя местоположения.

Если какой-либо узел не имеет значение атрибута, выбор сделан не будет.

Примеры

В данном примере производится выбор второго дочернего элемента того элемента, для которого атрибут BIRD имеет значение 5:

child(2,#element,BIRD,5)

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

fsibling(-2,#element,"LAST", #IMPLIED)

Родственные конструкции

Attr, Name (см. главу 2).
  • XPointer[1] расширенные указатели XPointer

Назначени е

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

Синтаксис EBNF

XPointer ::= AbsTerm '.' OtherTerms | AbsTerm

| OtherTerms

Стандартный синтаксис

AbsTerm.OtherTerms|AbsTerm| OtherTerms

Аргументы

n AbsTerm задает абсолютный определитель местоположения (см. конструк цию AbsTerm). Синтаксис:

root()|origin()|IdLoc|HTMLAddr

n . является символом, разделяющим определители местоположения.

n OtherTerms перечисляет один или более определителей местоположения (см. конструкцию OtherTerms). Синтаксис:

OtherTerm.OtherTerm

Комментарии

XPointer является компонентом конструкций Locator, Query и SpanTerm.

Расширенный указатель XPointer может производить поиск абсолютного или относительного местоположения, их диапазонов или одной или более строк.

Если расширенный указатель XPointer не начинается с абсолютного определителя местоположения (AbsTerm), начальным определителем местоположе ния будет корневая папка (root()).

Расширенный указатель XPointer обычно является частью расширенной ссылки XLink и используется для более точного указания местоположения в документе.

Первым указателем в содержащем его ресурсе обычно является единый идентификатор ресурса (URI).

Каждый определитель местоположения, перечисленный в расширенном указателе XPointer, задает это местоположение по имени или значению, достраивая и уточняя предыдущий определитель местоположения в списке.

Пример

В следующем примере используется идентификатор языка XPointer для получения всего ресурса, помеченного идентификатором ID(2489), который является составной частью документа test.xml, находящегося на Web-узле sample.com:
<A xml:link="extended"

href="http://www.sample.com/test.xml#ID(2489) ">

Sample Document</A>

ПРИМЕЧАНИЕ Другие примеры использования расширенных указателей XPointer приводятся ранее в этой главе.

Родственные конструкции

AbsTerm, AttrTerm, OtherTerm, OtherTerms, RelTerm, SpanTerm, StringTerm.