EDIFACT
EDIFACT,又名UN/EDIFACT(全称为United Nations/Electronic Data Interchange For Administration, Commerce and Transport)。是由联合国主导开发制定的国际通用EDI标准。
1987年,由于联合国和US/ANSI语法提案相融合,UN/EDIFACT语法规则被国际标准化组织批准为ISO标准,即ISO 9735。
EDIFACT标准为我们提供了:
- 一套语法规则来组织数据
- 一套互动交流协议(I-EDI)
- 一套允许多国和多行业,进行商业电子文件交换的标准消息
举例说明
下列是一个EDIFACT消息的实例,是航空公司返回的航班查询结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
UNA:+.? ' UNB+IATB:1+6XPPC+LHPPC+940101:0950+1' UNH+1+PAORES:93:1:IA' MSG+1:45' IFT+3+XYZCOMPANY AVAILABILITY' ERC+A7V:1:AMD' IFT+3+NO MORE FLIGHTS' ODI' TVL+240493:1000::1220+FRA+JFK+DL+400+C' PDI++C:3+Y::3+F::1' APD+74C:0:::6++++++6X' TVL+240493:1740::2030+JFK+MIA+DL+081+C' PDI++C:4' APD+EM2:0:1630::6+++++++DA' UNT+13+1' UNZ+1+1' |
UNA这个段落是可选的(O)。如果存在,它指定的特殊字符要被用于解释消息的剩余部分。以下是这六个特殊字符:
- 成分(Component)数据元分隔符(上例中为:)
- 元素(Element)分隔符(上例中为+)
- 小数点(Decimal notification)(上例中为.)
- 转义字符(Release Character)(上例子中为?)
- 保留,必须是一个空格
- 段(Segment)结束符(上例中为‘)
上例中UNA段(Segment)的这些特殊字符是默认值。
在一个消息段(Segment)内,成分(Component)数据元分隔符和元素(Element)分隔符是数据元素的“第一层”和“第二层”分隔符。(以下为方便起见下文使用‘+’和‘ : ’代替)。用‘+’分离顶层元素(Element)或复合数据元素(Element),并且用‘ : ’分离嵌套在复合数据元素的第二层数据元素。尾部为空的数据元素(Element)及其之前的分隔符会被省略,用以减少消息的尺寸。
小数点(Decimal Notification)用于将整数从非整数中分离出来。
在正文中如果使用到被当做分隔符或者段结束符的字符,就需要在这些字符之前添加转义字符(Release Character)。类似于正则表达式中的 \ 的用法。
段(Segment)结束符表示一个消息段的结束。
注:在上例中,每部分都加了换行,旨在方便阅读。在EDI数据中,一般不需要换行符,用以减少消息尺寸。
UNH+1+PAORES:93:1:IA’ – 这是消息头部,是每条信息所需要的开始部分。这段代码特指消息的名称和版本。此例中版本是PAORES ver 93.1,它是由组织执行机构(IATA)规定的。
IFT+3+NO MORE FLIGHTS’ – 这是一个段(Segment)。它的名称是“Interactive Free Text(IFT,互动自由文本)”,其内容包含一段简单的文字:“没有航班(NO MORE FLIGHTS)”。
UNT+13+1′ – 这是消息尾部的段(Segment)。它表示着所发送的消息共有13个段(Segment)。
结构
从上面的例子可以看出,EDIFACT数据为层级嵌套结构。其中顶层被称为Interchange,其下层为多个消息(Message)组成的复合消息体。这些消息由多个段(Segment)组成。在段(Segment)之下是元素(Element),其是从联合国数据元目录(UNTDID)衍生出的并被加入到了EDIFACT标准中的。
一个组(Group)或一个段(Segment)可以是强制性的(M)或条件性的(C),且可被重复。如下:
- C99 表示一个组(Group)或一个段(Segment)可以出现0到99次
- M99 标志一个组(Group)或一个段(Segment)必须出现1次,但最多出现99次
一个消息(Message),是由段(Segment)序列或组(Group)序列组成的。一般的,在一个组(Group)内的第一个段(Segment)或组(Group)必须是强制性(M)的。另外,除非实际逻辑所要求,组(Group)序列一般都是条件性(C)的。
1 2 3 4 5 6 7 8 |
服务串通知 UNA 可选的(O) +----- 交换头 UNB 强制性(M) | +--- 功能组头 UNG 条件性(C) | | +- 报文头 UNH 强制性(M) | | | 数据段 | | +- 报文尾 UNT 强制性(M) | +--- 功能组尾 UNE 条件性(C) +----- 交换尾 UNZ 强制性(M) |
参考文献
EDIFACT@wikipedia EDIFACT@百度百科
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用。
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。