변수를 XPath로 사용하는 "xmlstarlet 편집"

변수를 XPath로 사용하는 "xmlstarlet 편집"

설명서를 따르면:

xmlstarlet edit --help

--varXPath 표현식을 변수로 선언하는 데 사용할 수 있다는 것을 읽을 수 있습니다 .

moc 파일 생성:

cat<<EOF > /tmp/file.xml
<root>
<elt>x</elt>
<!-- comment -->
<elt>y</elt>
<!-- other comment -->
</root>
EOF

이것은 변수 없이 작동합니다.

xmlstarlet edit \
    --var xp '//elt/following::comment()' \
    -a '//elt/following::comment()' -t elem -n p -v 'some new text' \
    -a '//elt/following::comment()' -t elem -n p -v 'some other text' \
/tmp/file.xml

이것은 변수를 사용하지 않고 편집되었습니다.

xmlstarlet edit \
    --var xp '//elt/following::comment()' \
    -a xp -t elem -n p -v 'some new text' \
    -a xp -t elem -n p -v 'some other text' \
/tmp/file.xml

변수를 사용하면 무엇을 놓치고 있나요?

답변1

'$xp'변수를 참조 하려면 다음을 수행하세요.

xmlstarlet edit \
    --var xp '//elt/following::comment()' \
    -a '$xp' -t elem -n p -v 'some new text' \
    -a '$xp' -t elem -n p -v 'some other text' \
/tmp/file.xml

관련 정보