XML 的命名空间及其在OPCUA中的应用

        为了防止不同XML 使用的名称冲突,XML 规范中规定的命名空间,平时编写单一命名空间的XML 文档,没有过多地注意XML 命名空间的细节。当开发OPCUA 信息模型时,被命名空间搞得云里雾里。为此,做了一个笔记。

URI(Uniform Resource Identifiers)统一资源标志符

    统一资源标志符(英语:Uniform Resource Identifier,缩写:URI)在电脑术语中是用于标志某一互联网资源名称的字符串。

我们知道,通常将网址称为URL,比如

string url = "https://www.csdn.com“

那么URL 与URI 有什么区别呢?它们是如此定义的。

  • URI(Uniform Resource Identifier,统一资源标识符)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。
  • URL(Uniform Resource Locator,统一资源定位符),最常见的形式是 URI,经常指定为非正式的网址。

URI 本质上是一种标识符的命名方式,从这种命名中可以直观地了解相关信息。它的语法为

 例子:

https://opcua.rocks/UA/animal/

     值得注意的是这是一个URI ,并不意味着可以在https://opcua.rocks/UA/animal/网站上可以找到该资源。

    同时,URL 可以是URI 的子集,这些 URI 通过其网络位置标识资源。它们还指定了检索资源的机制。例如,网址:

http://example.org/wiki/Main_Page

      指资源 /wiki/Main_Page。资源采用 HTML 格式,可通过超文本传输协议 (http:) 从名为 example.org 的网络主机获取。

无论无何,你可以将URI 看作一个携带某些信息的标识符就好了。在XML 文本中,有各种NameSpaceURI ,它们并不是网址。

XML 命名空间(xmlns)

 xmlns就是xml nameSpace的缩写,即xml的命名空间。在XML 文件中有许多xmlns 的属性,用来标识命名空间的信息,例如




为什么需要命名空间

多个文档描述资源时,可能出现名称的冲突,例如下面两个xml 文档

第一个

Apples Bananas

第二个

African Coffee Table80120

这两个文档中同样使用

标签,但是一个标识表格,一个标识咖啡桌。

为了区别两者,我们就需要两个命名空间

表格:URI:http://www.abc.com/TR/html4/

桌子:URI:http://www.xyz.com/furniture

  
  
    
    Aries  
    Bingo  
    
  
  
  Computer table  
  80  
  120  
  
   

xmlns 的格式

xmlns:=<"uri">

其中name 是命名空间的名称前缀,uri 是该命名空间的URI,例如:

xmlns:ua="http://opcfoundation.org/UA/"

在文档中如果引用该命名空间内的标签,加上ua的前缀。

例子:



   Tanmay Patil
   TutorialsPoint
   (011) 123-4567

这里命名空间的前缀是cout,命名空间的URI 是www.tutorialspoint.com/profile。这题为在属性和名称之前冠以cout,表示它属于www.tutorialspoint.com/profile命名空间。

缺省的命名空间

缺省的命名空间可以不使用前缀。这里缺省的命名空间是 

http://www.javapoint.com/java-tutorial 

  
    
    Java-tutorial  
    Sonoo Jaiswal  
    
  ...  
   

OPCUA 的命名空间

       每个信息模型都必须有自己唯一的标识 URI。对于基本的 OPC UA 规范,此 URI 为 :http://opcfoundation.org/UA/

其他配套规范或自定义规范定义其自己的命名空间 URI,例如,用于 DI 规范为        :http://opcfoundation.org/UA/DI/

          在 OPC UA 服务器内部,命名空间由命名空间索引标识。索引 0 始终是基本节点集,索引 1 用于不属于特定节点集的任何节点实例。
        根据用例,服务器可以将其他节点集加载到其地址空间中。这些节点集通常从索引 2 开始。

命名空间的嵌套

    OPC UA 信息模型是基于模块设计的,大的模块通过小模型构成。因此,信息模型的xml 文件的命名空间也是分层定义的。

      最底层是htttp://www.opcfoundation.org/UA。在其上可以根据模块的分层架构逐步添加。例如配套规范PLCopen 引用了配套规范DI 的模型。

XML 的命名空间及其在OPCUA中的应用_第1张图片

     在OPCUA Server 中导入NodeSet2时将会根据导入的顺序,将命名空间的URI 存放在NameSpaceArray 中。而命名空间在命名空间数组中的索引就是OPACUA NodeId 的ns。NodeSet导入的顺序是由讲究的,不能搞乱。另外,www.opcfoundation.org/UA是服务器内置的,不需要导入。

 

你可能感兴趣的:(xml)