525 lines
27 KiB
Markdown
525 lines
27 KiB
Markdown
# AUTOSAR ARXML 序列化规则
|
||
|
||
> **AUTOSAR CP Release 4.4.0**
|
||
>
|
||
> 原文:*ARXML Serialization Rules*(文档 ID 779)
|
||
>
|
||
> 翻译状态:**已完成 v1**(完整翻译;XML 示例与 ANTLR/Schema 片段保留原文)
|
||
>
|
||
> 对应原文 PDF:`MethodologyAndTemplates/AUTOSAR_TPS_ARXMLSerializationRules.pdf`
|
||
>
|
||
> 翻译日期:Step 3 - P0 批量翻译
|
||
|
||
---
|
||
|
||
## 文档标识
|
||
|
||
| 字段 | 值 |
|
||
|------|-----|
|
||
| 文档标题(Document Title) | ARXML 序列化规则(ARXML Serialization Rules) |
|
||
| 文档所有者(Document Owner) | AUTOSAR |
|
||
| 文档责任人(Document Responsibility) | AUTOSAR |
|
||
| 文档标识号(Document Identification No) | 779 |
|
||
| 文档状态(Document Status) | 正式版(Final) |
|
||
| 所属 AUTOSAR 标准 | Classic Platform(经典平台) |
|
||
| 所属标准版本 | 4.4.0 |
|
||
|
||
> 原文版权:© AUTOSAR — 机密文件
|
||
> 本中文译文仅供学习参考。
|
||
|
||
---
|
||
|
||
## 文档变更历史(Document Change History)
|
||
|
||
| 日期 | 版本 | 变更人 | 变更说明 |
|
||
|------|------|--------|----------|
|
||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 编辑性修订 |
|
||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 更新 AUTOSAR XML Schema 位置提示的模式 |
|
||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 初始文档结构 |
|
||
|
||
---
|
||
|
||
## 目录
|
||
|
||
1. [引言(Introduction)](#1-引言introduction)
|
||
- 1.1 [文档约定](#11-文档约定)
|
||
- 1.2 [需求追溯](#12-需求追溯)
|
||
2. [ARXML 序列化规则](#2-arxml-序列化规则)
|
||
- 2.1 [物理层级(Physical Level)](#21-物理层级physical-level)
|
||
- 2.2 [数据格式(Data Format)](#22-数据格式data-format)
|
||
3. [术语表(Glossary)](#3-术语表glossary)
|
||
4. [变更历史(Change History)](#a-变更历史change-history)
|
||
5. [被提及的类表(Mentioned Class Tables)](#b-被提及的类表)
|
||
|
||
---
|
||
|
||
## 参考文献(References)
|
||
|
||
- [1] XML Schema Production Rules,AUTOSAR_TPS_XMLSchemaProductionRules
|
||
- [2] Software Component Template,AUTOSAR_TPS_SoftwareComponentTemplate
|
||
- [3] System Template,AUTOSAR_TPS_SystemTemplate
|
||
- [4] Specification of ECU Configuration,AUTOSAR_TPS_ECUConfiguration
|
||
- [5] Meta Model,AUTOSAR_MMOD_MetaModel
|
||
- [6] Meta Model-generated XML Schema,AUTOSAR_MMOD_XMLSchema
|
||
- [7] Standardization Template,AUTOSAR_TPS_StandardizationTemplate
|
||
- [8] Requirements on Interoperability of AUTOSAR Tools,AUTOSAR_RS_InteroperabilityOfAutosarTools
|
||
- [9] Extensible Markup Language (XML), v1.0,http://www.w3.org/TR/REC-xml/
|
||
- [10] XML Schema 1.0,http://www.w3.org/TR/xmlschema-1
|
||
- [11] Generic Structure Template,AUTOSAR_TPS_GenericStructureTemplate
|
||
- [12] Unified Modeling Language: Superstructure, Version 2.0, OMG Available Specification, ptc/05-07-04
|
||
- [13] Interoperability of AUTOSAR Tools,AUTOSAR_TR_InteroperabilityOfAutosarTools
|
||
- [14] Software Process Engineering Meta-Model Specification,http://www.omg.org/spec/SPEM/2.0/
|
||
|
||
---
|
||
|
||
## 1 引言(Introduction)
|
||
|
||
本文档规定将 AUTOSAR 模型序列化为 AUTOSAR XML 描述(AUTOSAR XML descriptions)的规则。本规范的意图是通过对 AUTOSAR XML 描述指定超出 AUTOSAR XML Schema 所定义的 XML 结构范围之外的附加约束,来支持 AUTOSAR 工具之间的互操作性。其好处包括:
|
||
|
||
- 通过定义规范化表示,避免无意义的差异(如缩进、字符编码等),从而简化对 AUTOSAR XML 描述的比较。
|
||
- 通过限制 XML 的不同变体(如不同的命名空间前缀、字符编码、文件名等)来减少工具实现的工作量。
|
||
|
||
AUTOSAR 模板规范定义了 AUTOSAR 数据交换格式。图 1.1 展示了 *AUTOSAR ARXML Serialization Rules*(本规范)与其他模板规范之间的关系:
|
||
|
||
- **AUTOSAR XML Schema Production Rules** [1] 与本文档关注物理表示与 XML 数据格式。
|
||
- **Software Component Template** [2]、**System Template** [3]、**ECU Configuration Template** [4] 等关注数据结构及其语义。
|
||
|
||
> 图 1.1:模板规范概览(图略,参见原 PDF)
|
||
|
||
AUTOSAR 在 **AUTOSAR Meta Model** [5] 中将 AUTOSAR 数据交换格式的数据结构与语义形式化并加以维护。该元模型与 **AUTOSAR XML Schema** [6] 之间的映射在 *AUTOSAR XML Schema Production Rules* [1] 中描述(参见图 1.2)。产生 AUTOSAR XML Description 的 AUTOSAR 工具必须以可成功通过 AUTOSAR XML Schema 验证的方式来序列化 AUTOSAR 模型。超出 XML Schema 验证范围的附加约束在本文档中描述。
|
||
|
||
> 图 1.2:XML Schema Production Rules 与 ARXML Serialization Rules 之间的关系(图略,参见原 PDF)
|
||
|
||
### 1.1 文档约定
|
||
|
||
技术术语以等宽字体排版,例如 `PortPrototype`。一般规则下,技术术语的复数形式通过在单数形式后加 "s" 构成,例如 `PortPrototypes`。这样,文档与 AUTOSAR XML Schema 中使用的术语保持一致。
|
||
|
||
本文档包含以文字形式表达的约束,与正文区分的标志是它们具有唯一的数字约束 ID、标题,以及以 `⌈` 字符开始、以 `⌋` 字符结束的实际约束文本。
|
||
|
||
这些约束的目的是将对 AUTOSAR 元模型的解读严格约束,使得能够在元模型实例(即 M1 级别)上检测到对标准化行为的违反。
|
||
|
||
鼓励 AUTOSAR 工具厂商在工具发出的诊断消息中加入对应于 M1 建模问题的约束数字 ID。
|
||
|
||
本文档中引入的类的属性以类表形式列出。它们的形式如顶层元素 `AUTOSAR` 的示例所示:
|
||
|
||
#### 类表 1.1:AUTOSAR
|
||
|
||
| 类 | AUTOSAR |
|
||
|----|---------|
|
||
| **包(Package)** | `M2::AUTOSARTemplates::AutosarTopLevelStructure` |
|
||
| **说明** | AUTOSAR 描述的根元素,也是对应 XML 文档中的根元素。<br>Tags: `xml.globalElement=true` |
|
||
| **基类(Base)** | `ARObject` |
|
||
|
||
| 属性 | 类型 | 多重性 | 种类 | 说明 |
|
||
|------|------|--------|------|------|
|
||
| `adminData` | `AdminData` | 0..1 | aggr | 表示 AUTOSAR 文件的管理数据。Tags: `xml.sequenceOffset=10` |
|
||
| `arPackage` | `ARPackage` | * | aggr | AUTOSAR 模型中的顶层包。Stereotypes: `atpSplitable`; `atpVariation`。Tags: `atp.Splitkey=shortName, variationPoint.shortLabel`; `vh.latestBindingTime=blueprintDerivationTime`; `xml.sequenceOffset=30` |
|
||
| `fileInfoComment` | `FileInfoComment` | 0..1 | aggr | 提供在 AUTOSAR 文件中加入结构化注释的可能性。Stereotypes: `atpStructuredComment`。Tags: `xml.roleElement=true`; `xml.sequenceOffset=-10`; `xml.typeElement=false` |
|
||
| `introduction` | `DocumentationBlock` | 0..1 | aggr | AUTOSAR 文件的引言部分。例如用于表示免责声明和法律声明。Tags: `xml.sequenceOffset=20` |
|
||
|
||
表格的首行字段含义如下:
|
||
|
||
- **类(Class)**:UML 模型中定义的类名。
|
||
- **包(Package)**:定义该类的 UML 包。仅用于帮助在整体元模型中定位该类。
|
||
- **说明(Note)**:建模者为该类给出的注释。该类的构造型(Stereotypes)和 UML 标签也在此说明。
|
||
- **基类(Base Classes)**:若适用,列出直接基类。
|
||
|
||
表头字段含义如下:
|
||
|
||
- **属性(Attribute)**:类属性的名称。注意 AUTOSAR 不区分类属性与所拥有的关联端。
|
||
- **类型(Type)**:类属性的类型。
|
||
- **多重性(Mul.)**:属性所赋予的多重性,即与该属性关联的给定数据类型的实例数量。
|
||
- **种类(Kind)**:指明属性是聚合在类内(**aggr** 聚合)、类内的 UML 原生属性(**attr** 原生属性)、抑或仅被引用(**ref** 引用)。实例引用也在此字段中标示(**iref** 实例引用)。
|
||
- **说明(Note)**:建模者为类属性给出的注释(角色注释)。属性的构造型与 UML 标签也在此说明。
|
||
|
||
请注意,以字母而非数字开头的章节代表文档的附录。附录的目的是支持对文档某些方面的解释,不代表标准的强制约定。
|
||
|
||
用于表达义务的动词形式应遵循 [TPS_STDT_00053] 的规定,用以表示需求(详见《标准化模板》"可追溯性支持"一章 ([7]))。
|
||
|
||
AUTOSAR 文档中需求的表示遵循 [TPS_STDT_00078] 中规定的表格(详见 [7])。
|
||
|
||
### 1.2 需求追溯
|
||
|
||
针对本文档的需求专门陈述于对应的需求文档 [8] 中。
|
||
|
||
下表引用 [8] 中规定的需求,并提供满足某给定需求的各规范条目的信息。
|
||
|
||
| 需求 | 描述 | 满足者 |
|
||
|------|------|--------|
|
||
| [RS_IOAT_00001] | 支持数据交换 | [TPS_ASR_00001]–[TPS_ASR_00019](共 19 项) |
|
||
| [UC_IOAT_00002] | 处理 AUTOSAR 元模型随时间的变化 | [TPS_ASR_00016] |
|
||
| [UC_IOAT_00008] | 一个 AUTOSAR 模型及相关构件从一方运送至另一方 | [TPS_ASR_00016] |
|
||
|
||
**表 1.2:需求追溯**
|
||
|
||
---
|
||
|
||
## 2 ARXML 序列化规则
|
||
|
||
### 2.1 物理层级(Physical Level)
|
||
|
||
#### 2.1.1 文件分离(File separation)
|
||
|
||
##### ⌈[TPS_ASR_00001] 文件分离⌋
|
||
|
||
一个 AUTOSAR 模型可被分发为若干 AUTOSAR XML description 文件。⌊(RS_IOAT_00001)
|
||
|
||
**示例 2.1**:有的文件可包含数据类型,另一些可包含接口,等等。
|
||
|
||
#### 2.1.2 文件名
|
||
|
||
##### ⌈[TPS_ASR_00002] 文件名扩展名:`.arxml`⌋
|
||
|
||
AUTOSAR XML descriptions 应使用文件扩展名 `.arxml`(AUTOSAR XML 的缩写)。⌊(RS_IOAT_00001)
|
||
|
||
##### ⌈[TPS_ASR_00003] 文件名长度⌋
|
||
|
||
文件名的最大长度限制为 255 个字符。⌊(RS_IOAT_00001)
|
||
|
||
### 2.2 数据格式(Data Format)
|
||
|
||
为支持使用文本比较工具直接比较 AUTOSAR XML descriptions,必须以可靠、标准化的方式生成 XML。
|
||
|
||
#### 2.2.1 XML 字符编码
|
||
|
||
##### ⌈[TPS_ASR_00004] UTF-8 字符编码⌋
|
||
|
||
AUTOSAR XML descriptions 的字符编码应为 UTF-8。不允许使用其他编码。⌊(RS_IOAT_00001)
|
||
|
||
##### ⌈[TPS_ASR_00005] XML 声明中的 UTF-8 编码⌋
|
||
|
||
AUTOSAR XML descriptions 应以声明 UTF-8 编码的 XML 声明开始。⌊(RS_IOAT_00001)
|
||
|
||
**示例 2.2**:
|
||
|
||
```xml
|
||
<?xml .... encoding="UTF-8"?>
|
||
```
|
||
|
||
##### ⌈[TPS_ASR_00006] 避免 UTF BOM⌋
|
||
|
||
AUTOSAR XML descriptions **不应**以"UTF Byte Order Mask"(BOM)开始。⌊(RS_IOAT_00001)
|
||
|
||
字节序标记是可用于文本流开始处的 unicode 字符,用于传达以下信息:
|
||
|
||
- 该流是 unicode 编码;
|
||
- 使用的是哪种 unicode 编码(UTF-8、UTF-16、…);
|
||
- unicode 编码的字节序。
|
||
|
||
根据 [TPS_ASR_00004] 与 [TPS_ASR_00005],AUTOSAR XML descriptions 的字符编码应为 UTF-8,且此信息应在 XML 声明中显式描述。此外,UTF-8 不支持不同的字节序。因此 BOM 不增加额外信息。
|
||
|
||
#### 2.2.2 XML 版本
|
||
|
||
##### ⌈[TPS_ASR_00007] XML 版本 1.0⌋
|
||
|
||
AUTOSAR XML descriptions 应符合 XML 版本 1.0 [9]。不允许其他 XML 版本。⌊(RS_IOAT_00001)
|
||
|
||
##### ⌈[TPS_ASR_00008] XML 声明中的 XML 版本 1.0⌋
|
||
|
||
AUTOSAR XML descriptions 应以声明 XML 版本 1.0 [9] 的 XML 声明开始。⌊(RS_IOAT_00001)
|
||
|
||
**示例 2.3**:
|
||
|
||
```xml
|
||
<?xml version="1.0" .... ?>
|
||
```
|
||
|
||
#### 2.2.3 XML 注释和处理指令
|
||
|
||
##### ⌈[TPS_ASR_00009] XML 注释⌋
|
||
|
||
AUTOSAR XML descriptions 可以包含 XML 注释。⌊(RS_IOAT_00001)
|
||
|
||
注:XML 注释不构成实际 AUTOSAR 模型的一部分。AUTOSAR 工具可以静默忽略 XML 注释,并且无需重新序列化它们。
|
||
|
||
##### ⌈[TPS_ASR_00010] XML 处理指令⌋
|
||
|
||
AUTOSAR XML description 可以包含 XML 处理指令¹。⌊(RS_IOAT_00001)
|
||
|
||
¹ 此规则的唯一例外是 XML 版本和 XML 字符编码的声明。这些处理指令应按 [TPS_ASR_00005] 和 [TPS_ASR_00008] 的要求得到支持。
|
||
|
||
注:AUTOSAR 工具可静默忽略 XML 处理指令,无需重新序列化它们。
|
||
|
||
#### 2.2.4 XML 根元素
|
||
|
||
传统上,AUTOSAR 实现了由 major、minor、patch 三段组成的版本方案。以这种方式指定的版本曾作为 `xsi:schemaLocation` 定义的一部分使用,例如:
|
||
|
||
```xml
|
||
xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd"
|
||
```
|
||
|
||
随着 AUTOSAR adaptive 平台的出现,AUTOSAR 决定为 adaptive 平台版本采用不同的版本方案(classic 平台保持现有版本方法)。adaptive 平台的新版本方案仅由两段组成——发布年份和月份。最初的做法是将 adaptive 版本的两段方案也用于 adaptive 模型对应的 ARXML 文件的 `xsi:schemaLocation` 定义:
|
||
|
||
```xml
|
||
xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_2017-03.xsd"
|
||
```
|
||
|
||
随着时间推移,这种做法将造成难以理清的三段值与两段值并存的 `xsi:schemaLocation` 历史,且难以推断哪些 AUTOSAR XML Schema 版本实际向后兼容某给定 ARXML 文件。
|
||
|
||
为缓解此问题,AUTOSAR 还决定为 schema 版本发明全新版本方案,无论某个 schema 发布是由 AUTOSAR classic 还是 adaptive 平台触发。
|
||
|
||
`xsi:schemaLocation` 使用的新版本方案预计只包含一个元素——随每个 AUTOSAR 版本递增的正整数,不论该版本聚焦于 classic 还是 adaptive:
|
||
|
||
```xml
|
||
xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00044.xsd"
|
||
```
|
||
|
||
`xsi:schemaLocation` 中单一元素的每个值都可明确对应一个特定 AUTOSAR 版本,且仍然容易理解某 ARXML 文件的向后兼容状态。
|
||
|
||
XML schema 包含 AUTOSAR 标准的最新版本。这意味着不存在专门只包含 AUTOSAR classic 或 adaptive 平台模型元素的 AUTOSAR XML schema。参见图 2.1。
|
||
|
||
##### ⌈[TPS_ASR_00011] AUTOSAR XML Namespace⌋
|
||
|
||
适用于所有 AUTOSAR XML 元素与属性的 AUTOSAR XML 命名空间为 `http://autosar.org/schema/r<major>.<minor>`。只要保持向后兼容性,该命名空间在 AUTOSAR XML Schema 的多个版本之间保持不变。`<major>` 和 `<minor>` 是开启一系列向后兼容 AUTOSAR XML Schema 的 AUTOSAR 版本的主版本号和次版本号。⌊(RS_IOAT_00001)
|
||
|
||
**示例 2.4**:XML 命名空间 `http://autosar.org/schema/r4.0` 对应于 AUTOSAR 4.0.1 的 AUTOSAR XML Schema。后续版本(4.0.2、4.0.3、4.1.0、4.1.1、4.1.2、4.1.3、4.2.1、4.2.2、4.3.0 等)的 AUTOSAR XML Schema 旨在与该版本向后兼容。
|
||
|
||
##### ⌈[TPS_ASR_00017] AUTOSAR XML Namespace 声明⌋
|
||
|
||
AUTOSAR XML 命名空间为默认命名空间。AUTOSAR 元素不应使用命名空间前缀。⌊(RS_IOAT_00001)
|
||
|
||
**示例 2.5**:
|
||
|
||
```xml
|
||
<AUTOSAR xmlns="http://autosar.org/schema/r4.0" ... >
|
||
```
|
||
|
||
而非:
|
||
|
||
```xml
|
||
<AR:AUTOSAR xmlns:AR="http://autosar.org/schema/r4.0" ... >
|
||
```
|
||
|
||
##### ⌈[TPS_ASR_00018] 不允许第三方 XML 命名空间⌋
|
||
|
||
AUTOSAR XML descriptions 中允许的唯一有效 XML 命名空间是:
|
||
|
||
- AUTOSAR XML namespace (`http://autosar.org/schema/r<major>.<minor>`),参见 [TPS_ASR_00017],以及
|
||
- XML Schema Instance namespace (`http://www.w3.org/2001/XMLSchema-instance`)。
|
||
|
||
不允许其他第三方 XML 命名空间。⌊(RS_IOAT_00001)
|
||
|
||
##### ⌈[TPS_ASR_00012] AUTOSAR Revision 声明⌋
|
||
|
||
AUTOSAR XML description 应通过 schema 位置提示 URI [TPS_ASR_00013](在 `xsi:schemaLocation` 属性中映射到 [TPS_ASR_00011] 的 AUTOSAR 命名空间)声明其创建所基于的 AUTOSAR 版本。`xsi:schemaLocation` 属性以及为 AUTOSAR 命名空间声明的 AUTOSAR schema 位置提示是强制性的。⌊(RS_IOAT_00001)
|
||
|
||
注:根据 W3C XML Schema 规范 [10] 第 4.3.2 章"How schema definitions are located on the Web",`xsi:schemalocation` 属性指定一对 URI 引用(一个为 XML 命名空间,另一个为对定义该 XML 命名空间下名称的 schema 文档位置的提示)。验证 AUTOSAR XML descriptions 的工具应能在其自有资源中标识合适的 XML Schema 文档。
|
||
|
||
此做法允许在 AUTOSAR XML Schema 向后兼容的情况下,对 AUTOSAR XML descriptions 使用更新版本 AUTOSAR XML Schema 进行验证。此外,只要 AUTOSAR XML description 未使用更新版本特性,工具也可尝试用较旧 AUTOSAR XML Schema 验证。
|
||
|
||
**示例 2.6**(AUTOSAR 4.3.0 版本声明示例):
|
||
|
||
```xml
|
||
<AUTOSAR ...
|
||
xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd">
|
||
</AUTOSAR>
|
||
```
|
||
|
||
##### ⌈[TPS_ASR_00013] AUTOSAR XML Schema 位置提示 URI 模式⌋
|
||
|
||
AUTOSAR XML description 中的 AUTOSAR XML Schema 位置提示 URI 应为 AUTOSAR 提供的 XML Schema 文档的文件名,文件名遵循模式:
|
||
|
||
```
|
||
AUTOSAR_{number}.xsd
|
||
```
|
||
|
||
`{number}` 对应于该 AUTOSAR XML Schema 所属的 AUTOSAR 特定发布版本。
|
||
|
||
特别地,AUTOSAR XML Schema 位置提示 URI 中不应包含路径。⌊(RS_IOAT_00001)
|
||
|
||
AUTOSAR XML 根元素的示例见 Listing 2.1:
|
||
|
||
**Listing 2.1:AUTOSAR XML 根元素**
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF8"?>
|
||
<AUTOSAR
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="{AUTOSAR XML Namespace} {Revision Hint URI}"
|
||
xmlns="{AUTOSAR XML Namespace}">
|
||
...
|
||
</AUTOSAR>
|
||
```
|
||
|
||
#### 2.2.5 XML 格式化 / 缩进
|
||
|
||
本节规定的格式化与缩进不改变 AUTOSAR 模型的语义。其主要目的是在使用文本 diff 工具比较两份 AUTOSAR XML descriptions 时减少无意义的差异。
|
||
|
||
##### ⌈[TPS_ASR_00019] AUTOSAR XML Descriptions 的格式化⌋
|
||
|
||
XML description 应按表 2.1 所示的方式格式化。⌊(RS_IOAT_00001)
|
||
|
||
**表 2.1:XML 序列化的格式化方法**
|
||
|
||
| 应用于 | 策略 | 描述 |
|
||
|---------|------|------|
|
||
| 默认方法 | **NewLine**:元素自成块 | 包括:缩进每级 2 个字符;起始标签独占一行;多于一个 XML 属性时按字母升序排序,且每个属性独占一行;起始标签按嵌套层级缩进;结束标签独占一行且缩进与起始一致;内容比起始多缩进一级 |
|
||
| 原生类型(基本类型,UML 属性或聚合) | **OneLine**:单行显示 | 元素从新一行开始,结束标签与起始标签和内容同行 |
|
||
| `atpMixedString` 属性 | **InLine**:在文本中浮动 | 元素周围空白不应改变。标签前后不应插入新行。元素内空白不变。下例中 `<E>` 按 InLine 处理:`<L-1 L="EN">This is <E>bold </E> style </L-1>` |
|
||
| `VerbatimString` 元素(`xml:space="preserve"`) | **keepWhitespace** | 元素内空白原样保留 |
|
||
| 无 `xml:space` 或 `xml:space="default"` 的元素 | **normalizeWhitespace** | 包含:去除前后空白;连续空白替换为单个空格;不换行;回车符替换为空格;内联子元素视为一个非空白字符 |
|
||
|
||
**Listing 2.2:序列化示例**
|
||
|
||
```xml
|
||
<UNIT>
|
||
<SHORT-NAME>Perc</SHORT-NAME> <!-- OneLine -->
|
||
<DESC> <!-- NewLine -->
|
||
<L-2 L="EN">a percentage...</L-2> <!-- OneLine -->
|
||
</DESC>
|
||
<DISPLAY-NAME>%</DISPLAY-NAME> <!-- OneLine -->
|
||
</UNIT>
|
||
<UNIT>
|
||
<SHORT-NAME>PercPerSec</SHORT-NAME> <!-- OneLine -->
|
||
<DESC> <!-- NewLine -->
|
||
<L-2 L="EN">time-derivative of percent</L-2> <!-- NewLine NormalizeWhitespace -->
|
||
</DESC>
|
||
<DISPLAY-NAME>%/s</DISPLAY-NAME> <!-- OneLine -->
|
||
</UNIT>
|
||
```
|
||
|
||
##### ⌈[TPS_ASR_00015] 空元素以起始-结束标签对表示⌋
|
||
|
||
空元素应序列化为起始/结束标签对,而非"空标签"。⌊(RS_IOAT_00001)
|
||
|
||
**示例 2.7**:空的 `VALUE` 标签应序列化为 `<VALUE></VALUE>` 而非技术上可行的 `<VALUE/>`。
|
||
|
||
##### ⌈[TPS_ASR_00016] 不允许空包装⌋
|
||
|
||
AUTOSAR 模型中部分属性与引用映射到由两层或更多层 XML 元素构成的层次结构。AUTOSAR XML description 不应包含不完整的层次结构。这种不完整层次结构的语义等价于"该值未设置"。
|
||
|
||
此规则适用于符合以下 XML Schema 生产规则 [1] 的属性、聚合与引用:
|
||
|
||
- [TPS_XMLSPR_00008] XML Schema 生产规则:composite property representation (1111)
|
||
- [TPS_XMLSPR_00009] XML Schema 生产规则:composite property representation (1101)
|
||
- [TPS_XMLSPR_00023] XML Schema 生产规则:composite property representation (1100)
|
||
- [TPS_XMLSPR_00022] XML Schema 生产规则:composite property representation (1011)
|
||
- [TPS_XMLSPR_00010] XML Schema 生产规则:composite property representation (1001)
|
||
- [TPS_XMLSPR_00011] XML Schema 生产规则:composite property representation (0111)
|
||
- [TPS_XMLSPR_00012] XML Schema 生产规则:composite property representation (0101)
|
||
- [TPS_XMLSPR_00014] XML Schema 生产规则:composite property representation (0011)
|
||
- [TPS_XMLSPR_00017] XML Schema 生产规则:带角色包装元素的引用属性表示
|
||
|
||
⌊(RS_IOAT_00001, UC_IOAT_00002, UC_IOAT_00008)
|
||
|
||
**Listing 2.3:层次结构的有效示例**
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<AUTOSAR
|
||
xmlns="http://autosar.org/schema/r4.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00044.xsd">
|
||
<!-- .... -->
|
||
</AUTOSAR>
|
||
```
|
||
|
||
**Listing 2.4:层次结构的无效示例**
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<AUTOSAR
|
||
xmlns="http://autosar.org/schema/r4.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00044.xsd">
|
||
<AR-PACKAGES>
|
||
</AR-PACKAGES>
|
||
</AUTOSAR>
|
||
```
|
||
|
||
AUTOSAR 元模型明确定义了某属性所拥有元素的顺序是否相关。属性的顺序在以下情况下相关:
|
||
|
||
- 属性属于混合内容类(具有构造型 `«atpMixed»` 或 `«atpMixedString»` 的类,参见 [11] 中 [TPS_GST_00024]、[TPS_GST_00025]、[TPS_GST_00032]),或
|
||
- 上限多重性 > 1 的属性按 UML 规范 [12] 被标记为 `{ordered}`。
|
||
|
||
根据 [13] 中 [TR_IOAT_00007],工具不应改变其顺序在语义上相关的元素的顺序。然而,若元素顺序无关,工具可以任意顺序序列化元素。这通常在比较 AUTOSAR XML descriptions 时造成无意义差异。为减少这些无意义差异,应应用以下规则。
|
||
|
||
##### ⌈[TPS_ASR_00014] 顺序在语义上无意义时元素的排序⌋
|
||
|
||
上限多重性 > 1 且元素顺序在语义上无意义(未被标记为 `{ordered}` 且非属于具有 `«atpMixed»` 或 `«atpMixedString»` 构造型的类的属性)的属性应使用以下启发式策略进行序列化:
|
||
|
||
1. 若 AUTOSAR 元模型在聚合处定义了 `atp.Splitkey`(参见 [11] 中 [TPS_GST_00050]),则所包含的元素应按通过 `atp.Splitkey` 中所述表达式计算得到的键值按字母升序排序。例如,若 `atp.Splitkey="shortName,variationPoint.shortLabel"`,则元素按以下键排序:`shortName + "," + variationPoint.shortLabel`。
|
||
2. 若未定义 `atp.Splitkey`,则假设用于计算键的表达式为 `shortName,shortLabel,variationPoint.shortLabel`。若 `shortName`、`shortLabel` 或 `variationPoint.shortLabel` 未定义,则其值视为空串。
|
||
|
||
若属性为引用类型,则适用以下规则:
|
||
|
||
1. 应使用所引用目标的绝对 short name 路径,即便其为相对引用。也参见 [11] 中 [TPS_GST_00169] 与 [TPS_GST_00352]。
|
||
|
||
用于排序键计算的策略可能无法为所有元素集生成唯一键。这是已知限制。对此类情况,生产工具应定义自身定制策略以确保元素的确定性序列化。⌊(RS_IOAT_00001)
|
||
|
||
---
|
||
|
||
## 3 术语表(Glossary)
|
||
|
||
> 术语表与《AUTOSAR_RS_FeatureModelExchangeFormat》文档中的对应内容一致。包括:Artifact、AUTOSAR Tool、AUTOSAR Authoring Tool、AUTOSAR Converter Tool、AUTOSAR Definition、AUTOSAR XML Description、AUTOSAR Meta-Model、AUTOSAR Meta-Model Tool、AUTOSAR Model、AUTOSAR Partial Model、AUTOSAR Processor Tool、AUTOSAR Specification Element、AUTOSAR Template、AUTOSAR Validation Tool、AUTOSAR XML Schema、Blueprint、Instance、Life Cycle、Meta-Model、Meta-Data、Model、Partial Model、Pattern、Profile Authoring Support Data、Profile Authoring Tool、Profile Compatibility Checker Tool、Profile Consistency Checker Tool、Property、Prototype、Type、Value、Variability、Variant、Variation Binding、Variation Binding Time、Variation Definition Time、Variation Point。
|
||
|
||
请参见 `AUTOSAR_RS_FeatureModelExchangeFormat.md` 中的术语表条目(中文翻译相同)。
|
||
|
||
---
|
||
|
||
## A 变更历史(Change History)
|
||
|
||
### A.1 R4.3.0 的变更历史
|
||
|
||
#### A.1.1 新增可追溯条目(Added Traceables)
|
||
|
||
| ID | 标题 | R4.2.2 中的来源 |
|
||
|----|------|------------------|
|
||
| [TPS_ASR_00001] | File separation | 扩展自 [TR_IOAT_00010]:AUTOSAR 工具应支持文件集合 |
|
||
| [TPS_ASR_00002] | File Name Extension: .arxml | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00003] | File Name Length | [TR_IOAT_00069] 的子集 |
|
||
| [TPS_ASR_00004] | UTF-8 Character Encoding | 替换 [TR_APRXML_00049] |
|
||
| [TPS_ASR_00005] | UTF-8 Encoding in XML Declaration | 替换 [TR_APRXML_00050] |
|
||
| [TPS_ASR_00006] | Avoid UTF BOM | 替换 [TR_APRXML_00051] |
|
||
| [TPS_ASR_00007] | XML version 1.0 | [TR_IOAT_00012] 的子集 |
|
||
| [TPS_ASR_00008] | XML version 1.0 in XML Declaration | [TR_IOAT_00012] 的子集 |
|
||
| [TPS_ASR_00009] | XML Comments | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00010] | XML Processing Instructions | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00011] | AUTOSAR XML Namespace | 补充 [TR_APRXML_00035];[TR_APRXML_00052] 的子集 |
|
||
| [TPS_ASR_00012] | AUTOSAR Revision Declaration | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00013] | Pattern for AUTOSAR Revision Hint URI | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00014] | Order of Elements | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00015] | Empty elements represented by start-end tag pairs | [TR_IOAT_00062] 的子集 |
|
||
| [TPS_ASR_00016] | No empty wrappers | 替换 [TR_IOAT_00075] |
|
||
| [TPS_ASR_00017] | AUTOSAR XML Namespace Declaration | [TR_APRXML_00052] 的子集 |
|
||
| [TPS_ASR_00018] | No Third-Party XML Namespaces | [1] 章节 "XML description production" 的子集 |
|
||
| [TPS_ASR_00019] | Formating of AUTOSAR XML Descriptions | [TR_IOAT_00062] 的子集 |
|
||
|
||
**表 A.1:4.3.0 中变更的可追溯条目**
|
||
|
||
#### A.1.2 变更的可追溯条目
|
||
|
||
无。
|
||
|
||
#### A.1.3 删除的可追溯条目
|
||
|
||
无。
|
||
|
||
---
|
||
|
||
## B 被提及的类表
|
||
|
||
为完整起见,本章包含一组类表,表示在本文档上下文中提及但并不直接处于描述特定元模型语义范围内的元类。
|
||
|
||
### 表 B.1:VerbatimString
|
||
|
||
| 原生类型 | VerbatimString |
|
||
|---------|---------------|
|
||
| **包** | `M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes` |
|
||
| **说明** | 此原生类型表示需要保留空白的字符串。Tags: `xml.xsd.customType=VERBATIM-STRING`;`xml.xsd.type=string`;`xml.xsd.whiteSpace=preserve` |
|
||
|
||
| 属性 | 数据类型 | 多重性 | 种类 | 说明 |
|
||
|------|---------|--------|------|------|
|
||
| `blueprintValue` | String | 0..1 | attr | 表示文档化在从蓝图派生对象时如何定义值的描述。Tags: `atp.Status=draft`;`xml.attribute=true` |
|
||
| `xmlSpace` | XmlSpaceEnum | 0..1 | attr | 此属性用于发出意图,表明在该元素中应用程序应保留空白。它根据 W3C 声明的 `xml:space` 定义。Tags: `atp.Status=shallBecomeMandatory`;`xml.attribute=true`;`xml.attributeRef=true`;`xml.name=space`;`xml.nsPrefix=xml` |
|
||
|
||
---
|
||
|
||
## 翻译说明
|
||
|
||
- 本文档为 **AUTOSAR ARXML 序列化规则**(TPS_ASR)的完整中文翻译。
|
||
- 所有规范条目 ID(如 `TPS_ASR_00001`–`TPS_ASR_00019`、`TPS_XMLSPR_xxx`、`TPS_GST_xxx`、`TR_IOAT_xxx`、`TR_APRXML_xxx`)保持英文。
|
||
- XML 命名空间、XML 示例、属性名、构造型名、UML 标签(`atpVariation`、`atpSplitable`、`xml.sequenceOffset`、`xml.globalElement` 等)均保留原文。
|
||
- 元模型类名(`AUTOSAR`、`ARObject`、`AdminData`、`ARPackage`、`FileInfoComment`、`DocumentationBlock`、`VerbatimString`、`XmlSpaceEnum`)保持英文。
|
||
- 术语表(与多个文档共用)以引用形式给出,避免重复翻译。
|