AQName
是命名空间限定的名称。这是包含两个的 XML QNames
:
<ac:aircraft xmlns:ac="http://www.aircraft.org">
<ac:altitude>12,000 feet</ac:altitude>
</ac:aircraft>
这两个缩写QNames
是:
ac:aircraft
ac:altitude
扩展QNames
的有:
{http://www.aircraft.org}aircraft
{http://www.aircraft.org}altitude
XML 解析器知道将短名称(缩写名称)转换为长名称(扩展名称)的规则。
名称的缩写形式是静态的——在解析时——可解析为长名称。
QNames
也可用于数据。在以下 XML 中,<log>
元素的值为 a QName
:
<network-traffic xmlns:network="http://www.network-traffic.org">
<log>network:client-error</log>
</network-traffic>
XML 解析器仅对标记进行操作,而不对数据进行操作。因此,XML 解析器不会将短名称转换为长名称。从短名称到长名称的映射必须由更高级别的应用程序完成,例如 XSLT 处理器或 XML Schema 验证器。换句话说,短名称到长名称的解析必须是动态的,而不是静态的。
问题:为什么将短名称静态解析为长名称更好?将短名称动态解析为长名称的缺点是什么?您能否提供一个具体示例,说明由于必须将短名称动态解析为长名称而导致的问题?QName 的静态分析有哪些实际好处?