OPC UA的XML Schema是,命名空间为http://opcfoundation.org/UA/2011/03/UANodeSet.xsd,专用于地址空间节点导入导出,非通用XSD;必须严格声明命名空间,uax前缀引用基础类型,NodeId需全局唯一,NodeSet描述节点实例而非类型定义。

OPC UA 的 XML Schema 是 ,其命名空间为 http://opcfoundation.org/UA/2011/03/UANodeSet.xsd。这是 OPC Foundation 官方定义的、用于序列化地址空间结构的标准 XML 格式,不是通用 XSD 模式文件,而是专用于导入/导出节点定义(对象、变量、方法、引用等)的交换格式。
它不用于校验任意 XML,也不能直接用作 Python 或 C 的类型定义;它的作用是让不同 UA 工具(如 UaModeler、Prosys OPC UA Simulation Server、FreeOpcUa 的 import_xml())能互相理解地址空间拓扑。
XML Schema 命名空间与根元素必须严格匹配
如果你写一个 XML 文件想被 UA 工具识别为有效 NodeSet, 标签必须声明正确的命名空间,否则导入会失败或静默忽略节点:
- 缺
xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd"→ 大部分工具报“not a valid NodeSet”或直接跳过解析 -
uax:前缀用于引用基础数据类型(如uax:Int32,uax:String),必须声明且路径不能错 - 版本号嵌在 URL 里(如
2011/03),不是随便改的;新版 UA 规范仍沿用此命名空间(兼容性设计)
NodeSet XML 不是配置文件,而是节点“快照”
它描述的是节点实例(instance),不是模板或类型定义(TypeDefinition)。例如:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
- 你导出一个
UAVariable节点,它包含→ 导入后该变量初始值就是 4242 - 但如果你只想要“定义一个整型变量类型”,得用
UADataType+UAVariableType,而非常见的UAVariable - 所有
NodeId必须全局唯一且符合 UA 编码规则(如i=85,s=MyDevice.Temperature,g=123e4567-e89b-12d3-a456-426614174000);重复或非法格式会导致导入中断
Python FreeOpcUa 中 import_xml() 的典型坑
用 server.import_xml("mynodes.xml") 加载时,常见失败原因不是语法错,而是语义错:
-
ParentNodeId指向一个不存在的节点(比如写成i=84,但 UA 标准对象文件没加载,也没手动创建)→ 报BadNotFound错误 -
ReferenceType写错,例如该用HasComponent却写了HasProperty→ 节点创建成功但关系丢失,浏览时看不到子节点 - 没提前调用
server.load_type_definitions()就导入含自定义类型(UADataType)的 XML → 类型无法解析,变量创建失败 - XML 中用了
uax:DateTime但值格式不是 ISO 8601(如2025-12-25T20:30:00Z)→ 解析失败,静默跳过该变量
别指望用浏览器打开 .xsd 查看结构
那个 URL http://opcfoundation.org/UA/2011/03/UANodeSet.xsd 是一个逻辑命名空间标识符,并非可公开访问的 HTTP 地址。你无法 curl 或浏览器打开它获取 XSD 文件——它只是告诉解析器:“按 OPC UA 第 5 部分(Information Model)第 7 节约定来解释这个 XML”。真正的结构定义藏在 OPC UA 规范 Part 5: Information Model 的附录中。
实际开发中,最靠谱的参考方式是:用 UaModeler 导出一个简单节点树,再对比其生成的 XML,而不是从零手写 Schema —— 手写极易漏掉必需字段(如 NodeClass、ModellingRule)或引用方向(IsForward="true" vs false)。









