2010-12-22 66 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 ...

除此之外,问题感到难以置信的主观和模糊的,所以如果你愿意编辑或完善它后进一步的问题,也许你可以得到一些更具体的帮助。