TR-106 CWMP端点和USP代理的数据模型模板
执行摘要
TR-106规定了所有CWMP[7]端点和USP代理[11]应遵循的数据模型指南。这些指南包括数据层次结构要求、数据模型的版本控制以及定义概要文件的要求。
此外,TR-106定义了尽可能体现这些准则的XML模式,以及其用于定义所有CWMP和USP数据模型。这使得数据模型定义严格,并有助于减少不同实现将解释数据模型的危险以不同的方式定义。
TR-106还定义了一个XML模式,允许设备描述其支持的CWMP数据模型。该描述既具体又详细,使控制器能够准确了解设备支持,包括任何特定于供应商的对象和参数。此架构的使用增强了互操作性,并大大简化了新设备与控制器的集成。USP使用不同的机制(GetSupportedDM消息)。该机制是TR-369[11]中规定。
1 介绍
TR-069[7]定义了可应用于任何CWMP端点的CPE WAN管理协议(CWMP)方法的通用要求。它旨在支持各种不同的功能来管理CPE集合,包括以下主要功能:
- 自动配置和动态服务调配
- 软件/固件映像管理
- 状态和性能监控
- 诊断
CWMP
远程管理家庭网络的能力有许多好处,包括降低与宽带服务的激活和支持相关的成本,缩短新产品和服务的上市时间,以及改善用户体验。
图1将TR-069置于端到端管理架构中:
ACS是驻留在网络中的服务器,并管理用户房屋中的设备。它使用TR-069中定义的方法或RPC来获取和设置设备的状态、启动诊断测试、下载和上载文件以及管理事件。这种状态的某些部分在受管设备中是常见的,有些仅与某些设备类型或服务相关。
USP
用户服务平台支持USP控制器和USP代理网络,允许应用程序操作服务元素(即对象)。它代表了CWMP在以下用例中的演变:
- 基于部署经验的TR-069改进
- 给定端点的多租户管理(即多个控制器的操作)
- 应用于其他市场空间,包括消费电子产品和物联网
代理直接或通过代理向一个或多个控制器公开服务元素。应用程序可以使用控制器来管理提供商控制的系统,如CWMP ACS,或者充当云、网关或通过智能手机访问的用户门户。代理和控制器还可以协同使用,以创建智能应用程序的对等网络,例如自动智能家居。
图2:USP体系结构概述
USP是以模块化方式设计的,可以利用CWMP数据模型和数据模型模式,以代表CWMP向消费电子、虚拟服务和物联网世界的演变。因此,本文描述了如何在CWMP和USP的上下文中使用数据模型模式。
规范结构
图3显示了CWMP[7]和USP[11]系列标准(如当前定义)的总体规范结构。请注意,随着新文件的发布,这将逐渐过时。
TR-069[7]定义了可应用于任何CWMP端点的CWMP方法的一般要求。TR-369[11]对USP药物也同样如此。TR-106(本文档)规定了任何CWMP端点或USP代理(统称为代理)支持的基线对象结构。它指定了如何构造和定义数据模型,数据模型是对象和参数的集合,通用方法根据这些对象和参数来配置、诊断和监视特定设备和服务的状态。实际数据模型在其自己的规范中定义。
对于特定类型的设备,预计TR-181i2[10]等文件中定义的基线将增加特定于设备类型的其他对象和参数。任何代理中使用的数据模型必须遵循本文件中描述的指南。这些指南包括以下方面:
- 数据层次结构的结构要求
- 数据模型版本控制要求
- 定义配置文件的要求
此外,本文档还定义了两个XML模式:
- XML模式尽可能体现了这些准则,并用于定义所有CWMP和USP数据模型。这使得数据模型定义严格,并有助于减少不同实现将以不同方式解释数据模型定义的危险。
- XML模式,允许设备描述其支持的CWMP数据模型。这是一个XML模式,允许设备描述其支持的CWMP数据模型。描述既具体又详细,允许ACS准确了解CPE支持的内容,包括任何供应商特定的对象和参数。使用此模式可增强互操作性,并显着简化新设备与ACS的集成.
请注意,USP出于相同目的使用不同的机制(GetSupportedDM消息)。它在TR-369中指定
2 架构
除非另有说明,否则下文所述的所有要素均适用于CWMP和USP。
2.1 数据层次结构
代理的数据模型将遵循一组通用的结构要求。详细的结构取决于代理的性质。
代理的数据模型将始终具有单个根对象,称为“设备”。
Root对象包含三种类型的子元素:TR-181i2[10]中定义的对象,TR-181i2中定义的组件或TR-143[9]等其他规范,以及包含所有与特定服务相关的服务对象的单个“服务”对象。
单个代理可能包含多个服务对象。例如,同时用作VOP端点和游戏设备的设备可能包括VOP特定和游戏特定的服务对象。
单个代理也可能包含多个相同类型服务对象的实例。何时合适的一个例子是为每个设备的附加磁盘提供TR-140[8]存储服务实例的代理。
数据层次结构要求
CWMP或USP数据模型必须符合以下结构要求:
- 根数据模型定义必须恰好包含一个称为“设备”的根对象。
- 根对象定义必须仅包含一个“服务”对象。
- 根对象定义必须仅包含一个“服务”。对象。服务数据模型定义必须定义一个从“Device.Services”对象正下方开始的对象层次结构。
- 对于定义的每个多实例对象,数据模型还必须定义相应的参数,指示多实例对象的实例数。此参数的名称必须是与“NumberOfEntries”连接的对象的名称。此参数必须出现在与其相关的多实例对象的同一对象中。
形式上,数据层次结构的顶层定义如下:
Element = “Device”
| “Device.” TR-181DeviceObject
| “Device.Services.” ServiceObject “NumberOfEntries”
| “Device.Services.” ServiceObject “.{i}”
TR-181DeviceObject = // As defined in TR-181i2, e.g. “UserInterface” or
“ManagementServer”
ServiceObject = // As defined in other specs, e.g. TR-140
支持的数据模型和实例化的数据模型:
代理的支持数据模型与其实例化数据模型之间存在区别
- 支持的数据模型是代理中具有代码支持的那些对象和/或参数。
- 实例化的数据模型是当前存在的那些对象实例和/或参数。
TR-181i2[10]定义了一个支持的数据模型对象,该对象允许代理向控制器指示其支持的数据模型,这有助于控制器管理该设备。
SupportedDataModel对象具有以下属性:
它包含URL列表,每个URL都允许控制器确定部分支持数据模型的详细信息。
当支持的数据模型更改时,例如由于软件被加载或卸载,条目被添加到或从该URL列表中删除。
此对象不与USP一起使用。TR-369[11]定义了GetSupportedDM消息以提供此信息。
2.2 对象版本控制
为了允许服务对象或根对象的定义随时间变化,服务对象或根对象的定义必须具有明确指定的版本。服务对象和根对象的版本编号被定义为使用主/次版本编号约定。对象版本定义为一对整数,其中一个整数表示主要版本,第二个整数表示次要版本。版本必须用一个点(Major.Minor)分隔的两个整数书写
给定对象的第一个版本应定义为版本“1.0”。
对于对象的每个后续版本,如果后续版本与先前版本兼容,则主要版本应保持不变,次要版本应增加一个。例如,“2.17”之后的下一个兼容版本将是“2.18”.第2.2.1节介绍了被认为与早期版本兼容的版本。对于该对象的每个后续版本,如果后续版本与先前版本不兼容,则主要版本必须递增一个,次要版本可以重置回零。例如,“2.17”之后的下一个不兼容版本可能是“3.0”。
兼容版本的要求
对于要视为与另一个版本兼容的对象的一个版本,后续版本必须是早期版本的严格超集。使用主/次版本控制,此要求仅适用于共享相同主版本的次要版本之间.
更具体地说,对于所有与之兼容的早期版本,这需要以下版本:
- 后面的版本可能会添加以前在任何早期版本中都没有的对象和参数,但不能删除早期版本中已经定义的对象或参数。
- 后一版本不得修改早期版本中已经定义的任何参数或对象的定义(除非原始定义明显错误,并且必须修改为勘误表或通过更正过程澄清)
- 后来的版本不得要求控制器明确操作自最早的兼容版本以来添加的任何对象或参数,以确保设备的正确操作(除了那些与以后版本中添加的功能特别相关的功能)。也就是说,后面的版本将容纳一个对后续版本中添加的元素一无所知的控制器。
上述兼容性定义的目标是确保控制器和代理之间的双向兼容性。具体来说:
- 如果控制器仅支持对象的早期版本与代理支持的版本相比,则控制器可以成功地在代理中管理该对象,就好像它是早期版本一样。
- 如果代理只支持对象的早期版本,而不是控制器支持的版本,则控制器可以成功地在代理中管理该对象,就好像它是后期版本一样(不支持仅在后期版本中定义的新组件)。
Version Notation(版本符号)
对于对象,定义以下符号以标识特定版本:
符号 | 描述 | 例子 |
ObjectName:Major.Minor | 指的是对象的特定版本 | Device:2.0 |
ObjectName:Major | 指的是具有指定主要版本的对象的任何次要版本 | Device:2 |
ObjectName | 指的是对象的任何版本 | Device |
请注意,此处定义的版本符号仅用于文档目的。数据模型中对象和参数的实际名称不得包含版本号。
注意:最初,配置文件被视为限制控制器需要在其可能管理的各种设备中适应的可变性的手段。现在提供此功能:
- 对于CWMP,由TR-181i2[10]支持的数据模型对象(参见第2.1.2节)和关联的设备类型XML文档(DT实例)。
- 对于USP,通过TR-369[11]获得支持的DM消息。
配置文件是与给定对象关联的需求的命名集合。代理可以坚持零或更多的配置文件。遵守配置文件意味着代理支持该配置文件定义的所有要求。配置文件的使用为服务提供商提供了指定数据模型支持要求的速记方法。
以下部分定义了定义与数据模型关联的配置文件时要使用的约定。
配置文件的范围
给定的配置文件仅在具有特定主版本的特定服务对象或根对象的上下文中定义。对于每个配置文件定义,必须明确标识要应用配置文件的特定对象名称和主要版本
在为相同对象和主要版本定义的配置文件中,配置文件的名称必须是唯一的,但是可以重用名称来为对象名称和主要版本的不同组合定义不同的配置文件。例如,如果我们定义与对象“X:2”(对象X的主要版本2)相关联的配置文件“A”,则可以使用相同的名称“A”来定义对象“Y:1”或对象“X:3”。
给定的配置文件与给定对象的最小次要版本相关联。对象的最低要求版本是包含配置文件定义的所有必需元素的最低版本。对于每个配置文件定义,必须明确标识特定的最小版本。
多个配置文件支持
对于给定类型的服务对象或根对象,可以定义多个配置文件。可以定义具有独立或重叠要求的配置文件。
配置文件版本
配置文件的版本编号被定义为使用次要版本编号约定。也就是说,对于给定的配置文件名称,每个连续版本必须与所有早期版本兼容。对配置文件的任何不兼容更改都必须使用不同的配置文件名称。为了允许配置文件的定义随时间变化,每个配置文件的定义必须具有相关的版本号。
对于要视为与另一版本兼容的配置文件的一个版本,后续版本必须是早期版本的严格超集。对于所有与之兼容的早期版本,这需要以下版本:
- 后期版本可能会添加不在早期版本的配置文件中的要求,但不得删除要求。
- 后面的版本可以删除以前要求的一个或多个条件。例如,如果以前的配置文件仅在条件a为真的情况下才需要X,那么后面的配置文件可能需要X无条件.
对于配置文件,定义以下符号以标识特定版本:
符号 | 描述 | 例子 |
配置文件名称:版本 | 指配置文件的特定版本 | .Baseline:1 |
配置文件名称 | 引用配置文件的任何版本 | Baseline |
ProfileName必须以字母或下划线开头,后续字符必须是字母、数字、下划线或连字符。术语“字母”和“数字”的定义见XML规范[附录B/1]。
连字符很容易与有时由连字符算法插入的任意连字符混淆。因此,ProfileName不应包含任何连字符。在BBF标准中,ProfileName将始终以大写字母开头(或内部配置文件),并且不会包含任何连字符(有关相应的规范要求,请参见C.3.1)
Baseline Profiles(基线配置文件)
对于每个服务对象(和根对象),应至少定义一个配置文件。在许多情况下,需要定义一个基线配置文件,该配置文件指示支持该对象的任何设备所需的最低要求。
概要文件中的需求类型
因为概要文件是在单个对象(和主要版本)的上下文中定义的,所以与概要文件相关的所有需求必须特定于与该对象相关的数据模型。
概要文件需求可以包括与对象的数据模型相关的以下任何类型的需求:
- 对参数读取支持的要求。
- 参数写入支持的要求。
- 对命令支持的要求。
- 支持包含在整个对象中的子对象的要求。
- 添加或删除子对象实例的能力要求。
- 支持参数的活动通知的要求。
- 支持给定参数访问控制的要求。
对于上面列出的每个需求类别,概要文件可以无条件地定义需求,也可以在需求上放置一个或多个条件。例如,配置文件可能要求仅当设备支持某个其他参数时,才支持读取某个参数或对象(配置文件本身不需要的对象)。这些条件将直接与与配置文件相关联的整个对象的数据模型相关。
因为设备必须能够支持多个配置文件,所以必须定义所有配置文件,使它们不矛盾。因此,概要文件只能定义要满足的最低要求,而不能指定负面要求。也就是说,配置文件将不包括指定设备不支持的内容的要求,或排除一系列值的要求。
2.4 DEPRECATED 和 OBSOLETED 条目
数据模型定义中的关键词“已弃用”应解释如下:该术语指的是在当前版本的标准中定义的对象、参数或参数值,但没有意义、不适当或不必要。这样的对象、参数或参数值将从数据模型的下一个主要版本中删除。
下面给出了如何解释或实现不推荐的对象、参数或参数值的要求。有关如何解释或实现特定的已弃用对象、参数或参数值的详细信息,请参阅对象或参数的定义。
数据模型定义中的关键词“已废弃”应解释如下:该术语指的是满足不推荐使用要求的对象、参数或参数值,并且已过时。这些对象、参数或参数值可以从数据模型的较新次要版本或概要文件的较新版本中删除,而不会被视为违反向后兼容性规则。下面给出了如何解释或实现废弃对象、参数或参数值的要求。有关如何解释或实现特定废弃对象、参数或参数值的更多信息,请参阅对象或参数的定义。
如果配置文件中的任何项目已弃用或作废,则该配置文件必须(相应地)弃用或作废。因此,需要定义一个新的配置文件版本,以省略任何弃用或作废的项目。
弃用项目的要求
本节定义了适用于所有DEPRECATED对象、参数和参数值的要求,除非被对象或参数定义明确覆盖。
数据模型要求:
- DEPRECATED参数、对象或参数值的定义必须包括该项被弃用的原因说明。
- DEPRECATED参数、对象或参数值的定义可规定与项目相关的进一步要求;此类要求可能会凌驾于TR-069[7]或TR-369[11]中规定的关于弃用元素的一般代理或控制器要求。
代理要求:
- DEPRECATED参数的值必须对其数据类型有效,并且满足任何范围(对于数字参数)、长度(对于字符串、base64或hexBinary参数)和枚举值(对于字符串参数)要求。
- 代理可以忽略DEPRECATED参数的详细行为要求,例如其值是唯一密钥。
- 如果数据模型定义允许这样的操作,则代理必须允许创建DEPRECATED对象、修改DEPRECATED参数和设置DEPRECATE参数值。但是,它可以选择不将这些更改应用于其操作状态
- 无论DEPRECATED更改是否应用于代理的操作状态,读取DEPRECATED可写参数都应返回上次写入的值,即,即使代理选择不将其应用于其操作状态,也应存储该值。
- 代理可以拒绝控制器将任何参数设置为DEPRECATED值的尝试。
控制器要求:
- 控制器不应创建DEPRECATED对象、修改DEPRECATED参数或设置DEPRECATE参数值。
- 控制器应忽略DEPRECATED对象、参数和参数值。
- 控制器不应将DEPRECATED参数设置为对其数据类型无效的值,或无法满足任何范围(数字参数)、长度(字符串、base64或hexBinary参数)或枚举值(字符串参数)要求。
- 控制器不应将任何参数设置为弃用值。
废弃条件要求
本节定义了适用于所有已废弃对象、参数或参数值的要求,除非被对象或参数定义明确覆盖。
已废弃的对象、参数或参数值必须满足上一节的所有要求。此外,以下要求适用。、
- 废弃的对象、参数或参数值可以从数据模型的后续次要版本中删除,而不会被视为违反向后兼容性规则
- 不能从当前版本的配置文件中删除已过时的对象、参数或参数值,但可以从更高版本的配置中删除,而不认为这违反了向后兼容性规则。
- 数据模型定义必须包括已从数据模型或其配置文件中删除的那些已废弃对象、参数或参数值的列表。这是为了防止将来的命名空间冲突。
3 对象定义
3.1 通用符号
参数名称使用类似于目录树的分层形式。
特定参数的名称由层次结构中以“.”(点)分隔的每个连续节点的串联表示,从层次结构的主干开始,一直到叶子。指定部分路径时,表示层次结构中的中间节点,结尾的“.”(点)始终用作最后一个字符
参数名称必须区分大小写。层次结构中每个节点的名称必须以字母或下划线开头,后续字符必须是字母、数字、下划线或连字符。术语“字母”和“数字”的定义见XML规范[附录B/1]。
连字符很容易与有时由连字符算法插入的任意连字符混淆。因此,层次结构中节点的名称不应包含任何连字符。此外,层次结构中节点的名称不应以下划线开头。
在BBF标准中,层次结构中节点的名称始终以大写字母开头,且不包含任何连字符或下划线(有关相应的规范要求,请参见C.3.1
如果一个对象可能出现多个实例,则会显示占位符节点名称{i}。在实际使用中,此占位符将被实例标识符替换。
3.2 数据类型和表示
参数使用默认SOAP数据类型的有限子集。支持的数据类型由DM模式定义,并在A.2.3中列出。
指定IP地址、MAC地址等表示的命名数据类型在DM实例文档中定义(见附录a)。具有这些定义的XML文件和相应的HTML文件可以在数据模型资源页中找到。请注意,此DM实例定义了预期在多个数据模型定义中使用的命名数据类型;可以在任何DM实例文档中定义本地命名数据类型。
以下小节指定了控制XML文档中参数值表示的其他规则。
日期和时间规则
除非在该类型参数的定义中另有明确规定,否则所有时间都必须用UTC(世界协调时间)表示。
如果代理无法获得绝对时间,则应指示自启动以来的相对时间,其中,启动时间假定为第1年1月的第一天开始,或0001 0101T00:00:00。例如,启动后的2天、3小时、4分钟和5秒将表示为0001 01 03T03:04:05。启动后的相对时间必须使用非分区表示法表示。任何年份值小于1000的未分区值必须
解释为自启动以来的相对时间。
如果时间未知或不适用,则表示“未知时间”的以下值必须为使用:0001-01-01T00:00:00Z。对于无限时间线,以下值表示“无限时间”必须使用:9999-12-31T23:59:59Z。
除表示自启动以来的相对时间(如上所述)之外的任何dateTime值都必须使用UTC时区表示法(即,必须包含时区后缀“Z”、“-00:00”或“+0:00”)。
3.3 供应商特定要素
对于定义为包含逗号分隔列表的字符串,格式定义如下:逗号分隔列表中的每对连续项目之间必须有分隔符。分隔符必须正好包含一个逗号字符,也可以在逗号之前或之后包含一个或多个空格字符。整个分隔符(包括任何空格字符)不得被视为其分隔的列表项的一部分。逗号分隔列表中的最后一项不得后跟分隔符。逗号分隔列表中的单个项目不得包含空格或逗号字符。项目值中的任何空格或逗号字符必须使用RFC 3986中指定的百分比编码进行转义
可以创建一个列表列表,但如果可能,应首选其他解决方案。如果字符串包含列表列表,上一段的规则意味着内部列表的逗号分隔符将按百分比编码。例如,包含元素“a”、“b,c”(两元素列表)和“d”的三元素列表可以表示为“a,b%2Cc,d”。为了避免对内部分隔符进行百分比编码,可以通过将内部列表放在方括号内来“保护”内部列表,例如,上面的列表可以表示为“a,[b,c],d”。为了避免歧义(不理解新语法的控制器将“a,[b,c],d”解释为四元素列表“a”,“[b”,“c]”,“d”),数据类型和/或参数定义必须明确说明支持新语法(a.2.3.1,a.2.7.1)。
引用参数或对象的参数
对于定义为包含对象层次路径名的字符串参数(或定义为包含逗号分隔的对象路径名列表的参数中的每个项),对象名称的表示形式不得包含尾随的“点”TR-181i2[10]Device:2数据模型中的这种类型是Device.InterfaceStack.{i}.LlowerLayer。对于此参数,以下是格式正确的值的示例
Device.Ethernet.Interface.1
参数值中的路径名必须始终为完整的路径名。对于CWMP,有一个例外,即以点开头的路径相对于根或服务对象。例如,在设备根对象中,参数值“.DeviceInfo”始终表示“Device.DeviceInfo”。
注意:此异常不适用于USP
为了能够将参考参数用作唯一键(A.2.10.1),必须在比较之前将其路径名称从概念上转换为完整的路径名称。例如,在设备根对象中,“.DeviceInfo.”和“Device.DeviceInfo”将比较为相等。如果引用参数是列表值的,即是路径名称或实例编号的列表,则在比较时,参数值在概念上必须视为集合,即比较必须忽略项目顺序和任何重复项目。例如,“1,2,1”和“2,1”将比较为相等,因为引用实例1和2都相同。
在数据模型中,引用被定义为强或弱。强引用总是引用现有的参数或对象,或者是空引用。另一方面,弱引用不一定引用现有参数或对象。
单位惯例
对于以单位定义值的数字参数,与位和字节相关的单位将始终指2的幂。例如,千字节总是1024字节,兆字节总是1024*1024字节,等等。
默认最大字符串长度
对于字符串值参数,最大长度由组成字符串的元素的大小显式指示或暗示。对于内容为枚举的字符串,最长的枚举值决定最大长度。类似地,对于内容为模式的字符串,可能的最长匹配值决定了最大长度。对于内容为列表的字符串,最大项目数和单个项目长度有助于确定最大字符串长度。
供应商特定要素
供应商可以使用供应商特定的元素(参数、对象、命令、事件)扩展标准化数据模型。供应商特定元素可以在单独的命名层次结构中定义,也可以在标准化命名层次结构内定义。
未包含在其他供应商特定对象中的供应商特定参数、对象、命令或事件的名称必须具有以下格式:
X__VendorSpecificName
在本定义中,<供应商>是唯一的供应商标识符,可以是OUI或域名。
用于给定供应商特定参数的OUI或域名必须是分配给定义此参数的组织的名称(不一定与代理的供应商相同)。OUI是[2]中定义的组织上唯一的标识符,必须使用所有大写字母并包括任何前导零将其格式化为六个十六进制数字字符串。域名必须为大写,每个点(“.”)必须用连字符或下划线替换。
VendorSpecificName不能包含“.”(句点)或空格字符。
注意:使用字符串“X_”表示特定于供应商的参数意味着任何标准化参数都不能以“X_
包含在另一个特定于供应商的对象中的特定于供应商元素的名称,该对象本身以上述前缀开头,不需要包含前缀。
供应商特定元素的完整路径名长度不得超过256个字符。
以下是一些特定于供应商的元素名称示例:
A参数:
Device.UserInterface.X_012345_AdBanner
单个实例对象:
Device.X_EXAMPLE-COM_MyConfig.Status
单个命令:
Device.X_EXAMPLE-COM_MyCommand()
单个事件:
Device.X_EXAMPLE-COM_MyEvent!
适当时,供应商还可以扩展枚举的值集。如果这样做,供应商指定的值必须采用“X__VendorSpecificValue”格式。此类字符串的总长度不得超过31个字符。
4.修订记录
修订时间 | 修改版本号 | 修订内容 |
January 2022 | cwmp-datamodel-1-9.xsd | Allowed the version attribute in component references Allowed minEntries and maxEntries in command and event argument objects Allowed status attribute in profile command/event arguments Added secured attribute |
November 2020 | cwmp-datamodel-1-8.xsd | Allowed command attributes, e.g. mandatory, in component definitions |
September 2019 | cwmp-datamodel-1-7.xsd | Supported implementation defaults, version attribute, description templates, writeOnceReadOnly access type and the decimal datatype |
March 2018 | cwmp-datamodel-1-6.xsd | Supported USP commands, events and mount points |
September 2013 | cwmp-datamodel-1-5.xsd | Added profile/@minVersion attribute Allowed uniqueKey parameters to be in sub-objects Added UUID data type Added nestedBrackets attribute, and allowed use of the list facet in named data type definitions Several other minor updates and clarifications |
July 2011 | cwmp-datamodel-1-4.xsd | Added top-level file attribute |
November 2010 | cwmp-datamodel-1-3.xsd | Relaxed some referential constraints (in the light of experience) Added description/@action prefix option Added syntax/@command |
March 2010 | cwmp-datamodel-1-2.xsd | Distinguished functional and non-functional keys; supported #.A relative path syntax |
September 2009 | cwmp-datamodel-1-1.xsd | Made import/@file optional; supported range/@step |
November 2008 | cwmp-datamodel-1-0.xsd | Original |