calibre - en to ru translation catalogue (20 entries)

en: XPath tutorial
ru: Учебник по XPath

en: In this tutorial, you will be given a gentle introduction to `XPath <https://en.wikipedia.org/wiki/XPath>`_, a query language that can be used to select arbitrary parts of `HTML <https://en.wikipedia.org/wiki/HTML>`_ documents in calibre. XPath is a widely used standard, and googling it will yield a ton of information. This tutorial, however, focuses on using XPath for e-book related tasks like finding chapter headings in an unstructured HTML document.
ru: Этот учебник — введение в `XPath <https://en.wikipedia.org/wiki/XPath>`_, язык запросов, который можно использовать для выбора произвольных частей `HTML <https://en.wikipedia.org/wiki/HTML>`_ в calibre. XPath — широко используемый стандарт, и поиск Google выдаст тонну информации. Однако этот учебник сосредотачивается на решении с помощью XPath задач, связанных с электронными книгами, например поиске заголовков разделов в неструктурированном HTML-документе.

en: Contents
ru: Содержание

en: Selecting by tag name
ru: Выбор по имени тега

en: The simplest form of selection is to select tags by name. For example, suppose you want to select all the ``<h2>`` tags in a document. The XPath query for this is simply::
ru: Простейшая форма выбора — выбор тегов по имени. Предположим, что вы хотите выбрать все теги ``<h2>`` в документе. Запрос XPath для этого прост::

en: The prefix `//` means *search at any level of the document*. Now suppose you want to search for ``<span>`` tags that are inside ``<a>`` tags. That can be achieved with::
ru: Префикс `//` означает *поиск на любом уровне документа*. Теперь предположим, что вы хотите искать теги ``<span>``, которые находятся внутри тегов ``<a>``. Этого можно достичь с помощью::

en: If you want to search for tags at a particular level in the document, change the prefix::
ru: Если вы хотите искать теги на определённом уровне в документе, измените префикс::

en: This will match only ``<p>A very short e-book to demonstrate the use of XPath.</p>`` in the :ref:`sample_ebook` but not any of the other ``<p>`` tags. The ``h:`` prefix in the above examples is needed to match XHTML tags. This is because internally, calibre represents all content as XHTML. In XHTML tags have a *namespace*, and ``h:`` is the namespace prefix for HTML tags.
ru: Это будет соответствовать только ``<p>A very short e-book to demonstrate the use of XPath.</p>`` в разделе «:ref:`sample_ebook`», а не каким-либо другим тегам ``<p>``. Префикс ``h:`` в вышеприведённых примерах необходим для соответствия тегам XHTML. Потому что внутри calibre всё содержимое представлено как XHTML. В тегах XHTML есть *пространство имён*, а ``h:`` — префикс пространства имён для HTML-тегов.

en: There are several new features in this XPath expression. The first is the use of the wildcard ``*``. It means *match any tag*. Now look at the test expression ``name()='h1' or name()='h2'``. :term:`name()` is an example of a *built-in function*. It simply evaluates to the name of the tag. So by using it, we can select tags whose names are either `h1` or `h2`. Note that the :term:`name()` function ignores namespaces so that there is no need for the ``h:`` prefix. XPath has several useful built-in functions. A few more will be introduced in this tutorial.
ru: В этом выражении XPath имеется несколько новых функций. Во-первых, это использование подстановочного символа ``*``. Это означает *соответствие любому тегу*. Теперь посмотрим на тестовое выражение ``name()='h1' or name()='h2'``. :term:`name()` — пример *встроенной функции*. Она просто вычисляет имя тега. Таким образом, с её помощью мы можем выбрать теги, имена которых либо `h1`, либо `h2`. Обратите внимание, что функция :term:`name ()` игнорирует пространства имён, поэтому нет необходимости в префиксе ``h:``. XPath имеет несколько полезных встроенных функций. Некоторые из них будут показаны в этом учебнике.

en: Selecting by attributes
ru: Выбор по атрибутам

en: To select tags based on their attributes, the use of predicates is required::
ru: Чтобы выбрать теги на основе их атрибутов, необходимо использовать предикаты::

en: Here, the ``@`` operator refers to the attributes of the tag. You can use some of the `XPath built-in functions`_ to perform more sophisticated matching on attribute values.
ru: Здесь оператор ``@`` ссылается на атрибуты тега. Вы можете использовать некоторые из `XPath built-in functions`_ (встроенных функций XPath) для выполнения более сложных сопоставлений значений атрибутов.

en: Selecting by tag content
ru: Выбор по содержимому тега

en: Using XPath, you can even select tags based on the text they contain. The best way to do this is to use the power of *regular expressions* via the built-in function :term:`re:test()`::
ru: Используя XPath, вы можете выбирать теги даже на основе содержащегося в них текста. Лучший способ сделать это — призвать силу *регулярных выражений* с помощью встроенной функции :term:`re:test ()`::

en: Here the ``.`` operator refers to the contents of the tag, just as the ``@`` operator referred to its attributes.
ru: Здесь оператор ``.`` ссылается на содержимое тега, так же как оператор ``@`` ссылается на его атрибуты.

en: Sample e-book
ru: Образец электронной книги

en: XPath built-in functions
ru: Встроенные функции XPath

en: The name of the current tag.
ru: Имя текущего тега.

en: ``contains(s1, s2)`` returns `true` if s1 contains s2.
ru: ``contains(s1, s2)`` возвращает `true`, если s1 содержит s2.

en: ``re:test(src, pattern, flags)`` returns `true` if the string `src` matches the regular expression `pattern`. A particularly useful flag is ``i``, it makes matching case insensitive. A good primer on the syntax for regular expressions can be found at `regexp syntax <https://docs.python.org/library/re.html>`_
ru: ``re:test(src, pattern, flags)`` возвращает `true`, если строка `src` соответствует регулярному выражению `pattern`. Особенно полезен флаг ``i``: он отвечает за нечувствительность к регистру. Хороший учебник синтаксиса регулярных выражений для начинающих можно найти по ссылке `regexp syntax <https://docs.python.org/library/re.html>`_.
