(cmark >= 1.1.0)
CommonMark 查詢語言 (CQL) 是一種 DSL,用於描述如何在 CommonMark 節點樹中移動,它被實現為一個小型指令集的解析器和編譯器,以及一個用於執行這些指令的虛擬機器。
在最簡化的形式中,CQL 查詢結合以下路徑和 /
來描述如何在樹中移動
/firstChild/lastChild
會移動到第一個子節點的最後一個子節點。
CQL 可以被指示進行迴圈,例如透過特定節點的子節點或兄弟節點,使用路徑 children
或 siblings
。例如,/firstChild/children
會移動到第一個子節點的所有子節點。
CQL 可以透過使用子查詢(例如 [/firstChild]
)來指示如何移動。例如,/firstChild/children[/firstChild]
會移動到第一個子節點的所有子節點的第一個子節點。
在迴圈過程中,可以指示 CQL 將移動路徑限制為特定類型的節點。例如,/children(BlockQuote)
會移動到類型為 BlockQuote
的節點的子節點。以下類型會被識別(不區分大小寫)
/children(BlockQuote|List)
會移動到類型為 BlockQuote
或 List
的節點的子節點。類型或類型的聯合也可以被否定。例如,/children(~BlockQuote)
會移動到類型不是 BlockQuote
的節點的子節點,而 /children(~BlockQuote|Paragraph)
會移動到類型不是 BlockQuote
或 Paragraph
的節點的子節點。
可以指示 CQL 建立迴圈以移動到特定路徑上的特定類型的節點。例如,/firstChild(BlockQuote)
會移動到類型為 BlockQuote
的第一個子節點。請注意,與 children
和 siblings
的其他迴圈一樣,這種路徑只能後跟一個子查詢。
雖然 CQL 已作為 PHP CommonMark 擴充套件的一部分實作,但它獨立於 PHP,不使用 PHP 的虛擬機器或值的內部表示形式。