xmllint 쉘이 xpath 표현식에 숫자 계산을 표시하지 않습니까?

xmllint 쉘이 xpath 표현식에 숫자 계산을 표시하지 않습니까?

저는 cygwin에서 xmllint의 대화형 쉘을 사용하고 있습니다. 노드 수를 세고 싶지만 xmllint가 예상한 대로 작동하지 않는 것 같습니다.

$> cat test.xml
<?xml version="1.0"?>
<result>
  <node>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
  </node>
</result>
$> xmllint --shell test.xml
/ > cat count(/result/node/item)
count(/result/node/item) is a number

숫자라고 나와 있지만 웹 검색에서 본 것처럼 숫자가 표시되지는 않습니다.

count(/result/node/item) is a number : 5

여기서 무슨 문제가 있습니까?

$> xmllint --version
xmllint: using libxml version 20706
   compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib

답변1

@Stephane이 댓글에서 이것을 언급했다는 것을 알고 있지만 이 기술을 발견하고 동일한 솔루션에 대한 그의 댓글을 보기 전에 이 답변을 게시하려고 했습니다. 이 작업의 에티켓은 확실하지 않지만 그것이 제가 찾은 것입니다. 타인의 댓글에 게시된 답변이 부적절한 경우, LMK와 저는 해당 답변을 삭제할 수 있습니다.

해결책

xpath함수에서 반환된 결과를 표시하려면 xmllint의 명령을 사용해야 합니다 count.

$ xmllint --shell test.xml 
/ > cat         
<?xml version="1.0"?>
<result>
  <node>
    <item/>
    <item/>
    <item/>
    <item/>
    <item/>
  </node>
</result>

/ > xpath count(/result/node/item)
Object is a number : 5
/ > 

이 사이트에서 답을 찾았습니다:xmllint 셸에서 XPath 표현식 사용.

관련 정보