我想在IE9中做一些XPath查詢,有一些排序成功,但肯定它只是試圖,我無法弄清楚什麼可以工作,什麼不是。xpath在IE9 - 一般問題
我想要做的兩件事情:從加載XML中的自定義空間
- 查詢元素 從聯SVG
- 查詢元素具有自定義命名空間屬性
點一個作品,用這種代碼:
其中doc
是加載的XML的引用,xpathNsString是:
"xmlns=\"http://www.w3.org/1999/xhtml\" " +
"xmlns:svg=\"http://www.w3.org/2000/svg\" "+
"xmlns:dc=\"http://purl.org/dc/elements/1.1/\" "+
"xmlns:cc=\"http://creativecommons.org/ns#\" "+
"xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" "+
"xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" "+
"xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" "+
"xmlns:mine=\"http://www.mine.org\" "+
"xmlns:html=\"http://www.w3.org/1999/xhtml\"";
cloneSVGNode
和哪些克隆整個結果,使我可以將其追加到DOM的函數 - 的作品。
後來在代碼中,我想查詢一些(目前在DOM)SVG元素,使用這樣的查詢:
//svg:g[@mine:my-name="my-value"]
但這不起作用。我讀過IE不支持DOM元素上的xpath查詢,但this stackoverflow question中描述的方式似乎有辦法做到這一點。於是我抓住了問題答案(http://sourceforge.net/projects/html-xpath/)中提到的框架版本並做了一些測試。 因爲我能夠得到一些html元素,但它拒絕爲名稱空間和svg工作,對「純xml」起作用。然而,通過在LIB的源代碼一眼,我可以看到下面的策略(我不能完全肯定,但我認爲所有的一切就是這個樣子):
- 克隆節點到新的XML文檔
- 查詢的XPath
- 返回真實節點
這樣的對應節點,是有可能使IE9使DOM的名稱空間的XPath查詢,當它有可能在XML和DOM節點轉換爲XML ?
問候菲利普
編輯:
我去嘗試,最後我能成功,不知何故,該代碼是安靜的一個爛攤子,但它帶來的結果。所以我現在可以說:「答案是肯定的,這是可能的。」。它仍然需要一些測試,但總體做法是:
- 新建一個空的XML文檔
- 設置適當的命名空間屬性(上述)!通過新的XML文檔創建新元素的重要
- 步行遞歸通過上下文文檔的樹,克隆的所有元素,
- 從而:從上下文文檔的元素生成唯一的ID,並將其分配給克隆的元素,到上下文文檔的元素,如果它沒有。將插入包含「原始」和「克隆」元素的對象,並將其放在由ID所鍵入的散列表中。
- 用xpath查詢新文檔
- 檢索結果,獲取id並從地圖中獲取原始元素。
- 我決定從原本沒有的元素中刪除所有的id。
DONE ...
如果一個人intressed我可以張貼一些代碼...