【问题标题】:DOMDocument library removes colon from tag nameDOMDocument 库从标签名称中删除冒号
【发布时间】:2017-03-07 16:45:34
【问题描述】:

假设我有一个 HTML 标签 <ui:button>,它指的是网页上的一个按钮,最终在 PHP 中会变成 new UIButton()

当使用 DOMDocument 库时,元素的$tagName 属性就是button。为什么会这样?我怎样才能在其中保留ui:

【问题讨论】:

  • button 是标签,ui 是命名空间前缀。

标签: php html xml domdocument


【解决方案1】:

ui 是命名空间别名/前缀。寻找像xmlns:ui="..." 这样的属性。该属性的值是一个 URN,一个定义标签所属格式的唯一字符串。 URL 通常用于此目的,因为它可以避免冲突(没有人会使用您的域作为命名空间),并且您可以将有关命名空间的文档放在 URL 上。命名空间是一种 XML 功能,允许您定义和混合格式,而元素节点名称之间不会发生冲突。

假设属性看起来像xmlns:ui="http://example.tld/ns/ui"。在这种情况下,您可以将标签名称读取为{http://example.tld/ns/ui}button。以这种方式编写会增加大量开销并使 XML 难以阅读 - 因此会出现前缀/别名。

以下3个XML都可以读成{http://example.tld/ns/ui}button

  • <ui:button xmlns:ui="http://example.tld/ns/ui"/>
  • <new-ui:button xmlns:new-ui="http://example.tld/ns/ui"/>
  • <button xmlns="http://example.tld/ns/ui"/>

正如您所见,别名可以更改并且是可选的。如果您检查DOMNode 的属性,您将看到属性$namespaceURI$locaName。使用它们而不是 $nodeName 构建您的应用程序。以下是具有命名空间感知的后缀 NS 的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多