Xmllint
如何編寫 XMLLint –shell 查詢的內容?
我
xmllint --shell
用來檢查一個非常大的 XML 文件。我編寫了一個 XPath 查詢來返回我想要的結果,但是為了查看和保存結果,我必須cd
對每個節點然後write filename.xml
. 如果我不必每次都搜尋,選擇我想要的結果索引,這不會那麼糟糕。例子:xpath count(/root/entry/subentry[special_id = /root/entry/subentry/special_id]) Object is a Node Set : Set contains 121 nodes: cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[1] write node1.xml cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[2] write node2.xml cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[3] write node3.xml ... cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[121] write node121.xml
以上或多或少是我正在做的事情。有沒有辦法直接從搜尋中將 XML 節點保存為文件,而不必
cd
單獨處理它們並繼續重複搜尋?或者有沒有辦法保留搜尋結果,或者在一次查詢中獲取他們的位置編號?
這似乎是不可能的,所以我寫了一個 XSLT 來做到這一點。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="/"> <root> <xsl:for-each select="/root/entry/subentry[special_id = /root/entry/subentry/special_id]"> <xsl:copy-of select="."/> </xsl:for-each> </root> </xsl:template> </xsl:stylesheet>