1
0
mirror of https://github.com/php/doc-ru.git synced 2026-04-25 00:08:24 +02:00
Files
archived-doc-ru/reference/cmark/commonmark.cql.xml
T
2024-06-14 17:02:33 +01:00

138 lines
7.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 92cce8d39bc632922a29628046c704d70965c0e5 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<reference xml:id="class.commonmark-cql" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Класс CommonMark\CQL</title>
<titleabbrev>CommonMark\CQL</titleabbrev>
<partintro>
<!-- {{{ CommonMark\Parser intro -->
<section xml:id="commonmark-cql.intro">
&reftitle.intro;
<para>
CommonMark Query Language - это DSL для описания того, как проходить через дерево узлов CommonMark, реализованное в виде синтаксического анализатора и компилятора для небольшого набора инструкций, и виртуальной машины для выполнения этих инструкций.
</para>
<formalpara>
<title>Пути:</title>
<para>
В наиболее упрощённой форме запрос CQL объединяет следующие пути и <literal>/</literal>, чтобы описать, как перемещаться по дереву:
<simplelist>
<member>firstChild</member>
<member>lastChild</member>
<member>previous</member>
<member>next</member>
<member>parent</member>
</simplelist>
Например, <literal>/firstChild/lastChild</literal> будет перемещаться к последнему дочернему узлу первого дочернего узла.
</para>
</formalpara>
<formalpara>
<title>Циклы</title>
<para>
В CQL может быть задан цикл, например, через дочерние элементы или дочерние элементы к определённому узлу с использованием пути <literal>children</literal> или <literal>siblings</literal>. Например, <literal>/firstChild/children</literal> будет перемещаться по всем дочерним элементам первого дочернего узла.
</para>
</formalpara>
<formalpara>
<title>Подзапросы</title>
<para>
CQL можно проинструктировать, как перемещаться, используя подзапрос, такой как <literal>[/firstChild]</literal>. Например, <literal>/firstChild/children[/firstChild]</literal> перейдёт к первому дочернему узлу всех дочерних узлов первого дочернего узла.
</para>
</formalpara>
<formalpara>
<title>Ограничения циклов</title>
<para>
Во время цикла CQL может быть проинструктирован ограничивать пройденный путь до узлов определённого типа. Например, <literal>/children(BlockQuote)</literal> будет перемещаться к дочерним элементам узла, где типом является <literal>BlockQuote</literal>. Следующие типы распознаются (без учёта регистра):
<simplelist>
<member>BlockQuote</member>
<member>List</member>
<member>Item</member>
<member>CodeBlock</member>
<member>HtmlBlock</member>
<member>CustomBlock</member>
<member>Paragraph</member>
<member>Heading</member>
<member>ThematicBreak</member>
<member>Text</member>
<member>SoftBreak</member>
<member>LineBreak</member>
<member>Code</member>
<member>HtmlInline</member>
<member>CustomInline</member>
<member>Emphasis</member>
<member>Strong</member>
<member>Link</member>
<member>Image</member>
</simplelist>
Типы могут использоваться как объединение, например, <literal>/children(BlockQuote|List)</literal> будет перемещаться к дочерним элементам узла, где типом является <literal>BlockQuote</literal> или <literal>List</literal>. Типы или объединения типов, также могут быть отменены. Например, <literal>/children(~BlockQuote)</literal> будет перемещаться к дочерним элементам узла, где тип не является <literal>BlockQuote</literal>, а <literal>/children(~BlockQuote|Paragraph)</literal> будет перемещаться к дочерним узлам, где тип не является <literal>BlockQuote</literal> или <literal>Paragraph</literal>.
</para>
</formalpara>
<formalpara>
<title>Ограничения путей</title>
<para>
CQL можно поручить создать цикл для перемещения к узлу определённого типа по определённому пути. Например, <literal>/firstChild(BlockQuote)</literal> перейдёт к первому дочернему узлу с типом <literal>BlockQuote</literal>. Обратите внимание, что как и другие циклы, для <literal>children</literal> и <literal>siblings</literal>, этот тип пути может сопровождаться только подзапросом.
</para>
</formalpara>
<formalpara>
<title>Замечания по реализации</title>
<para>
Хотя CQL реализован как часть модуля PHP CommonMark, он стоит отдельно от PHP и не использует виртуальную машину PHP или внутреннее представление значений.
</para>
</formalpara>
</section>
<!-- }}} -->
<section xml:id="commonmark-cql.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>CommonMark\CQL</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>CommonMark\CQL</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">Конструктор</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('commonmark-cql.construct')/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.commonmark-cql')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])" />
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
&reference.cmark.commonmark.cql.construct;
&reference.cmark.commonmark.cql.invoke;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->