xmlstarlet을 사용하여이 KML 파일에서 '좌표'노드의 내용을 추출하려고합니다.이 XPath 표현식이 xmlstarlet에서 올바른 값을 반환하지 않는 이유는 무엇입니까?
KML 파일은 xmlstarlet 자체를 사용하여 유효성을 검사합니다.
나는이 포함 된 작은 테스트 파일로 내려 깍했습니다 :이 쿼리를 실행
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<name>eurovelo-5 690</name>
<Snippet></Snippet>
<description><![CDATA[ ]]></description>
<styleUrl>#style390</styleUrl>
<LineString>
<tessellate>1</tessellate>
<coordinates>
10.146948,44.790592,97.500000
10.146958,44.790562,97.599998
10.147018,44.790497,97.699997
10.147083,44.790466,97.699997
</coordinates>
</LineString>
</Placemark>
</Document>
</kml>
하지만 실패
xmlstarlet sel -t -c "//coordinates/text()" test.kml
이 온라인 경로 도구를 사용하여 올바르게 구문 분석 나타납니다 - http://www.qutoric.com/xslt/analyser/xpathtool.html
을여기에 뭔가가 있습니까?
당신이 참조하는 온라인 xpath 도구는 XPath 2.0 도구입니다. 따라서 XML의 기본 네임 스페이스를 인식합니다. xmlstarlet과 같은 XPath 1.0 도구는 기본 네임 스페이스를 인식하지 못하므로 네임 스페이스를 정의해야합니다. 접두사 - 허용 된 대답에 명시된대로 – pgfearo