使用XML、模式、DOM、PHP等

使用XML、模式、DOM、PHP等,php,xml,dom,xhtml,schema,Php,Xml,Dom,Xhtml,Schema,我似乎是在转圈阅读,或者可能只是没有掌握这里的一些概念。我正在重新编写一组PHP模板类,以前使用了一些奇特的正则表达式来组合和复制文档和文档区域,生成一个输出页面。我先前方法的一个示例(为了完整性): {{var:myHeading} {{var:myDatetime格式:datetime(Y-m-dh:i:s)} {{var:myText格式:maxLength(300)} 无论如何,它工作得很好,但我真的想把它提升到下一个级别,并认为这在逻辑上是扩展标记本身,变成如下: <div

我似乎是在转圈阅读,或者可能只是没有掌握这里的一些概念。我正在重新编写一组PHP模板类,以前使用了一些奇特的正则表达式来组合和复制文档和文档区域,生成一个输出页面。我先前方法的一个示例(为了完整性):


{{var:myHeading}
{{var:myDatetime格式:datetime(Y-m-dh:i:s)}
{{var:myText格式:maxLength(300)}

无论如何,它工作得很好,但我真的想把它提升到下一个级别,并认为这在逻辑上是扩展标记本身,变成如下:

<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规范,甚至是W3关于各种相关技术的教程,比如用于编写模板规范的XML模式。显然,我希望在所有使用的名称空间中保持一切格式良好且有效。这将主要与XHTML标记混合使用

无论如何,有谁能告诉我一些关于理解XML名称空间混合名称空间的限制和最佳实践,以及最重要的是,我想,使用PHP/DOM/XML的好读物吗。我的方法是否有任何关键缺陷,任何人都可以看到?无论是通过DOMDocument(和兄弟)还是SimpleXML,PHP似乎都没有一个特别强大的用于处理命名空间标记文档的实现

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



编辑:如果有人好奇,则在输出呈现时不应出现zuq名称空间中的元素,这些元素已被解析或删除。然而,除了保持文档有效的良好实践之外,我还打算利用模板中的标记,这样管理员就可以通过CMS WYSIWYG编辑器快速编辑页面。

名称空间确实是一个非常简单的概念,不知何故会被夸大。有关XML名称空间的良好教程,请参见

对于处理来自PHP的命名空间XML,该接口工作得非常好。例如,你可以,你可以


除此之外,这个问题令人难以置信地主观和模糊,因此,如果你想编辑它或发布进一步的问题来细化它,也许你可以得到一些更具体的帮助。

你唯一的错误,在这里,是遵循了W3Schools教程。这个网站与W3C无关,并且产生了非常糟糕的信息;我只是把它作为许多XML模式初学者的参考之一,因为这是我相当不熟悉的东西,但是我将把我的阅读重点放在其他地方。我在这里帮不了什么忙,因为我不知道任何关于XML名称空间和模式的好教程,但我确实感觉到,通过尝试将外来名称空间与xhtml混合,你相当想从最深处跳进去。xml的xhtml应用程序所施加的附加限制,再加上web上大量关于xhtml的错误信息(是的,W3C学校在这里尤其有罪),将使您的学习曲线比必要的曲线陡峭得多。我会先找到一个好的XML编辑器(如XMLSpy,如果你能负担得起的话),然后从xhtml开始尝试。
<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>