1

によって XML から値を選択しようとしていますXPathなぜxmlstarlet sel -t -m //data -v "." /tmp/test.xml 機能し、xmlstarlet sel -t -m //data /tmp/test.xml 機能しないのだろうか。

option がview-vを意味することは知っています。しかし、立ち往生しています。xmlstarlet sel -t -m //data -v /tmp/test.xml

だから、私の質問は、オプションビューを適切に使用する方法です。

4

1 に答える 1

2

実際に-vは、 value-offor-each-mを意味します。sel サブコマンドは単純に XSLT ドキュメントを生成し、それを入力に対して実行するため、これらはXSLT定義*を参照します。

xmlstarlet sel -t -m //data /tmp/test.xml

これは本体のないループなので、出力はありません。

xmlstarlet sel -t -m //data -v /tmp/test.xml

Here/tmp/test.xmlは XPath 式として解釈される-vため、各データ ノードに対して、ルート ノードtest.xmlの下に指定されたノードの値を出力します。tmpまた、入力 XML が標準入力から来ることを想定しているため、スタックしているように見えます。

selオプションを使用すると、コマンド ラインの意味を XSLT としていつでも取得でき-Cます。


* xmlstarlet (1.3+) の最近のバージョンでは-v、value-of が最初のノードの文字列値のみを出力する XSLT 定義ではなく、改行で区切られた nodelist 内の各ノードの value-of を出力します。

于 2012-12-06T23:44:08.610 に答える