国标的《电子文件存储与交换格式 版式文档》中将XML语言中的属性和元素混为一谈,看起来很乱。我自己按XML语法重新整理了一下。
主入口文档就是OFD文档解压后,其中的OFD.xml文档。
OFD根元素
OFD
本身是一个根元素,其下有一个子元素DocBody
DocBody
下面有4个子元素:
DocInfo
:CT_DocInfo类型,文档元数据信息描述;必须。DocRoot
:ST_Loc路径类型,指向文档根节点文档;必须。Versions
:版本描述节点集合,用于定义文件因注释和其他改动产生的版本信息,包含Version
子元素;非必须。Version
:版本描述
Signatures
:ST_Loc路径类型,指向该文档中签名和签章结构;非必须。
OFD
有2个属性:
Version
:一般设为“1.0”DocType
:一般设为"OFD"
OFD根元素的设置如下:
<ofd:OFD xmlnsofd:"http://www.ofdspec.org" DocType="OFD" Version="1.0">
<ofd:DocBody>
<ofd:DocInfo></ofd:DocInfo>
<ofd:DocRoot></ofd:DocRoot>
<ofd:Versions></ofd:Version>
<ofd:Signature></ofd:Signature>
</ofd:DocBody>
</ofd:OFD>
DocInfo与CT_DocInfo
DocInfo
的类型是CT_DocInfo
,是个复杂类型;该类型包含以下子元素:
DocID
:采用UUID算法生成的由32个字符组成的文件表示。每个DocID在文档创建或生成的时候进行分配;非必须。Title
:文档标题,可以和文件名不同;非必须。Author
:文档作者;非必须。Subject
:文档主题;非必须。Abstract
:文档摘要与注释;非必须。CreationDate
:文档创建日期;非必须。ModDate
:文档最近修改日期;非必须。DocUsage
:文档分类;非必须。Cover
:ST_Loc路径类型,指向作为封面的图片文件。Keywords
:关键词集合,包含Keyword
子元素;非必须。Keyword
:关键词
Creator
:创建文档的应用程序;非必须。CreatorVersion
:创建文档的应用程序的版本信息;非必须。CustomDatas
:用户自定义元数据集合,包含CustomData
子元素;非必须。CustomData
:用户自定义元数据,可以指定一个名称及其对应的值,包含Name
属性Name
:用户自定义元数据名称
Versions和Version
Versions包含多个Version子元素;Version元素包含以下属性:
ID
:版本标识;必须。Index
:版本号;必须。Current
:布尔类型,是否是默认版本,默认值为false;非必须。BaseLoc
:ST_Loc路径类型,指向版本描述文件;必须。
OFD.xml文档示例
<?xml version="1.0" encoding="utf-8"?>
<ofd:OFD Version="1.0" DocType="OFD" xmlns:ofd="http://www.ofdspec.org/2016">
<ofd:DocBody>
<ofd:DocInfo>
<ofd:DocID>DocID1</ofd:DocID>
<ofd:Title>Title1</ofd:Title>
<ofd:Author>Author1</ofd:Author>
<ofd:Subject>Subject1</ofd:Subject>
<ofd:Abstract>Abstract1</ofd:Abstract>
<ofd:CreationDate>1900-01-01</ofd:CreationDate>
<ofd:ModDate>1900-01-01</ofd:ModDate>
<ofd:DocUsage>DocUsage1</ofd:DocUsage>
<ofd:Cover>http://uri1</ofd:Cover>
<ofd:Keywords>
<ofd:Keyword>Keyword1</ofd:Keyword>
<ofd:Keyword>Keyword2</ofd:Keyword>
<ofd:Keyword>Keyword3</ofd:Keyword>
</ofd:Keywords>
<ofd:Creator>Creator1</ofd:Creator>
<ofd:CreatorVersion>CreatorVersion1</ofd:CreatorVersion>
<ofd:CustomDatas>
<ofd:CustomData Name="Name1">CustomData1</ofd:CustomData>
<ofd:CustomData Name="Name2">CustomData2</ofd:CustomData>
<ofd:CustomData Name="Name3">CustomData3</ofd:CustomData>
</ofd:CustomDatas>
</ofd:DocInfo>
<ofd:DocRoot>http://uri1</ofd:DocRoot>
<ofd:Versions>
<ofd:Version ID="ID1" Index="1" Current="false" BaseLoc="http://uri1" />
<ofd:Version ID="ID2" Index="-2147483647" Current="true" BaseLoc="http://uri2" />
<ofd:Version ID="ID3" Index="2147483647" Current="false" BaseLoc="http://uri3" />
</ofd:Versions>
<ofd:Signatures>http://uri1</ofd:Signatures>
</ofd:DocBody>
</ofd:OFD>