假设我有一个HTML标记<ui:button>
,它引用网页上的一个按钮,最终会在PHP中变成new UIButton()
。
使用DOMDocument库时,元素的$tagName
属性仅为button
。为什么会这样,我如何在其中保留ui:
?
答案 0 :(得分: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
的方法。