我想通過XPath
從XML中選擇值。我不知道爲什麼xmlstarlet sel -t -m //data -v "." /tmp/test.xml
確實工作和xmlstarlet sel -t -m //data /tmp/test.xml
不。如何使用XML starlet的「查看」選項?
我知道選項-v
意味着查看。但xmlstarlet sel -t -m //data -v /tmp/test.xml
卡住了。
所以,我的問題是如何正確使用選項查看。
我想通過XPath
從XML中選擇值。我不知道爲什麼xmlstarlet sel -t -m //data -v "." /tmp/test.xml
確實工作和xmlstarlet sel -t -m //data /tmp/test.xml
不。如何使用XML starlet的「查看」選項?
我知道選項-v
意味着查看。但xmlstarlet sel -t -m //data -v /tmp/test.xml
卡住了。
所以,我的問題是如何正確使用選項查看。
實際上,-v
意味着價值的和-m
裝置的for-each。這些參考XSLT的定義*,因爲sel子命令只是生成一個XSLT文檔並在輸入上運行它。
xmlstarlet sel -t -m //data /tmp/test.xml
這是一個沒有主體的循環,所以沒有輸出。
xmlstarlet sel -t -m //data -v /tmp/test.xml
這裏/tmp/test.xml
被解釋爲XPath表達式-v
所以這意味着:對於-每個數據節點,輸出的值的節點命名test.xml
的tmp
根節點之下。它期望輸入XML來自標準輸入,因此它似乎會卡住。
通過使用-C
選項,您始終可以將任何sel
命令行的含義指定爲XSLT。
*在最近版本xmlstarlet(1.3+)-v
將輸出在由一個新行分開的節點列表的每個節點值的,而不是XSLT定義其中value-的唯一的輸出的字符串值第一個節點。
那麼,*匹配*,但是,它確實相當於for-each。 –