(cmark >= 1.1.0)
Le CommonMark Query Language est un DSL pour dĂ©crire comment voyager Ă travers un arbre de nĆuds CommonMark implĂ©mentĂ© comme un analyseur et un compilateur pour un petit ensemble d'instructions, et une machine virtuelle pour exĂ©cuter ces instructions.
Dans sa forme la plus simpliste, une requĂȘte CQL combine les chemins suivants et / pour dĂ©crire comment voyager Ă travers un arbre :
/firstChild/lastChild voyage au dernier nĆud enfant du premier nĆud enfant.
CQL peut effectuer des boucles, par exemple Ă travers les enfants ou les frĂšres et sĆurs d'un nĆud particulier, en utilisant le chemin children, ou siblings. Par exemple, /firstChild/children parcourra tous les enfants du premier nĆud enfant.
CQL peut ĂȘtre instruit de voyager en utilisant une sous-requĂȘte comme [/firstChild]. Par exemple, /firstChild/children[/firstChild] voyagera au premier nĆud enfant de tous les enfants du premier nĆud enfant.
En bouclant, CQL peut ĂȘtre instruit de restreindre le chemin parcouru aux nĆuds d'un type particulier. Par exemple /children(BlockQuote) voyagera aux enfants d'un nĆud oĂč le type est BlockQuote. Les types suivants sont reconnus (insensibles Ă la casse) :
/children(BlockQuote|List) voyagera aux enfants d'un nĆud oĂč le type est BlockQuote ou List. Les types, ou unions de types, peuvent Ă©galement ĂȘtre niĂ©s. Par exemple /children(~BlockQuote) voyagera aux enfants d'un nĆud oĂč le type n'est pas BlockQuote, et /children(~BlockQuote|Paragraph) voyagera aux enfants d'un nĆud oĂč le type n'est pas BlockQuote ou Paragraph.
CQL peut ĂȘtre instruit de crĂ©er une boucle pour voyager Ă un nĆud d'un type particulier, Ă un chemin particulier. Par exemple, /firstChild(BlockQuote) voyagera au premier nĆud enfant oĂč le type est BlockQuote. Il est Ă noter que comme d'autres boucles pour children et siblings, ce type de chemin ne peut ĂȘtre suivi que par une sous-requĂȘte.
Bien que CQL ait été implémenté en tant que partie de l'extension PHP CommonMark, il est séparé de PHP et n'utilise pas la machine virtuelle de PHP ou la représentation interne des valeurs.