回答
的x:
是在你的XML命名空間標識符。對於元素和屬性,XML子樹可以有一個「默認」名稱空間(由xmlns='...'
設置)。如果您需要其他名稱空間中的元素或屬性,則需要定義一個前綴,例如xmlns:x='...'
。您從該名稱空間使用的元素和屬性需要以x:
作爲前綴。一個常見的一個我是
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
,然後要求我爲use
元素做到以下幾點:
<use xlink:href='#foo'/>
在這種情況下,use
元素來自SVG,而href
屬性來自於XLink的。兩者都不同,但在某些地方兼容規格。
而這基本上是命名空間是:
- 組不同的XML使用成連貫的部分
- 讓他們在一個XML
- 可能被用來避免名稱衝突(如果有兩個命名空間並且都支持名爲
foo
一個元素,那麼你需要指定要兩個foo
S的這。
通過這種方式,名稱空間與許多編程語言中的工作方式沒有多大區別。您可以通過名稱空間查看您導入的內容,如上面SVG情況下的庫。編寫SVG的人注意到已經有了一個允許鏈接到任意XML元素(XLink)的規範,他們只是重新使用它。在其他情況下,例如WPF,存在名稱空間來分隔演示框架的聲明UI內容和與代碼接口所需的粘合屬性。例如。窗口有可能是這樣的:
<Window
x:Class="W"
Height='500'
Width='500'
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
時才需要Class
屬性編譯器知道相應的代碼隱藏類,它沒有窗戶上的任何明顯的差異。
另一個示例是XSLT,您可以在其中定義XML文檔的轉換。 XSLT指令和輸出模板都是XML。您通常使用XSLT的元素一個明確的命名空間:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
,這樣就可以發出生成的XML,像這樣:
<xsl:if test="Content/Chapter">
<xsl:variable name="text"><xsl:value-of select="$trans//item[@name='content'][lang($lang)]" /></xsl:variable>
<h2><xsl:value-of select="$text"/></h2>
<ol>
<xsl:apply-templates select="Content" mode="TableOfContents"/>
</ol>
</xsl:if>
如果我讓xsl:
命名空間默認命名空間,那麼XSLT處理器無法告訴我從實際的指令中生成HTML。如果您的代碼和數據使用相同的格式並且居住在相同的地方,那麼這是一個問題。我相信Lisp通過用單引號標記數據解決了這個問題。
至於名稱空間是一個URI,這可能只是一個W3C的事情。這些URI不需要任何東西。他們只是標識符。它們並不意味着被檢索。使用名稱空間的XML的程序必須知道它可以處理和適當行事的名稱空間。
「x:」是一個名爲x的名稱空間別名。在元素上方的某個地方會有一個指向某個url的xmlns:x屬性,這個url通常並不重要,它只是一個名字空間的標識符。
「x」只是該文件的本地名稱,只要foo:在各處都使用x:被使用,它也可以是xmlns:foo。
命名空間通常由xml處理器使用,以確保它們正在尋找正確的元素(例如對於xlst變換),而不是用戶在xml中定義的自定義元素。
您可以閱讀更多有關XML命名空間here
- 1. XML名稱空間,它們爲什麼需要前綴?
- 2. 爲什麼我需要用out或ref前綴參數?
- 3. 爲什麼我需要前綴「批:」在我的春天豆
- 4. 命名元素時,XAML中x:前綴的用途是什麼?
- 5. 爲什麼'tns'前綴在wsdl文件的類型元素中不需要?
- 6. 爲什麼當我們需要添加android:前綴風格?
- 7. 爲什麼我在這裏需要一個「bean:」前綴?
- 8. 爲什麼我需要XMLSchema中的前綴xsi:schemaLocation?
- 9. 我們什麼時候需要用「靜態」前綴代表?
- 10. 只需要在一個XML元素中添加XML名稱空間前綴
- 11. vtd-xml我需要做什麼去任何元素
- 12. 爲什麼android需要showAsAction =「always」以別名爲前綴?
- 13. 爲什麼需要數字後綴?
- 14. 我需要一個XML元素的XML元素
- 15. 在C#中,我爲MYClass命名空間時,爲什麼還需要前綴MYClass?
- 16. 爲什麼我的XML模式元素不需要一個數字?
- 17. 爲什麼Ionic在URL中需要「/ tab /」前綴?
- 18. 爲什麼Android文檔說意圖額外需要包前綴
- 19. 爲什麼TypeScript需要「this」。 「內部」模塊的前綴?
- 20. 在WCF app.config中,爲什麼基址需要前綴http://或net.tcp?
- 21. 爲什麼Spring Security的RoleVoter需要一個前綴?
- 22. 爲什麼我的xpath匹配不需要的元素?
- 23. 我們什麼時候需要<auth-constraint>元素爲空?
- 24. 我怎麼能得到JSF的前綴爲JSF HTML元素2.0
- 25. 爲什麼C中的前綴增量(++ x)比後綴增量(x ++)更快?
- 26. 我需要的,如果x ==什麼
- 27. 爲什麼http.Client {}以前綴?
- 28. 爲什麼我需要帶有-sources後綴的庫文件?
- 29. 爲什麼我會得到「元素h的前綴h:頭未綁定」錯誤?
- 30. 爲什麼我需要「&」?
如果提供了一個URL,但無法訪問(無網絡連接),會發生什麼情況? – 2011-05-19 10:32:20
@liortal:它們並不意味着被檢索。他們只是名字。它們看起來像URI,但在那個地方沒有東西(至少沒有規定)。 – Joey 2011-05-19 10:35:31