2010-12-22 70 views
4

我似乎在用圓圈閱讀,或者根本沒有理解這裏的一些概念。我正在修改一組PHP模板類,它們以前使用一些奇特的正則表達式來組合和複製文檔的文檔和區域,從而生成輸出頁面。我以前的方法的例子(爲完整起見):使用XML,Schema,DOM,PHP等

<div id="myId"> 
    <!-- {{ region:myRegion }} --> 
     <div class="myClass"> 
      <h1>{{ var:myHeading }}</h1> 
      <h2>{{ var:myDatetime format:datetime(Y-m-d H:i:s) }}</h2> 
      <p>{{ var:myText format:maxLength(300) }}</p> 
     </div> 
    <!-- {{ region:myRegion }} --> 
</div> 

不管怎麼說,它工作得很好,但我真的想將它移動到一個新的水平,並推斷這將邏輯上延長標記本身,成爲類似:

<div id="myId"> 
    <zuq:region name="myRegion"> 
     <div class="myClass"> 
      <h1><zuq:var name="myHeading" /></h1> 
      <h2><zuq:var name="myDatetime" format="datetime" param="Y-m-d H:i:s" /></h2> 
      <p><zuq:var name="myText" format="maxLength" param="300" /></p> 
     </div> 
    </zuq:region> 
</div> 

我一直在閱讀W3規範,甚至W3Schools的各種相關技術教程,如XML架構編寫模板規範。很明顯,我想保留所有使用的命名空間中正確和有效的一切。主要是這將與XHTML標記混合使用。

不管怎麼說,任何人都可以指向我往的理解XML命名空間,限制和混合命名空間最佳實踐一些良好的閱讀,最重要的,我想,有PHP/DOM/XML工作。我的方法在這裏有任何人都可以看到的重大缺陷嗎?看起來PHP並沒有一個特別強大的實現來處理命名空間標記文檔,無論它是通過DOMDocument(和弟兄)還是SimpleXML

歡迎任何建議,閱讀材料建議或批評!


編輯:在任何情況下是好奇,從zuq命名空間的元素不應該出現在輸出渲染,的時間已經被解析和以其他方式去除。但是,除了保持文檔有效的良好做法之外,我打算利用模板中存在的標記,以便通過CMS所見即所得編輯器管理員可以快速編輯頁面。

+2

您唯一的錯就是遵循W3Schools教程。這個網站與W3C無關,併產生非常糟糕的_informations_。 – Shikiryu 2010-12-22 09:23:18

回答

2

命名空間實際上是一個非常簡單的概念,它以某種方式被誇大了。有關XML命名空間的很好教程,請參閱http://www.xml.com/pub/a/1999/01/namespaces.html

至於處理來自PHP的名稱空間XML,DOM接口工作得很好。例如,你可以getElementsByTagNameNS,你可以lookupNamespaceURIlook up a given URI's prefix ...

除此之外,問題感到難以置信的主觀和模糊的,所以如果你願意編輯或完善它後進一步的問題,也許你可以得到一些更具體的幫助。