Text only | Skip links
Skip links||IT Services, University of Oxford

1. Что еще нам нужно знать?

Мы подготовили несколько TEI-документов. Какие технологии мы можем использовать для их обработки?

  • XPath
  • XSLT
  • XML Query (XQuery)

2. Что такое XPath?

  • Нормализованный синтаксис для идентификации и доступа к фрагмету XML-документа
  • Библиотека стандартных функций
  • Стандарт, принятый консорциумом W3C
  • Важный компонент XQuery, XSLT и практически любой системы обработки XML

3. Пример: текст

<body n="anthology">
 <div type="poem">
  <head>The SICK ROSE </head>
  <lg type="stanza">
   <l n="1">O Rose thou art sick.</l>
   <l n="2">The invisible worm,</l>
   <l n="3">That flies in the night </l>
   <l n="4">In the howling storm:</l>
  </lg>
  <lg type="stanza">
   <l n="5">Has found out thy bed </l>
   <l n="6">Of crimson joy:</l>
   <l n="7">And his dark secret love </l>
   <l n="8">Does thy life destroy.</l>
  </lg>
 </div>
</body>

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30. XPath: резюме

  • Путь к месту в документе (location path) выражается в виде набора узлов (node-set)
  • Путь может быть абсолютным(/div/lg[1]/l)
  • или относительным (l/../../head)
  • Формальный синтаксис: (axisname::nodetest[predicate])
  • Пример:child::div[contains(head, 'ROSE')]

31. XPath: краткий синтаксис

  • наиболее «востребованная» ось – child::, таким образом просто lg – сокращение от child::lg
  • @ – то же самое, что attribute::, таким образом @type – сокращение от attribute::type
  • . – то же самое, что self::, таким образом ./head – сокращение от self::node()/child::head
  • .. – то же самое, что parent::, таким образом ../lg – сокращение от parent::node()/child::lg
  • // – то же самое, что descendant-or-self::, таким образом div//l – сокращение от child::div/descendant-or-self::node()/child::l

32. XPath также обладает рядом встроенных функций

В их числе...
функции набора узлов (node-set functions)
например, чтобы сосчитать количество узлов в наборе, выбрать узел по его позиции, названию или пространству имен и т.п.
функции цепочки символов (string functions)
например, чтобы стыковать цепочки, сопоставлять их, находить фрагменты внутри цепочек (substrings), проводить посимвольное преобразование и т.д.

33. «Расширяемые» стилевые листки XSLT (eXtensible StyLesheeTs)

Язык XSLT
  • основан на формате XML; использует пространства имен для различения содержимого на выходе (output) от инструкций
  • полноценный по Тьюрингу (Turing-complete) функциональный язык программирования
  • «читает» и «рисует» деревья XML
  • создан для генерации XSL FO, но сегодня широко используется для генерации HTML или трансформации одного документа XML в другой

34. Что означает «трансформация»?

Нам нужно преобразовать
<recipe>
<title>Pasta for beginners</title>
<ingredients><item>Pasta</item>
<item>Grated cheese</item>
</ingredients>
<cook>Cook the pasta and mix with the cheese</cook>
</recipe>
в
<html>
<h1>Pasta for beginners</h1>
<p>Ingredients: Pasta Grated cheese</p>
<p>Cook the pasta and mix with the cheese</p>
</html>

35. Как выполнить эту трансформацию с помощью XSL?

<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
version="1.0">
<xsl:template match="recipe">
<html>
<h1><xsl:value-of select="title"/></h1>
<p>Ingredients:
<xsl:apply-templates
select = "ingredients/item"/>
</p>
<p><xsl:value-of select="cook"/></p>
</html>
</xsl:template>
</xsl:stylesheet>

36. XSL: Резюме

Основные методы:
  • правила шаблонов (template rules) для узлов XML на входе
  • материал берется из других узлов
  • один и тот же узел может обрабатываться несколько раз в различных режимах
  • переменные и функции
  • выбор, сортировка, нумерация
  • различные форматы на выходе

37. Что такое XQuery?

  • специфический (domain-specific) метод доступа и обработки данных XML
  • создан для написания запросов XML
  • основан на использовании XPath
  • аналогичен SQL (но предназначен для XML, а не для реляционных данных)
  • рекомендован консорциумом W3C

38. XQuery: основные приемы

выражения пути (path expressions)
возвращение набора узлов
конструкторы элементов
возвращение нового элемента
выражения FLWOR
аналогичны выражениям Select в SQL
выражения списков
операции со списками или наборами значений
условные выражения
традиционные логические конструкции ЕСЛИ, ТО, ИНАЧЕ
квалифицированные выражения (qualified expressions)
Булевы операции со списками и наборами значений
выражения типа данных (datatype)
проверка соответствия значений типу данных

XQUERY – полноценный язык программирования

39. Использование XQuery

  • Сам язык, как правило, скрыт от пользователя (например, запросной формой HTML)
  • Продукты на основе XQuery, например eXist, могут включаться в среду (framework) веб-публикации, как, например, Apache...
  • ... но к eXist могут обращаться и программы на Java, а также приложения, использующие HTTP/REST, XML-RPC, SOAP, WebDAV и т.д.
  • eXist включает XUpdate – средство добавления, изменения и удаления узлов из XML-базы данных

40. Доступ к XML: Выводы

  • XML – это набор иерархически организованных узлов, каждый из которых может быть идентифицирован с помощью XPath
  • XSLT - удобное средство преобразования XML в другие формы
  • XQuery позволяет формулировать запросы любой сложности к общирным текстовым базам данных
  • ... Мы использовали кодировку TEI XML в наших текстах не просто так, а для того, чтобы иметь возможность извлекать из этих текстов полезную информацию или создавать на их основе новые объекты. Например, выводить текст в разных форматах, составлять списки имен, получать статистическую информацию, осуществлять лингвистический анализ или добавлять дополнительные слои аннотации.


Date: 2008-07
Copyright University of Oxford