1# SOME DESCRIPTIVE TITLE. 2# Copyright (C) Kovid Goyal 3# This file is distributed under the same license as the calibre package. 4# 5# Translators: 6msgid "" 7msgstr "" 8"Project-Id-Version: calibre\n" 9"Report-Msgid-Bugs-To: \n" 10"POT-Creation-Date: 2020-07-03 07:43+0530\n" 11"PO-Revision-Date: 2020-07-03 02:15+0000\n" 12"Last-Translator: Kovid Goyal <kovid@kovidgoyal.net>\n" 13"Language-Team: Pushto (http://www.transifex.com/calibre/calibre/language/ps/)\n" 14"MIME-Version: 1.0\n" 15"Content-Type: text/plain; charset=UTF-8\n" 16"Content-Transfer-Encoding: 8bit\n" 17"Language: ps\n" 18"Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 20#: ../../home/kovid/work/calibre/manual/xpath.rst:4 21msgid "XPath tutorial" 22msgstr "" 23 24#: ../../home/kovid/work/calibre/manual/xpath.rst:6 25msgid "" 26"In this tutorial, you will be given a gentle introduction to `XPath " 27"<https://en.wikipedia.org/wiki/XPath>`_, a query language that can be used " 28"to select arbitrary parts of `HTML <https://en.wikipedia.org/wiki/HTML>`_ " 29"documents in calibre. XPath is a widely used standard, and googling it will " 30"yield a ton of information. This tutorial, however, focuses on using XPath " 31"for e-book related tasks like finding chapter headings in an unstructured " 32"HTML document." 33msgstr "" 34 35#: ../../home/kovid/work/calibre/manual/xpath.rst:16 36msgid "Contents" 37msgstr "" 38 39#: ../../home/kovid/work/calibre/manual/xpath.rst:19 40msgid "Selecting by tag name" 41msgstr "" 42 43#: ../../home/kovid/work/calibre/manual/xpath.rst:21 44msgid "" 45"The simplest form of selection is to select tags by name. For example, " 46"suppose you want to select all the ``<h2>`` tags in a document. The XPath " 47"query for this is simply::" 48msgstr "" 49 50#: ../../home/kovid/work/calibre/manual/xpath.rst:27 51msgid "" 52"The prefix `//` means *search at any level of the document*. Now suppose you" 53" want to search for ``<span>`` tags that are inside ``<a>`` tags. That can " 54"be achieved with::" 55msgstr "" 56 57#: ../../home/kovid/work/calibre/manual/xpath.rst:33 58msgid "" 59"If you want to search for tags at a particular level in the document, change" 60" the prefix::" 61msgstr "" 62 63#: ../../home/kovid/work/calibre/manual/xpath.rst:39 64msgid "" 65"This will match only ``<p>A very short e-book to demonstrate the use of " 66"XPath.</p>`` in the :ref:`sample_ebook` but not any of the other ``<p>`` " 67"tags. The ``h:`` prefix in the above examples is needed to match XHTML tags." 68" This is because internally, calibre represents all content as XHTML. In " 69"XHTML tags have a *namespace*, and ``h:`` is the namespace prefix for HTML " 70"tags." 71msgstr "" 72 73#: ../../home/kovid/work/calibre/manual/xpath.rst:45 74msgid "" 75"Now suppose you want to select both ``<h1>`` and ``<h2>`` tags. To do that, " 76"we need a XPath construct called *predicate*. A :dfn:`predicate` is simply a" 77" test that is used to select tags. Tests can be arbitrarily powerful and as " 78"this tutorial progresses, you will see more powerful examples. A predicate " 79"is created by enclosing the test expression in square brackets::" 80msgstr "" 81 82#: ../../home/kovid/work/calibre/manual/xpath.rst:53 83msgid "" 84"There are several new features in this XPath expression. The first is the " 85"use of the wildcard ``*``. It means *match any tag*. Now look at the test " 86"expression ``name()='h1' or name()='h2'``. :term:`name()` is an example of a" 87" *built-in function*. It simply evaluates to the name of the tag. So by " 88"using it, we can select tags whose names are either `h1` or `h2`. Note that " 89"the :term:`name()` function ignores namespaces so that there is no need for " 90"the ``h:`` prefix. XPath has several useful built-in functions. A few more " 91"will be introduced in this tutorial." 92msgstr "" 93 94#: ../../home/kovid/work/calibre/manual/xpath.rst:62 95msgid "Selecting by attributes" 96msgstr "" 97 98#: ../../home/kovid/work/calibre/manual/xpath.rst:64 99msgid "" 100"To select tags based on their attributes, the use of predicates is " 101"required::" 102msgstr "" 103 104#: ../../home/kovid/work/calibre/manual/xpath.rst:70 105msgid "" 106"Here, the ``@`` operator refers to the attributes of the tag. You can use " 107"some of the `XPath built-in functions`_ to perform more sophisticated " 108"matching on attribute values." 109msgstr "" 110 111#: ../../home/kovid/work/calibre/manual/xpath.rst:76 112msgid "Selecting by tag content" 113msgstr "" 114 115#: ../../home/kovid/work/calibre/manual/xpath.rst:78 116msgid "" 117"Using XPath, you can even select tags based on the text they contain. The " 118"best way to do this is to use the power of *regular expressions* via the " 119"built-in function :term:`re:test()`::" 120msgstr "" 121 122#: ../../home/kovid/work/calibre/manual/xpath.rst:84 123msgid "" 124"Here the ``.`` operator refers to the contents of the tag, just as the ``@``" 125" operator referred to its attributes." 126msgstr "" 127 128#: ../../home/kovid/work/calibre/manual/xpath.rst:90 129msgid "Sample e-book" 130msgstr "" 131 132#: ../../home/kovid/work/calibre/manual/xpath.rst:96 133msgid "XPath built-in functions" 134msgstr "" 135 136#: ../../home/kovid/work/calibre/manual/xpath.rst:99 137msgid "name()" 138msgstr "" 139 140#: ../../home/kovid/work/calibre/manual/xpath.rst:101 141msgid "The name of the current tag." 142msgstr "" 143 144#: ../../home/kovid/work/calibre/manual/xpath.rst:102 145msgid "contains()" 146msgstr "" 147 148#: ../../home/kovid/work/calibre/manual/xpath.rst:104 149msgid "``contains(s1, s2)`` returns `true` if s1 contains s2." 150msgstr "" 151 152#: ../../home/kovid/work/calibre/manual/xpath.rst:105 153msgid "re:test()" 154msgstr "" 155 156#: ../../home/kovid/work/calibre/manual/xpath.rst:107 157msgid "" 158"``re:test(src, pattern, flags)`` returns `true` if the string `src` matches " 159"the regular expression `pattern`. A particularly useful flag is ``i``, it " 160"makes matching case insensitive. A good primer on the syntax for regular " 161"expressions can be found at `regexp syntax " 162"<https://docs.python.org/library/re.html>`_" 163msgstr "" 164