【问题标题】:Working with XML, Schemas, DOM, PHP, et al使用 XML、Schemas、DOM、PHP 等
【发布时间】:2011-06-16 00:52:33
【问题描述】:

我似乎在循环阅读,或者可能只是没有掌握这里的一些概念。我正在修改一组 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 p>

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


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

【问题讨论】:

  • 你唯一的错,在这里,是遵循 W3Schools 教程。这个网站与 W3C 无关,并且产生了非常糟糕的信息
  • 谢谢ClemDesm;我只是将它用作 XML Schema 的众多初学者参考之一,因为它是我相当不熟悉的东西,但是我将把我的阅读重点放在其他地方。
  • 我在这里帮不上什么忙,因为我不知道有关 XML 命名空间和模式的任何好的教程,但我确实感觉通过尝试将外部命名空间与 xhtml 混合,你'而是试图跳入深渊。 xml 的 xhtml 应用程序施加的额外限制,再加上网络上关于 xhtml 的大量错误信息(是的,W3Schools 特别是在这里犯了罪)将使你的学习曲线比必要的。我会得到一个好的 XML 编辑器(例如 XMLSpy,如果你能负担得起的话)并首先尝试远离 xhtml。

标签: php xml dom xhtml schema


【解决方案1】:

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

对于从 PHP 处理命名空间的 XML,DOM 接口工作得很好。比如你可以getElementsByTagNameNS,你可以lookupNamespaceURIlook up a given URI's prefix...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多