我有這樣的DTD:的XPath遞歸定義
<!ELEMENT Root (Thread*) >
<!ELEMENT Thread(ThreadId, Message) >
<!ELEMENT Replies(message+) >
<!ELEMENT message(timestamp, sender, recipient, subject, text, Replies?)>
所以線程將有一個消息,這個消息可以有一個節點「回覆」,那麼這個節點可以包含消息,並依此類推,直到結構的底部。
現在我想要做的是首先檢索具有最多消息的線程的ID,然後檢索具有最長嵌套應答鏈的線程的ID。
這感覺就像一個遞歸問題,但我無法在XPath中處理它。到目前爲止,我嘗試過這樣的事情:
For $thread in //thread
Count(descendant-or-self::$thread/message)
對於每個線程我試着算兒童信息節點的數量,但這種方法計算的線程的所有子節點的數量,因此包括回覆節點。
我對這種問題感到迷茫,因爲我無法弄清楚在這些'遞歸情況下'要做什麼。
那麼您可以訪問哪個版本的XPath? 2.0,3.0,3.1? –