| Библиотека: 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.
Назначение
Задает для ключевого слова аргументы ,
указывающие на относительное местоположение искомого элемента.
Синтаксис 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.
Назначение
Описывает атрибут для управления выбором
элемента.
Синтаксис 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).
Назначение
Вставляет номер экземпляра .
Синтаксис 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.
Назначение
Идентифицирует конкретный тип или номер
узла.
Синтаксис 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.
|