2012-10-09 101 views
0
<linkbase xsi:schemaLocation="http://www.w3.org/1998/linkbase http://www.xbrl.org/2003/schema.xml" xmlns="http://www.noprefix.org/2003/linkbase" xmlns:xlink="http://www.w3.org/2005/xlink" xmlns:xsi="http://www.w3.org/1999/XMLSchema"> 
    <roleRef roleURI="http://www.greenserve.com/role/Commitgencies" xlink:href="Commitmentsngencies" xlink:type="simple" /> 
    </linkbase> 

在這個XML中有一個xmlns屬性,沒有後跟一個:和前綴名稱。xmlns格式混淆

xmlns="http://www.noprefix.org/2003/linkbase"

但其他人有XMLNS後一個冒號和前綴。所以當我試圖解析這個XML以獲得具有「後代」功能的roleref標籤時,它不顯示任何東西。但是,如果我在該xmlns之後添加:和前綴,那麼它可以正確解析。爲什麼它的行爲像任何人都可以解釋的?謝謝。

回答

1

當你有一個沒有冒號和前綴的xmlns屬性時,這是整個文檔的默認命名空間......所以所有沒有前綴的元素都將在該默認命名空間中。然而,這與不具有名稱空間不同。請記住,名稱空間實際上是URI,而不是前綴......前綴只是引用此內容的捷徑。所以,如果你有一個XML文件是這樣的:

<xml xmlns="http://example.org" xmlns:ex="http://example2.org"> 
<element1/> 
<element2/> 
<ex:element3> 
</xml> 

沒有命名空間的前綴不能僅僅由元素名稱單獨解決,因爲他們仍然在命名空間http://example.org元素。

現在,至於如何解析它......這一切都取決於你的工具。如果它是XSLT,則可以在XSLT文件中給該名稱空間一個臨時前綴以解決這些元素。每種編程語言中的每個庫都可能有不同的方式來執行它(僅作爲許多示例中的一個,python中的lxml將解決像這樣的默認命名空間元素:{http://example.org} element1)。你必須引用你正在使用的任何解析來獲得如何處理默認命名空間中的元素的幫助。

+0

我解析這個文件的行動腳本3.任何想法如何解析它?謝謝回覆。 – Tahlil