日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
刪除多余的屬性xmlns=""

很早前就遇到這個空值的屬性,它既出現(xiàn)在 html 文檔中,也出現(xiàn)在xml中,一直都回避,放之任之,反正也不影響文檔的正確性。隱隱約約過了大半年,終于有一天下定決心,一定要把這個問題徹徹底底搞個透,認真一分析,卻發(fā)現(xiàn)這是一個 xml 命名空間基礎(chǔ)知識,不是一個需要捋起兩管衣袖再加深呼吸兩口才能解決的問題。

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、網(wǎng)站制作與策劃設(shè)計,改則網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:改則等地區(qū)。改則做網(wǎng)站價格咨詢:13518219792

首先來重現(xiàn)此屬性,現(xiàn)有的XML數(shù)據(jù)(people.xml):

 
 
 
  1.  
  2. 張三 
  3.  

(注意上面的xmlns后面帶有一個反斜杠,是為了防止語法高亮組件SyntaxHighlighter異常而加的,請透明視之,以下同)程序給root增加一個age節(jié)點用于描述“張三”的年齡(VBScript):

 
 
 
  1. Dim dom  
  2. Set dom = CreateObject("MSXML2.DOMDocument")  
  3. dom.async = False 
  4. dom.load "people.xml"  
  5. Dim age  
  6. Set age = dom.createElement("age")  
  7. age.text = 25 
  8. dom.documentElement.appendChild age  
  9. dom.save "people.xml" 

修改后的 people.xml 如下:

 
 
 
  1.  
  2. 張三 
  3. 25 
  4.  

文檔的root節(jié)點定義了一個默認的命名空間 http://www.cdxwcx.com,即root元素的所有子孫元素都在此空間之下(除非它們另行定義有空間)。程序創(chuàng)建 age 節(jié)點時沒有指明此節(jié)點具有哪個空間,即 age 的命名空間為空值,空值不等于 http://www.cdxwcx.com,相當于 age 有自己的私有空間,它與父輩的空間不同,理所當然地會出現(xiàn) xmlns 屬性。

要去除此屬性有兩個方法:

1.去除 age 祖先節(jié)點默認的命名空間

2.創(chuàng)建 age 節(jié)點時指明其空間為祖先定下的默認空間

第一種方案一般是不會被采納的,為了兒孫輩不太可能廢掉祖先定下的規(guī)矩。第二種方案最簡單:使用 createNode 方法替換 createElement 方法。

 
 
 
  1. .Set age = dom.createNode(1,"age","http://www.cdxwcx.com") 

效果立現(xiàn)。

除了程序會遇到命名空間繼承的問題,xsl 模板中創(chuàng)建的元素也有此問題。比如創(chuàng)建元素:

 
 
 
  1.  
  2. http://www.cdxwcx.com 
  3.  
  4.  

該 XSL 模板是由 Dreamweaver 創(chuàng)建,在經(jīng)歷 XSL 處理器轉(zhuǎn)換后,輸出的 a 元素同樣也包含一個 xmlns="" 屬性。根本原因還是創(chuàng)建的元素與其祖先的命名空間不一致。用 Dreamweaver 創(chuàng)建一個空的 XSLT(整頁) 頁面,其根節(jié)點

只聲明了名為 xsl 的空間,它用于實現(xiàn)所有的xslt元素: , 因此用 xsl 的方法創(chuàng)建出來的元素,它們的空間自然就在根節(jié)點聲明空間之下,該死的是根節(jié)點并沒有定義有默認空間,所以 xsl 方法創(chuàng)建的元素最終都將有一個 xmlns="" 屬性。

這里需要注意到 XSLT 模板里面的 html 元素為了適合 w3c 所推薦的 xhtml 標準,它聲明了一個默認空間

這個空間是對最終的 html 代碼有效的,它對 xslt 沒有任何作用。

解決的方法同樣有兩種:

1.給 xslt 頁面的根節(jié)點 xsl:stylesheet 聲明默認空間,令它與 html 元素的默認空間值一致

2.使用 xsl 方法創(chuàng)建元素時指明其空間,只要空間與默認空間一致,就不會出現(xiàn) xmlns=""

這里推薦采用第一種方案,因為只需在 xsl 文檔的根節(jié)點聲明了與 html 元素一致的默認命名空間,用 xsl 方法創(chuàng)建的元素就與祖先的空間一致,就不會出現(xiàn) xmlns="",一勞永逸。

方法二就需要每次都使用

 
 
 
  1.  
  2. .... 
  3.  

明顯第一種方案勝出。

繼續(xù)深入,怎樣讓 Dreamweaver 創(chuàng)建的 XSLT(整頁) 模板根元素 xsl:stylesheet 自動帶有默認命名空間xmlns="http://www.w3.org/1999/xhtml"。

找到文件:
C:\Program Files\Adobe\Adobe Dreamweaver CS3\configuration\DocumentTypes\MMDocumentTypeDeclarations.xml
用記事本打開,在文件底部,可以看到 Dreamweaver 創(chuàng)建 xslt 頁面時所使用的模板,只需把默認的命名空間加在此處就 OK 了。


網(wǎng)站名稱:刪除多余的屬性xmlns=""
文章來源:http://www.5511xx.com/article/cccgdeh.html