CN108153521A - 一种xml配置文件的管理方法及其系统 - Google Patents

一种xml配置文件的管理方法及其系统 Download PDF

Info

Publication number
CN108153521A
CN108153521A CN201711329982.9A CN201711329982A CN108153521A CN 108153521 A CN108153521 A CN 108153521A CN 201711329982 A CN201711329982 A CN 201711329982A CN 108153521 A CN108153521 A CN 108153521A
Authority
CN
China
Prior art keywords
configuration file
xml configuration
write
writing
mark
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711329982.9A
Other languages
English (en)
Inventor
栗楠
徐有亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Fanhai Sanjiang Technology Development Co Ltd
Original Assignee
Shenzhen Fanhai Sanjiang Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Fanhai Sanjiang Technology Development Co Ltd filed Critical Shenzhen Fanhai Sanjiang Technology Development Co Ltd
Priority to CN201711329982.9A priority Critical patent/CN108153521A/zh
Publication of CN108153521A publication Critical patent/CN108153521A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种XML配置文件的管理方法及其系统,其中管理方法包括写步骤和读步骤。写步骤主要包括:接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分;接收输入的配置项并将其写入XML配置文件;接收输入的写结束标志并将其写入XML配置文件的写过程标志部分;读步骤主要包括:在打开XML配置文件后读取写过程标志;根据写过程标志判断XML配置文件的完整性。本方法使用写过程标志用于确认配置文件的完整性,新增的写过程标志既不会破坏原XML文件结构,也不会影响程序的运行。采用该方法,可以减少XML配置文件因写入不完整的使用异常。本发明提出的方法简单易行,可以灵活用于各种开发平台和应用场合。

Description

一种XML配置文件的管理方法及其系统
技术领域
本发明涉及一种XML(eXtensible Markup Language,可扩展标记语言)配置文件的管理方法及其系统,尤其是涉及降低XML配置文件发生意外改写、读写时出现的不完整、异常或丢失等异常情况的管理方法及其系统。
背景技术
随着信息技术的应用越来越广泛,标记语言文档的应用也越来越广泛,目前因特网上的大部分网页和文档都是标记语言文档。比如我们常见的表达技术信息的XML(eXtensible Markup Language,可扩展置标语言)文档、表达书籍内容的HTML(HyperTextMarkup Language,超文本标记语言)文档等。
标记语言文档是一种通过标记(Tag)来表达文档的内容信息和外观形式的文档。XML语言主要用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。标记语言文档的功能越来越强大,同时XML文件灵活方便,常用于各种应用程序之间进行数据传输,在信息存储和描述等方面使用也广泛使用,比如嵌入式设备里使用的配置文件便是基于XML格式。
一个XML文件通常包含文件头和文件体两大部分。XML文件体中包含的是XML文件的内容,XML元素是组成XML文件的基本单元。XML元素由开始标记,属性和结束标记组成,如:<hardware>V0.2</hardware>,就是一个元素的例子。
有些嵌入式设备,需要配置的参数较多,而这些参数都是从XML配置文件里面获取到的,如果XML配置文件发生意外改写或者损坏,那么极有可能会导致嵌入式设备运行异常,因此XML配置文件必须是可用的。尤其是,当XML配置文件用于嵌入式设备,由于设备电器特性不稳定,或客户操作不当,例如随机性掉电等情况。如果这时用户刚好在写配置文件,当没有有效的管理方法时,结果很可能导致配置文件为空或者不完整,在后续从不完整的XML配置文件中获取参数时,可能得到不正确的参数,从而造成设备异常。
发明内容
本发明主要解决的技术问题是XML配置文件需要有效的管理方法及其系统装置,避免用户读取到不完整的XML配置文件。
为解决上述技术问题,本发明提出一种XML配置文件的管理方法,包括写步骤和读步骤,写步骤包括:接收写命令;响应于写命令打开待改写的XML配置文件;接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分;接收输入的配置项并将其写入XML配置文件;接收输入的写结束标志并将其写入XML配置文件的写过程标志部分,其中,写开始标志与写结束标志必须不同;读步骤包括:基于读命令打开XML配置文件;在打开XML配置文件后读取写过程标志;根据写过程标志判断XML配置文件的完整性。
另一方面,本发明还提出一种XML配置文件的管理系统,包括写模块和读模块,用于接收输入的写命令的第一单元;用于响应于写命令打开待改写的XML配置文件的第二单元;用于接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分的第三单元;用于接收输入的配置项并将其写入XML配置文件的第四单元;用于接收输入的写结束标志并将其写入XML配置文件的写过程标志部分的第五单元;读模块包括:用于基于读命令打开XML配置文件的第六单元;用于在打开XML配置文件后读取写过程标志的第七单元;用于根据写过程标志判断XML配置文件的完整性的第八单元。
另一方面,本发明还提出一种用于实现XML配置文件管理方法的装置,包括:存储器:用于存储XML配置文件、配置文件的第一备份文件、写过程标志的写开始标志和写结束标志、所述读写XML配置文件步骤的程序;处理器:用于通过执行所述存储器存储的程序以实现如上所述的方法。
另一方面,本发明还提出一种计算机可读存储介质,包括程序,所述程序能够被处理器执行以实现如上所述的XML配置文件的管理方法。
采用本发明提出的XML配置文件的管理方法及其系统,具有以下技术效果:
(1)在XML配置文件中添加一个写过程标志,写过程标志包括写开始标志和写结束标志,写过程标志用于确认配置文件的完整性,新增的写过程标志既不会破坏原XML文件结构,也不会影响程序的运行;
(2)采用所述XML配置文件的读写管理方法,可以有效应用在电气性能不稳定的嵌入式设备场合,减少用户因写入过程不完整造成的使用异常;
(3)本发明提出的XML配置文件的管理方法、系统、装置和计算机可读存储介质,简单易行,可以灵活用于各种开发平台和应用场合,并且不受开发工具和开发环境的限制。
附图说明
图1为一种XML配置文件管理方法中写步骤示意图;
图2为一种XML配置文件管理方法中读步骤示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
在本发明实施例中提出的XML配置文件的管理方法及其系统包括:
实施例一:一种XML配置文件的管理方法,包括写步骤和读步骤,其中写步骤如图1所示,包括:
A100:接收写命令,该写命令可以是通过人机交互输入,也可以是系统程序中的自动写入命令;
A101:响应于写命令打开待改写的XML配置文件;
A102:接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分,该写开始标志可以是系统预设值,也可以是通过人机交互所生成的;
A103:接收输入的配置项并将其写入XML配置文件;该配置项可以是通过人机交互输入,也可以是系统自动识别的配置项内容;
A104:接收输入的写结束标志并将其写入XML配置文件的写过程标志部分,该写结束标志可以是系统预设值,也可以是通过人机交互所生成的。写开始标志必须与写结束标志不同。
其中,添加的写过程标志是所述XML配置文件中包含的一个元素,用于在读步骤中判断XML配置文件的完整性;当读取XML配置文件时,如果读取写过程标志不是写结束标志,则说明XML配置文件不具备完整性,如果读取写过程标志为写结束标志,则说明XML配置文件具备完整性。写过程标志具备XML配置文件中元素的特点,由开始标记,属性和结束标记组成,其中,属性内容用于判断写过程标志是写开始标志还是写结束标志;属性内容由字符或数字组成。
对应于本实施例中的典型XML配置文件如下所示,其中元素:<write_flag>begin</write_flag>为写开始标志,<write_flag>end</write_flag>为写结束标志:
当XML配置文件在写入过程中,程序内容为:
当完成XML配置文件内容的写入时,需要将写过程标志改写为写结束标志:
如图1所示,一种XML配置文件的管理方法,写步骤还包括:在写入XML配置文件时生成一与XML配置文件相同的第一备份文件并保存,具体步骤包括:
A105:XML配置文件写入完成后,生成与所写入的XML配置文件相同的第一备份文件并保存,所述第一备份文件内容包括XML配置文件内容和写结束标志。
如图2所示的读步骤具体内容如下:
A200:基于读命令打开XML配置文件;该读命令可以是人机互动输入,也可以是系统程序自动生成;
A201:打开待读取的XML配置文件;打开文件时会出现文件正常打开和文件发生错误不能打开;
A202:在打开XML配置文件后读取写过程标志;
A203:根据写过程标志判断XML配置文件的完整性。如果读取写过程标志不是写结束标志,包括写过程标志为写开始标志、写过程标志为空和/或写过程标志被改写为不同于写开始标志和写结束标志的其他内容,则说明XML配置文件不完整,不能进行正确的读取操作;如果读取写过程标志为写结束标志,则说明XML配置文件具备完整性,可以继续从XML配置文件中读取所需要的XML文件内容。
读步骤还包括异常情况的处理:
A204:如果打开XML配置文件失败,则可采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。如果配置文件成功打开,同时,读取写过程标志出错,即:如果读取写过程标志不是写结束标志,包括写过程标志为写开始标志、写过程标志为空和/或写过程标志被改写为不同于写开始标志和写结束标志的其他内容,则也可采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件;如果读取写过程标志为写结束标志,则可以顺利从XML配置文件中读取所需要的XML文件内容,因此,写开始标志与写结束标志必须不同。在基于读命令打开XML配置文件时如果XML配置文件为空,则也可以采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。
通过上述方法,在XML配置文件被正常读取使用之前,通过打开成功和写过程标志两个判断条件,可以防止因文件受损、不完整而造成的设备故障,使用XML配置文件的第一备份文件,可以有效的支持文件再次读取,降低设备故障,改善用户使用体验。
实施例二:一种XML配置文件的管理系统,包括写模块和读模块,写模块包括:用于接收输入的写命令的第一单元;用于响应于写命令打开待改写的XML配置文件的第二单元;用于接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分的第三单元;用于接收输入的配置项并将其写入XML配置文件的第四单元;用于接收输入的写结束标志并将其写入XML配置文件的写过程标志部分的第五单元;读模块包括:用于基于读命令打开XML配置文件的第六单元;用于在打开XML配置文件后读取写过程标志的第七单元;用于根据写过程标志判断XML配置文件的完整性的第八单元。
写模块还包括:用于在写入XML配置文件时生成一与XML配置文件相同的第一备份文件并保存的第一备份单元;所述第八单元在根据写过程标志判断XML配置文件的完整性时,如果读取写过程标志不是写结束标志,则采用第一备份文件替换XML配置文件,如果读取写过程标志为写结束标志,则从XML配置文件中读取所需要的XML文件内容。
写模块还包括:所述第六单元还包括如果不能正常打开XML配置文件,则采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。所述第六单元在基于读命令打开XML配置文件时,如果读取写过程标志不是写结束标志,包括写过程标志为写开始标志、写过程标志为空和/或写过程标志被改写为不同于写开始标志和写结束标志的其他内容,则可以采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。
实施例三:一种用于实现XML配置文件管理方法的装置,包括:用于存储XML配置文件、配置文件的第一备份文件、写过程标志的写开始标志和写结束标志、所述读写XML配置文件步骤的程序;处理器:用于通过执行所述存储器存储的程序以实现上述的方法。
实施例五:一种计算机可读存储介质,包括程序,所述程序能够被处理器执行以实现如上所述的XML配置文件的管理方法。
上述实施例还可以扩展至XML文件的其他应用领域,以及XML文件所应用的各种开发平台和开发工具,在此不一一进行列举。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

Claims (10)

1.一种XML配置文件的管理方法,其特征在于,包括写步骤和读步骤,写步骤包括:
接收写命令;
响应于写命令打开待改写的XML配置文件;
接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分;
接收输入的配置项并将其写入XML配置文件;
接收输入的写结束标志并将其写入XML配置文件的写过程标志部分,其中,写开始标志与写结束标志必须不同;
读步骤包括:
基于读命令打开XML配置文件;
在打开XML配置文件后读取写过程标志;
根据写过程标志判断XML配置文件的完整性。
2.如权利要求1所述的方法,其特征在于,写步骤还包括:在写入XML配置文件时生成一与XML配置文件相同的第一备份文件并保存;所述根据写过程标志判断XML配置文件的完整性包括:如果读取写过程标志不是写结束标志,则采用第一备份文件替换XML配置文件,如果读取写过程标志为写结束标志,则从XML配置文件中读取所需要的XML文件内容。
3.如权利要求2所述的方法,其特征在于,所述基于读命令打开XML配置文件还包括:如果不能正常打开XML配置文件,则采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述基于读命令打开XML配置文件还包括:如果读取写过程标志不是写结束标志,包括写过程标志为写开始标志、写过程标志为空和/或写过程标志被改写为不同于写开始标志和写结束标志的其他内容,则采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。
5.一种XML配置文件的管理系统,其特征在于,包括写模块和读模块,写模块包括:
用于接收输入的写命令的第一单元;
用于响应于写命令打开待改写的XML配置文件的第二单元;
用于接收输入的写开始标志并将其写入XML配置文件中的写过程标志部分的第三单元;
用于接收输入的配置项并将其写入XML配置文件的第四单元;
用于接收输入的写结束标志并将其写入XML配置文件的写过程标志部分的第五单元;
读模块包括:
用于基于读命令打开XML配置文件的第六单元;
用于在打开XML配置文件后读取写过程标志的第七单元;
用于根据写过程标志判断XML配置文件的完整性的第八单元。
6.如权利要求5所述的系统,其特征在于,所述写模块还包括:用于在写入XML配置文件时生成一与XML配置文件相同的第一备份文件并保存的第一备份单元;所述第八单元在根据写过程标志判断XML配置文件的完整性时,如果读取写过程标志不是写结束标志,则采用第一备份文件替换XML配置文件,如果读取写过程标志为写结束标志,则从XML配置文件中读取所需要的XML文件内容。
7.如权利要求6所述的系统,其特征在于,所述第六单元还包括如果不能正常打开XML配置文件,则采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。
8.如权利要求5-7中任一项所述的系统,其特征在于,所述第六单元在基于读命令打开XML配置文件时,如果读取写过程标志不是写结束标志,包括写过程标志为写开始标志、写过程标志为空和/或写过程标志被改写为不同于写开始标志和写结束标志的其他内容,则采用第一备份文件替换XML配置文件,然后再基于读命令打开XML配置文件。
9.一种用于实现XML配置文件管理方法的装置,其特征在于包括:
存储器:用于存储XML配置文件、配置文件的第一备份文件、写过程标志的写开始标志和写结束标志、所述读写XML配置文件步骤的程序;
处理器:用于通过执行所述存储器存储的程序以实现如权利要求1-4中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行以实现如权利要求1-4中任一项所述的方法。
CN201711329982.9A 2017-12-13 2017-12-13 一种xml配置文件的管理方法及其系统 Pending CN108153521A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711329982.9A CN108153521A (zh) 2017-12-13 2017-12-13 一种xml配置文件的管理方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711329982.9A CN108153521A (zh) 2017-12-13 2017-12-13 一种xml配置文件的管理方法及其系统

Publications (1)

Publication Number Publication Date
CN108153521A true CN108153521A (zh) 2018-06-12

Family

ID=62466154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711329982.9A Pending CN108153521A (zh) 2017-12-13 2017-12-13 一种xml配置文件的管理方法及其系统

Country Status (1)

Country Link
CN (1) CN108153521A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306416A (zh) * 2020-11-04 2021-02-02 福州汇思博信息技术有限公司 一种自动读写nv参数的方法及终端
CN114936387A (zh) * 2022-07-25 2022-08-23 深圳市明源云科技有限公司 文本文件读取方法、写入方法、电子设备及可读存储介质
CN116090466A (zh) * 2022-12-16 2023-05-09 上海美嘉林软件科技股份有限公司 技术信息文档语义单元构建方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185277B1 (en) * 2003-10-24 2007-02-27 Microsoft Corporation Method and apparatus for merging electronic documents containing markup language
CN104158692A (zh) * 2014-08-25 2014-11-19 烽火通信科技股份有限公司 基于xml实现家庭网关数据配置管理的方法
CN106919424A (zh) * 2017-02-27 2017-07-04 烽火通信科技股份有限公司 一种pon网络的onu中配置文件管理系统及管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185277B1 (en) * 2003-10-24 2007-02-27 Microsoft Corporation Method and apparatus for merging electronic documents containing markup language
CN104158692A (zh) * 2014-08-25 2014-11-19 烽火通信科技股份有限公司 基于xml实现家庭网关数据配置管理的方法
CN106919424A (zh) * 2017-02-27 2017-07-04 烽火通信科技股份有限公司 一种pon网络的onu中配置文件管理系统及管理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306416A (zh) * 2020-11-04 2021-02-02 福州汇思博信息技术有限公司 一种自动读写nv参数的方法及终端
CN112306416B (zh) * 2020-11-04 2022-09-27 福州汇思博信息技术有限公司 一种自动读写nv参数的方法及终端
CN114936387A (zh) * 2022-07-25 2022-08-23 深圳市明源云科技有限公司 文本文件读取方法、写入方法、电子设备及可读存储介质
CN116090466A (zh) * 2022-12-16 2023-05-09 上海美嘉林软件科技股份有限公司 技术信息文档语义单元构建方法及系统

Similar Documents

Publication Publication Date Title
CN108153521A (zh) 一种xml配置文件的管理方法及其系统
CN104899269A (zh) 一种访问网址链接的方法及装置
CN104598408B (zh) 一种一次性可编程只读存储器数据烧录方法
CN109992274A (zh) 烧录设备、烧录程序的方法和可读存储介质
CN101957725B (zh) 一种管理计算机外接设备的方法
CN105138340A (zh) 一种Native与Web页面的交互方法和系统
CN108572830A (zh) 一种嵌入式系统及其引导程序的升级方法、系统
CN110413230A (zh) 一种嵌入式系统构建方法及存储介质
CN109783355A (zh) 页面元素获取方法、系统、计算机设备及可读存储介质
CN105138337B (zh) 一种插件适配方法及插件适配装置
WO2023092942A1 (zh) 数据存储方法、装置、电子设备及可读存储介质
US8839251B2 (en) Automating sequential cross-application data transfer operations
CN110289039B (zh) 一种eMMC的调试方法和装置
US8924876B1 (en) File-driven drag and drop
US9195411B2 (en) SD card memory tool
CN103995717B (zh) 一种嵌入式设备软件升级的方法
CN102073554B (zh) 一种文件异常关闭的恢复方法和装置
CN102073553A (zh) 一种文件恢复的方法和装置
Farrell Web Components in Action
US8386932B2 (en) Method for displaying document-based help with the help system for a processing application
CN103136234B (zh) 处理数据的方法和装置
US11157590B2 (en) Script logging for markup language elements
CN111223540A (zh) 一种本地应用程序嵌合到web应用中的方法及系统
CN107506271A (zh) 一种测试方法及装置
CN109144948A (zh) 应用文件定位的方法、装置、电子设备和存储器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180612

RJ01 Rejection of invention patent application after publication