mirror of
https://github.com/php/doc-ru.git
synced 2026-04-25 00:08:24 +02:00
138 lines
7.4 KiB
XML
138 lines
7.4 KiB
XML
<?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
|
||
-->
|