XML中命名空间和前缀之间有什么区别?

时间:2018-06-18 14:58:59

标签: xml xml-namespaces

我被迫与外部XML斗争,我不明白XML文件中命名空间和前缀之间的区别。我的意思是,我使用标签的名称空间和名称来获取Linq库在此文件中的值。但我不知道它们之间的区别。

-<a:RoutePointsMeteoData z:Id="31" z:Size="10">
-<b:anyType z:Id="32" i:type="a:WaypointFLMeteoData">
    <a:DevISA>0</a:DevISA>
    <a:DisplayTemperatureType>IsaDev</a:DisplayTemperatureType>
    <a:RelatedRoutePointName>1739276a822f8a919b</a:RelatedRoutePointName>
    <a:TemperatureSource>NotDefined</a:TemperatureSource>
    <a:WindDirection>0</a:WindDirection>
    <a:WindSource>NotDefined</a:WindSource>
    <a:WindSpeed>0</a:WindSpeed>

有人可以告诉我在标签中使用前缀的主要目的吗?例如:

<a:DevISA>0</a:DevISA>

这可能是这个的一个小问题:?这是检测标签的一种显着特征吗?

1 个答案:

答案 0 :(得分:2)

XML名称空间前缀是完整XML名称空间的缩写。

因为名称空间用于区分不合格的XML名称,所以名称空间本身足够长,以便在添加到非限定名称时创建词法上不同的新名称。与URI所有权一致的组织所有权是一个很好的属性,也会增加名称空间长度。

为了避免使用非限定XML名称的完整XML名称空间的笨重连接,引入了缩写机制,

xmlns:a="http://example.com/some/full/namespace/name"

允许RoutePointsMeteoData在此命名空间中写为a:RoutePointsMeteoData,而不是{http://example.com/some/full/namespace/name}RoutePointsMeteoData。 (此备用表示法,称为Clark Notation,未标准化 - 它与XML不直接兼容,但通常用于元描述,JAXP API规范中的参数名称等)

补充说明:

  • XML名称空间前缀本身是任意的;它只能通过他们的 绑定到他们派生的完整XML命名空间名称 意义。
  • 声明XML名称空间前缀 必须 ,以便将XML文档视为namespace-well-formed