我需要您對XMLStarlet命名空間的幫助。 (從不覺得不好解釋庫) 我有這樣一個XML文件:XMLStarlet命名空間定義
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
<ncx version="2005-1" xml:lang="fr" xmlns="http://www.daisy.org/z3986/2005/ncx/">
<head>
<meta name="dtb:uid" content="9782721213747"/>
<meta name="dtb:depth" content="1"/>
<meta name="dtb:totalPageCount" content="0"/>
<meta name="dtb:maxPageNumber" content="0"/>
</head>
<docTitle>
<text>My text</text>
</docTitle>
<navMap>
<navPoint id="NavPoint-1" playOrder="1"><navLabel><text>Couverture</text></navLabel><content src="01_cover.html"/></navPoint>
等。
所以現在,我在XMLstarlet中的查詢失敗了,因爲存在名稱空間。
xmlns="http://www.daisy.org/z3986/2005/ncx/"
我讀過你可以使用SED去除命名空間。 就像這樣:
cat Myfile.ncx | sed -e 's/ xmlns.*=".*"//g' | xmlstarlet ed -d "/ncx/navMap/navPoint[@playOrder='5']"
它工作得很好。問題是,我需要命名空間並且不想刪除它們。
而且,我已經試過這樣:
xmlstarlet -N x="http://www.daisy.org/z3986/2005/ncx/" ed -d "/ncx/navMap/navPoint[@playOrder='5']" Myfile.ncx
不工作。 (也不理解x是什麼意思x =「http ...」我讀了一些把「我的」一些放在其他值...並且在XMLStarlet頁面沒有這個頁面)
任何想法如何在這個XML文件中使用XMLStarlet並在輸出中保留命名空間?
(我用XML明星刪除一些節點,我不使用它的方式更安全,使這種方式,而不是使用shell命令。)
巨大的感謝誰幫助;)