使用XML,Schemas,DOM,PHP等

时间:2010-12-22 08:45:34

标签: php xml dom xhtml schema

我似乎是在圈子里读书,或者我可能根本就没有理解这里的一些概念。我正在重新编写一组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 Schema。显然,我希望在所有使用的命名空间中保持良好的形式和有效性。主要是这将与XHTML标记混合使用。

无论如何,任何人都可以指出我对理解 XML命名空间混合命名空间的限制和最佳做法有一些好的阅读,最重要的是我认为,使用 PHP / DOM / XML 。我的方法中是否有任何关键缺陷,任何人都可以看到?似乎PHP没有一个特别强大的实现来处理命名空间标记文档,无论是通过 DOMDocument (和兄弟)还是 SimpleXML

欢迎任何建议,阅读材料建议或批评!


编辑:如果有人好奇,那么在输出渲染时, zuq 命名空间中的元素不应出现,已被解析并以其他方式删除。但是,除了保持文档有效的良好做法之外,我打算利用模板中的标记,以便通过CMS WYSIWYG编辑器,管理员可以快速编辑页面。

1 个答案:

答案 0 :(得分:2)

命名空间实际上是一个非常简单的概念,不知何故被夸大了。有关XML命名空间的详细教程,请参阅http://www.xml.com/pub/a/1999/01/namespaces.html

至于从PHP处理命名空间XML,DOM接口工作得很好。例如,您可以getElementsByTagNameNSlookupNamespaceURIlook up a given URI's prefix ...

除此之外,这个问题感觉非常主观和模糊,所以如果你想编辑它或发布更多改进它的问题,也许你可以得到一些更具体的帮助。