CN111444697A - 一种基于动态模板获取规范化文档的方法及装置 - Google Patents
一种基于动态模板获取规范化文档的方法及装置 Download PDFInfo
- Publication number
- CN111444697A CN111444697A CN202010229288.5A CN202010229288A CN111444697A CN 111444697 A CN111444697 A CN 111444697A CN 202010229288 A CN202010229288 A CN 202010229288A CN 111444697 A CN111444697 A CN 111444697A
- Authority
- CN
- China
- Prior art keywords
- node
- text
- paragraph
- template
- tree
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于动态模板的规范化文档生成方法及装置,包括:接收用户在图数据库中录入的动态模板树,并基于图数据库中的动态模板树,获取与动态模板树对应的模板结点信息和大纲信息;模板结点信息包括:与动态模板树中的第一子结点、第三子结点、第四子结点所对应的文本;大纲信息包括:与纲目结构树中根结点对应的文档总标题和与纲目结构树中根结点的子结点对应的标题之间的纲目关系;基于模板结点信息、大纲信息、预先设定的模板记录信息以及预先设定的数据路径信息,获取文档文本;其中,预先设定的数据路径信息为:与所述任一第二子结点所对应的文本;模板记录信息包括:纲目结构树中的每一子结点和任一段落结点之间的对应关系。
Description
技术领域
本发明涉及一种文档编辑技术领域,尤其涉及一种基于动态模板获取规范化文档的方法及装置。
背景技术
随着工业生产和信息管理水平不断提高,数据处理的工作量越来越大,需要绘制大量的数据处理文档。从规范化文档的表现形式角度看,一般文档由文字、图形、表格等形式组成;从规范化文档的内容角度看,文档包含封面、目录、正文和封底,正文由多个段落构成。
不同生产单位、不同领域、不同对象、不同时间段的文档模板不尽相同,面对繁杂的模板及其各种可能的要求,人工处理耗时费力、无法确保不存在遗漏或错误。现有的技术中提前设计好报告模板,将数据处理方法封装为数据占位符、书签或特定的关键字插入到模板中程序需要填写的特定位置。生成文档时,根据用户操作调用相应的数据处理方法进行信息录入和检索,替换报告模板中的数据占位符、书签、或特定的关键字,从而生成最终文档。
但是现有的技术中需预先定制出文档模板,其纲目结构、段落内容和格式细节大多固定,灵活性不够。利用模板生成文档时,不能根据不同数据进行模板结构与内容调整,也不涉及模板变更后的数据交互。只适用于基于内容、结构和格式固定模板的文档生成,并不适用于基于模板树和动态数据的文档生成。
发明内容
(一)要解决的技术问题
为了解决现有技术中纲目结构、段落内容和格式细节固定,灵活性不够,利用模板生成文档时,不能根据不同数据进行模板结构与内容调整,也不涉及模板变更后的数据交互的问题,本发明提供一种基于动态模板获取规范化文档的方法及装置。
(二)技术方案
为了达到上述目的,本发明提供一种基于动态模板获取规范化文档的方法,包括:
A1、接收用户在图数据库中录入的动态模板树,并基于所述图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息和大纲信息;
所述动态模板树包括:以预先设定的文档中的总标题为根结点、以所述预先设定的文档中任一段落的标题为子结点的纲目结构树和段落结构树;其中,所述段落结构树中具有多层结点;所述多层结点中的第一层的结点包括以所述预先设定的文档中任一段落为结点的根结点;其中所述多层结点中的第二层结点为所述根结点的子结点,包括以所述段落中第一预设规则的文本为结点的第一子结点和/或以段落中第二预设规则的文本为结点的第二子结点和/或以段落中第三预设规则的文本为结点的第三子结点和/或以所述段落中第四预设规则的文本为结点的第四子结点;其中所述多层结点中除第一层、第二层、之外的任一层结点为所述任一层的上一层结点中的第三子结点的子结点或第四子结点的子结点;
其中,所述第三子结点的子结点或第四子结点的子结点包括:第一子结点和/或第二子结点和/或第三子结点和/或第四子结点;
所述纲目结构树中的任一结点均包括:以第一预设规则文本为结点的第一子结点和/或第二预设规则文本为结点的第二子结点;
所述模板结点信息包括:与所述动态模板树中的第一子结点、第三子结点、第四子结点所对应的文本;
所述大纲信息包括:与所述纲目结构树中根结点对应的文档总标题和与所述纲目结构树中根结点的子结点对应的标题之间的纲目关系;
A2、基于所述模板结点信息、大纲信息、预先设定的模板记录信息以及预先设定的数据路径信息,获取文档文本;
其中,所述预先设定的数据路径信息为:与所述任一第二子结点所对应的文本数据;
模板记录信息包括:纲目结构树中的每一子结点和任一段落结点之间的对应关系。
优选的,所述步骤A2包括:
A2-1、根据所述模板结点信息、模板记录信息、预先设定数据路径信息,获取与所述任一段落结构树对应的段落文本;
A2-2、根据所述大纲信息、预先设定数据路径信息,获取与所述纲目结构树中任一结点所对应的标题文本;
A2-3、根据与所述任一段落结构树对应的段落文本、与所述纲目结构树中任一结点所对应的标题文本、模板记录信息,确定与所述任一段落文本对应的标题文本;
A2-4、基于所述段落文本和与所述段落文本对应的标题文本,获取文档文本。
优选的,所述步骤A2-1包括:
A2-1-1、基于所述模板结点信息,获取所述模板结点信息中任一段落树中的第一结点、第三结点、第四结点所对应的文本和所述段落树中的第二结点;
A2-1-2、基于所述模板结点信息中任一段落树中的第一结点、第三结点、第四结点所对应的文本,确定与所述任一段落树对应的第一文本;
A2-1-3、基于所述任一段落树对应的第一文本、所述段落树中的第二结点以及预先设定的数据路径信息,确定与所述任一段落结点对应的段落文本。
优选的,所述步骤A2-2包括:
A2-2-1、基于所述大纲信息,获取所述大纲信息中大纲结构树中的任一结点的第一子结点所对应的文本和所述大纲结构树中的第二子结点;
A2-2-2、基于所述大纲信息中大纲结构树中的任一结点的第一子结点所对应的文本、所述大纲结构树中的任一结点的第二子结点以及预先设定的数据路径信息,确定与所述大纲结构树中任一结点对应的标题文本。
优选的,所述步骤A2之后还包括:
A3、基于预先设定的样式信息,确定所述文档文本中标题文本的字体、字号、字色和所述文档文本中段落文本的字体、字号、字色;
其中,所述预先设定的样式信息包括:字体类型、字号类型、字色类型。
优选的,所述基于图数据库中的动态模板树,获取与所述动态模板树对应的大纲信息,包括:
对所述图数据库中的大纲结构树按照预先设定的第一遍历方法进行遍历,获取大纲信息。
优选的,所述基于图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息,包括:
对所述图数据库中的任一段落结构树按照预先设定的第一遍历方法进行遍历,获取模板结点信息。
优选的,所述预先设定的第一遍历方法,包括:
从所述大纲结构树或段落结构树的根结点开始遍历,逐层进行遍历处理;针对每一层的结点按照预先设定的顺序进行遍历,若遍历的当前的结点没有子结点时,则遍历完当前的结点后进行下一顺序结点的遍历;若遍历的当前的结点有子结点时,则遍历完当前的结点后,遍历当前结点的所有子结点。
一种基于动态模板的规范化文档生成的装置,所述基于动态模板的规范化文档生成的装置存储计算机指令;所述计算机指令使所述获取词项文档段落关联权重的装置执行如上述任一项所述的基于动态模板的规范化文档生成方法。
一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述任一项所述的基于动态模板的规范化文档生成方法。
(三)有益效果
本发明的有益效果是:由于本发明中的预先设定的动态模板树中各个结点代表着规范文档中相应的文本,同时动态模板树中各个结点还有多个结点属性,因此本发明能够根据预先设定的动态模板树中代表着规范文档的纲目、标题、段落等结点进行自动抓取和整合结点的数据,进而生成规范文档,从而提高了工作效率和数据的准确性。
附图说明
图1为本发明的一种基于动态模板获取规范化文档的方法流程图;
图2为本发明实施例一中的段落为预先设定的第一文本时的段落结构树;
图3为本发明实施例一中的段落为图时的段落结构树;
图4为本发明实施例一中的段落为表(1)时的段落结构树;
图5为实施例二中根据本发明的基于动态模板获取规范化文档的方法实际应用中的流程示意图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
实施例一
参见附图1、本实施例一中的基于动态模板获取规范化文档的方法,包括:
A1、接收用户在图数据库中录入的动态模板树,并基于所述图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息和大纲信息;
所述动态模板树包括:以预先设定的文档中的总标题为根结点、以所述预先设定的文档中任一段落的标题为子结点的纲目结构树和段落结构树;其中,所述段落结构树中具有多层结点;所述多层结点中的第一层的结点包括以所述预先设定的文档中任一段落为结点的根结点;其中所述多层结点中的第二层结点为所述根结点的子结点,包括以所述段落中第一预设规则的文本为结点的第一子结点和/或以段落中第二预设规则的文本为结点的第二子结点和/或以段落中第三预设规则的文本为结点的第三子结点和/或以所述段落中第四预设规则的文本为结点的第四子结点;其中所述多层结点中除第一层、第二层、之外的任一层结点为所述任一层的上一层结点中的第三子结点的子结点或第四子结点的子结点。
其中,所述第三子结点的子结点或第四子结点的子结点包括:第一子结点和/或第二子结点和/或第三子结点和/或第四子结点。
举例说明,参见图2,若预先设定的文档中的段落为第一文本时,第一文本的内容为“项目区地处黔北高原北部,场区属溶蚀-构造中低山地貌单元。{【场地地势平坦,自然坡度0~8°。】【场地为斜坡地形,XXX岸为陡坡,坡度25°~60°;XXX岸为悬崖,坡度60°~90°】}场区地面高程介于500m~702m之间,相对高度差约为202m。”则整个此段落的文本为一段落结构树的根结点。
且此段落的文本中“项目区地处...,场区属...地貌单元。场区地面高程介于...之间,相对高度差约为...。”具有固定不能变的格式的文本为根结点的第一子结点;
此段落的文本中“...黔北高原北部,...溶蚀-构造中低山...。...500m~702m...,...202m。”具有可变得数据的文本为根结点的第二子结点;
此段落文本中“{【场地地势平坦,自然坡度0~8°。】【场地为斜坡地形,XXX岸为陡坡,坡度25°~60°;XXX岸为悬崖,坡度60°~90°】}”具有两种情况(一种是场地地势平坦的情况,一种是场地为斜坡的情况)的文本为根结点的第三子结点;
此段落的文本中“【场地地势平坦,自然坡度0~8°。】”两种情况下的一种情况的文本为第四子结点,且第四子结点为第三子结点的子结点。
此段落的文本中“【场地为斜坡地形,XXX岸为陡坡,坡度25°~60°;XXX岸为悬崖,坡度60°~90°】”两种情况下的一种情况的文本为第四子结点,且第四子结点为第三子结点的子结点。
“【场地地势平坦,自然坡度0~8°。】”中具有固定不能变的格式的文本“场地地势平坦,自然坡度...”为第四子结点的子结点,且也为第一子结点。
“【场地地势平坦,自然坡度0~8°。】”中具有可变的数据文本“0~8°”为第四子结点的子结点,且也为第二子结点。
“【场地为斜坡地形,XXX岸为陡坡,坡度25°~60°;XXX岸为悬崖,坡度60°~90°】”中具有固定不能变的格式的文本“场地为..地形,...岸为..,坡度...;...岸为..,坡度...”为第四子结点的子结点,且也为第一子结点。
“【场地为斜坡地形,XXX岸为陡坡,坡度25°~60°;XXX岸为悬崖,坡度60°~90°】”中具有可变的数据的文本“...斜坡...,...陡坡,...25°~60°;...悬崖,...60°~90°”为第四子结点的子结点,且也为第二子结点。
参见图3,若预先设定的文档中的段落为图时,则此图为段落结构树的根结点。则图中的固定不能变的格式的图片为根结点的第一子结点;图中的具有可变的数据的文本,如图的说明文字为根结点的第二子结点。
参见图4,若预先设定的文档中的段落为表(1)时,则整个表(1)为根结点。表(1)中具有不可变的文本的表头的部分“线位、设计标准、桥面净宽”为第一个第四子结点。且第四子结点为根结点的子结点。
其中,表(1)中“线位”为第一个第四子结点的子结点,且也为第一子结点。表(1)中“设计标准”为第一个第四子结点的子结点,且也为第一子结点。表(1)中“桥面净宽”为第一个第四子结点的子结点,且也为第一子结点。
表(1)中具有可以改变的表内容部分“主线XX匝道、双向六车道高速公路、1×净16.75m”为第二个第四子结点,且第二个第四子结点为根结点的子结点。
其中,表(1)中“主线XX匝道”为第二个第四子结点的子结点,且也为第二子结点。
表(1)中“双向六车道高速公路”为第二个第四子结点的子结点,且也为第二子结点。
表(1)中“1×净16.75m”为第二个子结点的子结点,且也为第二子结点。
表(1)
线位 | 设计标准 | 桥面净宽 |
主线XX匝道 | 双向六车道高速公路 | 1×净16.75m |
所述纲目结构树中的任一结点均包括:以第一预设规则文本为结点的第一子结点和/或第二预设规则文本为结点的第二子结点;
所述模板结点信息包括:与所述动态模板树中的第一子结点、第三子结点、第四子结点所对应的文本;
所述大纲信息包括:与所述纲目结构树中根结点对应的文档总标题和与所述纲目结构树中根结点的子结点对应的标题之间的纲目关系;
A2、基于所述模板结点信息、大纲信息、预先设定的模板记录信息以及预先设定的数据路径信息,获取文档文本;
其中,所述预先设定的数据路径信息为:与所述任一第二子结点所对应的文本数据;
模板记录信息包括:纲目结构树中的每一子结点和任一段落结点之间的对应关系。
本实施例中,所述步骤A2包括:
A2-1、根据所述模板结点信息、模板记录信息、预先设定数据路径信息,获取与所述任一段落结构树对应的段落文本;
A2-2、根据所述大纲信息、预先设定数据路径信息,获取与所述纲目结构树中任一结点所对应的标题文本;
A2-3、根据与所述任一段落结构树对应的段落文本、与所述纲目结构树中任一结点所对应的标题文本、模板记录信息,确定与所述任一段落文本对应的标题文本;
A2-4、基于所述段落文本和与所述段落文本对应的标题文本,获取文档文本。
本实施例中,所述步骤A2-1包括:
A2-1-1、基于所述模板结点信息,获取所述模板结点信息中任一段落树中的第一结点、第三结点、第四结点所对应的文本和所述段落树中的第二结点;
A2-1-2、基于所述模板结点信息中任一段落树中的第一结点、第三结点、第四结点所对应的文本,确定与所述任一段落树对应的第一文本;
A2-1-3、基于所述任一段落树对应的第一文本、所述段落树中的第二结点以及预先设定的数据路径信息,确定与所述任一段落结点对应的段落文本。
本实施例中,所述步骤A2-2包括:
A2-2-1、基于所述大纲信息,获取所述大纲信息中大纲结构树中的任一结点的第一子结点所对应的文本和所述大纲结构树中的第二子结点;
A2-2-2、基于所述大纲信息中大纲结构树中的任一结点的第一子结点所对应的文本、所述大纲结构树中的任一结点的第二子结点以及预先设定的数据路径信息,确定与所述大纲结构树中任一结点对应的标题文本。
本实施例中,所述步骤A2之后还包括:
A3、基于预先设定的段落样式信息,确定所述文档文本中标题文本的字体、字号、字色和所述文档文本中段落文本的字体、字号、字色。
其中,所述预先设定的段落样式信息包括:字体类型、字号类型、字色类型。
本实施例中优选的,所述基于图数据库中的动态模板树,获取与所述动态模板树对应的大纲信息,包括:
对所述图数据库中的大纲结构树按照预先设定的第一遍历方法进行遍历,获取大纲信息。
本实施例中优选的,所述基于图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息,包括:
对所述图数据库中的任一段落结构树按照预先设定的第一遍历方法进行遍历,获取模板结点信息。
本实施例中,所述预先设定的第一遍历方法,包括:
从所述大纲结构树或段落结构树的根结点开始遍历,逐层进行遍历处理;针对每一层的结点按照预先设定的顺序进行遍历,若遍历的当前的结点没有子结点时,则遍历完当前的结点后进行下一顺序结点的遍历;若遍历的当前的结点有子结点时,则遍历完当前的结点后,遍历当前结点的所有子结点。
本实施例中使规范化文档模板的纲目结构、段内行文和格式细节随着文档数据灵活变化,进而生成文档。本实施例中预先设定的动态模板树存储文档模板可解决章节、段落和格式细节根据动态数据变化而灵活变化与调整问题。
实施例二
为了更好的说明本实施例的方法,本实施例二中的模板记录信息存储在模板记录表t_tempData中,大纲信息存储在大纲表t_outline中,数据路径信息存储在数据路径表t_dymaticData中,段落样式信息存储在段落样式表t_paraStyle中,模板结点信息存储在模板结点表t_recordNeo4j中。
参见附图1,本实施例二中的基于动态模板获取规范化文档的方法包括:
B1、接收用户在图数据库中录入的动态模板树,并基于所述图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息和大纲信息;
其中,所述动态模板树包括:纲目结构树和段落结构树的树结点和关系在图数据库graphDB中以结点和边的形式存储,其中树结点内容表现为结点的属性信息,关系表现为边的属性信息。
若段落内容为文本时,则段落结构树包括:文本段落结点paratextNode(nName,nParent,ptType,ptSource,ptText,ptFormat),其中nName用来标识结点名称,nParent用来标识父结点名称,ptType表示结点文本类型,结点文本类型分为预先设定的第一规则文本、预先设定的第二规则文本、预先设定的第三规则文本、预先设定的第四规则文本,ptSource表示预先设定的第二规则文本的数据来源,ptText表示结点文本,第一结点的ptText为预先设定的第一规则文本,在本实施例中预先设定的第一规则文本为模板的固定文本,第二结点的ptText预先设定的第二规则文本,本实施例中预先设定的第二规则文本与ptSource指定的源文本对应,第三结点的ptText为预先设定的第三规则文本,本实施例中预先设定的第三规则文本为选择条件,ptFormat表示文本格式,结点标签为TP。
若段落内容为图时,则段落结构树包括:图结点gNode(nName,nParent,gtType,gtSource,gtText,gtFormat)的形式存储,gtType表示图结点文本类型,结点类型分为第一结点和第二结点,gtSource表示第二结点的数据来源,gtText表示结点文本,第一结点的gtText为模板固定文本,第二结点结点的gtText与gtSource指定的源文本对应,gtFormat表示图格式,结点标签为G。
若段落内容为表时,则段落结构树包括:表结点tNode(nName,nParent,tType,tSource,tText,tFormat,tRow,tColumn,tnRow,tnColumn)的形式存储,tType表示表结点文本类型,结点类型分为第一结点、第二结点以及第四结点,tSource表示第二结点的数据来源,tText表示结点文本,第一结点的tText为预先设定的第一规则文本,本实施例中为模板固定文本,第二结点的tText与tSource指定的源文本对应,tFormat表示单元格格式,tRow表示单元格行号,tColumn表示单元格列号,tnRow表示单元格所占行数,tnColumn表示单元格所占列数,结点标签为T。第二结点文本用于数据库SQL语句的片段或集合中来查询动态数据。
其中,模板结点信息存储在模板结点表t_recordNeo4j中,包括结点名name,结点标签label,结点文本text,结点类型type,父结点名parent,同一级中的上一个结点名prevnode,下一级结点数目childname,表结点的行号row,表结点的列号column,表结点的行数numrow,表结点的列数numcolumn,根结点名treeroot。
其中,大纲信息存储在大纲表t_outline中,包括:大纲结点名name,结点文本text,结点类型type,结点类型有第一结点和第二结点,父结点名parent,同一级中的上一个结点名prevnode,下一级结点数目childname,大纲树根结点名treeroot,大纲表记录预先设定的文档中的纲目关系,其根结点对应模板总标题,其他结点对应模板各级标题。
B2、基于所述模板结点信息、大纲信息、预先设定的模板记录信息以及预先设定的数据路径信息,获取文档文本;
其中,所述预先设定的数据路径信息为:与所述任一第二子结点所对应的文本数据;
在本实施中的具体应用中,预先设定的数据路径存储在数据路径表t_dymaticData中,数据路径表t_dymaticData中包括:结点名nodename,tablename为表名,字段名fieldname为,数据路径表记录动态结点的文本数据存储路径。
模板记录信息包括:纲目结构树中的每一子结点和任一段落结点之间的对应关系。
本实施例的具体应用中,模板记录信息存储在模板记录表t_tempData中,包括:模板编号templatenumber,模板包含的子树名(树根结点名)childname,子树的父结点名parentname。、
本实施例中,所述步骤A2包括:
A2-1、根据所述模板结点信息、模板记录信息、预先设定数据路径信息,获取与所述任一段落结构树对应的段落文本。
在本实施例的实际应用中。参见图5,步骤A2-1包括:
(1)进入系统初始化,获取文档模板编号tempNumber,定义动态结点数据获取函数dymatic_data,函数的输入参数为动态结点名name、表记录标识vid,输出为动态结点文本字符串vtext,函数的实现过程见步骤1-1)~1-6));之后进入步骤2)。
(1-1)获取输入参数动态结点名name、表记录标识vid,初始化输出参数vtext为空字符串,进入步骤1-2)。
(1-2)判断表记录标识vid是否为空,如为空,进入步骤1-3);如不为空,进入步骤1-4)。
(1-3)对数据路径表t_dymaticData按数据路径.结点名等于动态结点名name进行查询,将动态SQL语句“SELECT@a=**FROM##”中“**”用第一条查询记录中fieldname字段值替换,“##”用第一条查询记录中tablename字段值替换,进入步骤1-5)。
(1-4)对数据路径表t_dymaticData按数据路径.结点名等于动态结点名name进行查询,将动态SQL语句“SELECT@a=**FROM##WHEREid=&&”中“**”用第一条查询记录中fieldname字段值替换,“##”用第一条查询记录中tablename字段值替换,“&&”用表记录标识vid值替换,进入步骤1-5)。
(1-5)执行替换后的动态SQL语句,将查询到的值赋给动态结点文本vtext,进入步骤1-6)。
(1-6)将vtext作为函数返回值输出。
(2)定义格式信息获取与编码函数style_format,函数的输入参数为段落结点名paraName、模板编号tempNumber、内容类型contType、段落文本rawText,输出为格式文本styleText,函数的实现过程见步骤2-1)~2-8));之后进入3)。
(2-1)获取输入参数段落结点名paraName、模板编号tempNumber、内容类型contType、段落文本rawText,初始化输出参数styleText和中转格式tempFormat为空字符串,进入2-2)。
(2-2)对段落样式表t_paraStyle按段落样式.根结点名等于段落结构树的根结点名paraName且段落样式.模板编号等于模板编号tempNumber且段落样式.内容类型等于内容类型contType进行查询并获取查询记录record,进入步骤2-3)。
(2-3)判断查询记录record中bold字段值是否等于“1”,如为等于,则文本加粗,给格式文本styleText赋值:将textbf变量值赋值给格式文本styleText,然后将格式文本styleText变量值中的“*”用rawText变量值替换,进入步骤2-4);如不为等于,则文本不加粗,给格式文本styleText赋值:将rawText变量值赋值给格式文本styleText,进入步骤2-4)。
(2-4)判断查询记录record中italic字段值是否等于“1”,如为等于,则文本为斜体,给格式文本styleText赋值:将textit变量值赋值给中转格式tempFormat,用styleText变量值替换tempFormat变量值中的“*”,再将替换后的tempFormat变量值赋值给格式文本styleText,进入步骤2-5);如不为等于,则文本不为斜体,进入步骤2-5)。
(2-5)判断查询记录record中color字段值是否为空,如不为空,则指定文本颜色,给格式文本styleText赋值:将textcolor变量值赋值给中转格式tempFormat,用color字段值替换tempFormat变量值中的“#”,用styleText变量值替换tempFormat变量值中的“*”,再将替换后的tempFormat变量值赋值给格式文本styleText,进入步骤2-6);如为空,则文本为默认颜色,进入步骤2-6)。
(2-6)判断查询记录record中size字段值是否为空,如不为空,则指定文本大小,给格式文本styleText赋值:将zihao变量值赋值给中转格式tempFormat,用size字段值替换tempFormat变量值中的“#”,用styleText变量值替换tempFormat变量值中的“*”,再将替换后的tempFormat变量值赋值给格式文本styleText,进入步骤2-7);如为空,则文本按默认大小,进入步骤2-7)。
(2-7)判断查询记录record中font字段值是否为空,如不为空,则指定文本字体,给格式文本styleText赋值:将ziti变量值赋值给中转格式tempFormat,用font字段值替换tempFormat变量值中的“#”,用styleText变量值替换tempFormat变量值中的“*”,再将替换后的tempFormat变量值赋值给格式文本styleText,进入步骤2-8);如为空,则文本为默认字体,不做处理,进入步骤2-8)。
(2-8)将styleText作为函数返回值输出。
(3)创建段落内容表来存储各段落文本:判断数据库中是否存在段落内容表t_paragraphText,如为存在,则删除表t_paragraphText,进入步骤3-1);如不为存在,进入步骤3-1);之后进入步骤4)。
(3-1)创建段落内容表t_paragraphText,表中包含字段:id、段落文本paragraph_text、段落名paragraph_name和模板编号templatenumber,字段id为整型且自增,增量为1,其余字段为字符型。
(4)初始化段落文本paraText为空字符串,对模板记录表t_tempData按模板记录.模板编号等于当前模板编号值进行查询并获取查询记录pararecord,然后获取pararecord中的第一条记录,进入步骤4-1)~4-14)进行处理,直到处理完pararecord中的所有记录。
(4-1)获取当前pararecord记录中的childname字段值,对模板结点表t_recordNeo4j按模板结点.结点名等于childname字段值进行查询,然后判断pararecord查询记录中的label字段值:当值为“TP”,则当前结点为文本段落结构树的根结点,进入步骤4-2);当值为“G”,则当前结点为图结构树的根结点,进入步骤4-3);当值为“T”,则当前结点为表结构树的根结点,进入步骤4-4);之后进入步骤4-14)。
(4-2)对模板结点表t_recordNeo4j按模板结点.父结点名与childname字段值相等且模板结点.结点类型等于“第二结点”进行查询并获取查询记录firstrecord,获取firstrecord第一条记录中的name字段值,然后判断name字段值是否为空,如不为空,则第一层包含动态结点,进入步骤4-2-1),如为空,进入步骤4-2-2)。
(4-2-1)对数据路径表t_dymaticData按数据路径结点名nodename与记录firstrecord中name字段值相等进行查询并获取查询记录dymrecord中tablename字段值,然后将动态SQL语句“SELECT id FROM**”中“**”用tablename字段值替换并执行动态SQL语句获取查询记录idrecord,然后获取idrecord中的第一条记录,进入步骤4-2-1-1)~4-2-1-3)进行处理,直到处理完idrecord中的所有记录。
(4-2-1-1)对模板结点表t_recordNeo4j按模板结点.父结点名与childname字段值相等进行查询并获取查询记录noderecord,然后获取noderecord中的第一条记录,进入步骤4-2-1-1-1)~4-2-1-1-3)进行处理,直到处理完noderecord中的所有记录。
(4-2-1-1-1)初始化过渡结点transName为空字符串,获取当前记录的name字段值,对模板结点表t_recordNeo4j按模板结点.结点名name字段值与当前记录的name字段值相等进行查询并获取查询记录namerecord中的type和text字段值,判断记录namerecord中的type字段值:如为“预先设定的第一规则文本”时,则当前结点为第一结点,给段落文本paraText赋值:将记录namerecord中的text字段值添加到段落文本paraText值字符串后;如为“预先设定的第二规则文本”时,则当前结点为第二结点,以当前记录的name字段值和当前idrecord记录的id值为参数再调用函数dymatic_data,将函数返回值添加到段落文本paraText值字符串后;如为“预先设定的第三规则文本”时,则当前结点为第三结点,对模板结点表t_recordNeo4j按模板结点.结点类型等于“第四结点”且模板结点.父结点名parent与当前记录的name字段值相等进行查询并获取查询记录mutilrecord,然后获取mutilrecord中的第一条记录,进入步骤4-2-1-1-1-1)~4-2-1-1-1-2)进行处理,直到处理完mutilrecord中的所有记录,之后进入步骤4-2-1-1-2)。
(4-2-1-1-1-1)获取当前记录mutilrecord中的name字段值,对模板结点表t_recordNeo4j按模板结点.结点类型等于“第二结点”且模板结点.父结点名与当前记录mutilrecord中的name字段值相等进行查询并获取查询记录namemutilrecord中的name字段值,进入步骤4-2-1-1-1-2)。
(4-2-1-1-1-2)以查询记录namemutilrecord中的name字段值和空字符串为参数再调用函数dymatic_data,判断函数返回值是否为空字符串,如不为空,将查询记录namemutilrecord中的name字段值赋值给过渡结点transName;如为空,则不做处理。
(4-2-1-1-2)判断第四结点transName是否等于空字符串,如不为空,则表示选择结果不为空,进入步骤4-2-1-1-3);如为空,则不作处理。
(4-2-1-1-3)对模板结点表t_recordNeo4j按模板结点.父结点名与第四结点transName值相等进行查询并获取查询记录transrecord,然后获取transrecord中的第一条记录,进入步骤4-2-1-1-3-1)~4-2-1-1-3-2)进行处理,直到处理完transrecord中的所有记录。
(4-2-1-1-3-1)获取当前记录中的name字段值,对模板结点表t_recordNeo4j按模板结点.结点名name与当前记录中的name字段值相等进行查询并获取查询记录currenttransrecord,进入步骤4-2-1-1-3-2)。
(4-2-1-1-3-2)判断记录currenttransrecord中的type字段值:如为预先设定的第一规则文本时,则当前结点为第一结点,给段落文本paraText赋值:将记录namerecord中的text字段值添加到段落文本paraText值字符串后;如为预先设定的第二规则文本时,则当前结点为第二结点,以当前记录的name字段值和当前idrecord记录的id值为参数再调用函数dymatic_data,将函数返回值添加到段落文本paraText值字符串后。
(4-2-1-2)判断段落文本paraText是否为空字符串,如不为空,以当前pararecord记录中的childname字段值、模板编号tempNumber、空字符串和段落文本paraText为参数再调用函数style_format,并获取函数返回值formatparaText,进入步骤4-2-1-3);如为空,则不做处理。
(4-2-1-3)给段落文本paraText赋值:在段落文本paraText后依次添加latex_parindent值、函数返回值formatparaText和latex_return值。
(4-2-2)对模板结点表t_recordNeo4j按模板结点.父结点名与childname字段值相等进行查询并获取查询记录noderecord1,然后获取noderecord1中的第一条记录,进入步骤4-2-2-1)~4-2-2-3)进行处理,直到处理完noderecord1中的所有记录,之后进入4-2-3)。
(4-2-2-1)初始化第四结点transName1为空字符串,获取当前noderecord1记录的name字段值,对模板结点表t_recordNeo4j按模板结点.结点名name字段值与当前记录的name字段值相等进行查询并获取查询记录namerecord1中的type和text字段值,判断记录namerecord1中的type字段值:如为预先设定的第一规则文本时,则当前结点为固定结点,给段落文本paraText赋值:将记录namerecord1中的text字段值添加到段落文本paraText值字符串后;如为预先设定的第三规则文本时,则当前结点为第三结点,对模板结点表t_recordNeo4j按模板结点.结点类型等于“第四结点”且模板结点.父结点名parent与当前记录的name字段值相等进行查询并获取查询记录mutilrecord1,然后获取mutilrecord1中的第一条记录,进入步骤4-2-2-1-1)~4-2-2-1-2)进行处理,直到处理完mutilrecord1中的所有记录,之后进入步骤4-2-2-2)。
(4-2-2-1-1)获取当前记录mutilrecord1中的name字段值,对模板结点表t_recordNeo4j按模板结点.结点类型等于“第二结点”且模板结点.父结点名与当前记录mutilrecord1中的name字段值相等进行查询并获取查询记录namemutilrecord1中的name字段值,进入步骤4-2-2-1-2)。
(4-2-2-1-2)以查询记录namemutilrecord1中的name字段值和空字符串为参数再调用函数dymatic_data,判断函数返回值是否为空字符串,如不为空,将查询记录namemutilrecord1中的name字段值赋值给第四结点transName1;如为空,则不做处理。
(4-2-2-2)判断第四结点transName1是否等于空字符串,如不为空,则表示选择结果不为空,进入步骤4-2-2-3);如为空,则不作处理。
(4-2-2-3)对模板结点表t_recordNeo4j按模板结点.父结点名与过渡结点transName1值相等进行查询并获取查询记录transrecord1,然后获取transrecord1中的第一条记录,进入步骤4-2-2-3-1)~4-2-2-3-2)进行处理,直到处理完transrecord1中的所有记录。
(4-2-2-3-1)获取当前记录中的name字段值,对模板结点表t_recordNeo4j按模板结点.结点名name与当前记录中的name字段值相等进行查询并获取查询记录currenttransrecord1,进入步骤4-2-2-3-2)。
(4-2-2-3-2)判断记录currenttransrecord1中的type字段值:如为“预先设定的第一规则文本”,则当前结点为第一结点,给段落文本paraText赋值:将记录namerecord1中的text字段值添加到段落文本paraText值字符串后;如为“预先设定的第二规则文本”,当前结点为第二结点,以当前记录的name字段值和空字符串为参数再调用函数dymatic_data,将函数返回值添加到段落文本paraText值字符串后。
(4-2-3)判断段落文本paraText是否为空字符串,如不为空,以当前pararecord记录中的childname字段值、模板编号tempNumber、空字符串和段落文本paraText为参数再调用函数style_format,并获取函数返回值formatparaText1,进入步骤4-2-4);如为空,则不做处理。
(4-2-4)给段落文本paraText赋值:在段落文本paraText后依次添加latex_parindent值、函数返回值formatparaText1和latex_return值。
(4-3)对模板结点表t_recordNeo4j按模板结点.父结点名与当前pararecord记录中的childname字段值相等且模板结点.结点类型为“第二结点”进行查询并获取查询记录pathrecord,对模板结点表t_recordNeo4j按模板结点.父结点名与当前pararecord记录中的childname字段值相等且模板结点.结点类型为“第一结点”进行查询并获取查询记录captionrecord,获取pathrecord第一和三条记录中的name和text字段值,并判断pathrecord第一条记录中的text字段值是否为空,如为空,则当前结点的图片数据不存在,将段落文本paraText赋值为空;如不为空,则需生成图片,给段落文本paraText赋值:captionrecord记录中的text字段值后接字符串“:”,再后接pathrecord三条记录中的text字段值,进入步骤4-4)。
(4-4)以当前pararecord记录中的childname字段值、模板编号tempNumber、空字符串和段落文本paraText为参数再调用函数style_format,并获取函数返回值tpparaText,然后给段落文本paraText赋值:将latex_graph变量值赋值给段落文本paraText,然后用获取pathrecord第一条记录中的text字段值替换paraText变量值中的“*”,用tpparaText值替换paraText变量值中的“#”。
(4-5)创建表格跨行记录表t_cline:判断数据库中是否存在表格跨行记录表t_cline,如为存在,则删除表t_cline,进入步骤4-5-1);如不为存在,进入步骤4-5-1);之后进入步骤4-6)。
(4-5-1)创建表t_cline,表t_cline中包含字符串字段:行号rownumber和跨行colspan。
(4-6)初始化中转格式tempFormat为空字符串,初始化整型变量:ci,并赋值为1,对模板结点表t_recordNeo4j按模板结点.结点名与当前pararecord记录中的childname字段值相等进行查询并获取查询记录bgrecord,给段落文本paraText赋值:将begintable变量值赋值给段落文本paraText,将begincenter和tabcaption变量值依次paraText变量值后,用bgrecord记录中的text字段值替换paraText变量值中的“*”,进入步骤4-7)。
(4-7)初始化字符串变量:列格式定义c,并赋值为“|”,判断ci变量值是否小于等于bgrecord记录中的numcolumn字段整型值,如为小于等于,进入步骤4-7-1)~4-7-2));如不为小于等于,进入步骤4-8)。
(4-7-1)给变量c赋值:在c变量值后添加字符串“c|”,进入步骤4-7-2)。
(4-7-2)ci变量值加一,进入4-7)。
(4-8)给段落文本paraText赋值:将begintabular变量值赋给段落文本paraText,用c变量值替换paraText变量值中的“*”,再将hline变量值添加到在paraText变量值后,进入步骤4-9)。
(4-9)初始化整型变量:i,并赋值为1,对模板结点表t_recordNeo4j按模板结点.父结点名与当前pararecord记录中的childname字段值相等且模板结点.结点文本等于表头的文本进行查询并获取查询记录headrecord,判断i变量值是否小于等于headrecord记录中的numrow字段整型值,如为小于等于,进入步骤4-9-1)~4-9-10));如不为小于等于,进入步骤4-10)。
(4-9-1)初始化行文本returnbg_row为空字符串,对模板结点表t_recordNeo4j按模板结点.父结点名与headrecord记录中的name字段值相等且模板结点.结点类型等于“第四结点”进行查询并获取查询htransrecord,然后获取htransrecord中的第一条记录,进入步骤4-9-1-1)~4-9-1-12)进行处理,直到按记录中name字段值的正序依次处理完htransrecord中的所有记录;之后进入步骤4-9-2)。
(4-9-1-1)获取htransrecord当前记录中的name字段值,对模板结点表t_recordNeo4j按模板结点.父结点名parent与htransrecord当前记录中的name字段值相等且模板结点.表头文本所占行数值以i变量值后接字符串“-”为开头进行查询并获取查询记录hcrecord,判断hcrecord中的numrow字段值是否包含“-”,如为包含,则当前单元格跨行,进入步骤4-9-1-2);如不为包含,则当前单元格不跨行,进入步骤4-9-1-5)。
(4-9-1-2)初始化整型变量:numrow_span,并给变量赋值:获取hcrecord记录中的numrow字段值中字符“-”后字段整型值减去字符“-”前字段整型值,再加一。之后进入步骤4-9-1-3)。
(4-9-1-3)以当前pararecord记录中的childname字段值、模板编号tempNumber、字符串“表头的文本”和hcrecord记录中的text字段值为参数再调用函数style_format并获取函数返回值字符串style_row,进入步骤4-9-1-4);
(4-9-1-4)给行文本returnbg_row赋值:将multirow变量值赋值给中转格式tempFormat,用numrow_span变量值替换tempFormat变量值中的“**”,用style_row变量值替换tempFormat变量值中的“#”,将blank变量值添加到tempFormat值后,再将tempFormat变量值添加到行文本returnbg_row值后,进入步骤4-9-1-5)。
(4-9-1-5)判断hcrecord中的numcolumn字段值是否包含“-”,如为包含,则当前单元格跨列,进入步骤4-9-1-6);如不为包含,则当前单元格不跨列,进入步骤4-9-1-10)。
(4-9-1-6)初始化整型变量:numcolumn_span,并给变量赋值:获取hcrecord记录中的numcolumn字段值中字符“-”后字段整型值减去字符“-”前字段整型值,再加一。之后进入步骤4-9-1-7)。
(4-9-1-7)以当前pararecord记录中的childname字段值、模板编号tempNumber、字符串“表头的文本”和hcrecord记录中的text字段值为参数再调用函数style_format并获取函数返回值字符串style_column,进入步骤4-9-1-8)。
(4-9-1-8)给行文本returnbg_row赋值:将multirow变量值赋值给中转格式tempFormat,用numcolumn_span变量值替换tempFormat变量值中的“*”,用style_column变量值替换tempFormat变量值中的“#”,将blank变量值添加到tempFormat值后,再将tempFormat变量值添加到行文本returnbg_row值后,进入步骤4-9-1-9)。
(4-9-1-9)将i和hcrecord中的numcolumn字段值插入到表t_cline且分别对应字段rownumber和colspan,进入步骤4-9-1-10)。
(4-9-1-10)判断hcrecord中的numrow和numcolumn字段值是否都不包含字符串“-”,如为都不包含,进入步骤4-9-1-11);如不为都不包含,则不做处理。
(4-9-1-11)以当前pararecord记录中的childname字段值、模板编号tempNumber、字符串“表头”和hcrecord记录中的text字段值为参数再调用函数style_format并获取函数返回值字符串style_text,进入步骤4-9-1-12)。
(4-9-1-12)给行文本returnbg_row赋值:将style_text和blank变量值依次添加到returnbg_row变量值后。
(4-9-2)判断i变量值是否等于1,如不为等于,则可能存在跨列问题,进入步骤4-9-3);如为等于,进入步骤4-9-7)。
(4-9-3)初始化整型变量:li、ri、lc和rc,初始化字符串变量:l_null和r_null,且都赋值为空,给li和ri变量都赋值为1,对表t_cline按表格跨行记录.跨行等于i变量值减一进行查询并获取查询记录clinerecord,给lc变量赋值:获取clinerecord记录中的colspan字段值中字符“-”前的字段整型值并减一,给rc变量赋值:headrecord记录中的numrow字段整型值减clinerecord记录中的colspan字段值中字符“-”后的字段整型值,进入步骤4-9-4)。
(4-9-4)判断li变量值是否小于等于lc变量值,如为小于等于,进入步骤4-9-4-1);如不为小于等于,进入步骤4-9-5)。
(4-9-4-1)给l_null变量赋值:将blank变量值添加到l_null变量值后,li变量值加一,进入步骤4-9-4)。
(4-9-5)判断ri变量值是否小于等于rc变量值,如为小于等于,进入步骤4-9-5-1);如不为小于等于,进入步骤4-9-6)。
(4-9-5-1)给r_null变量赋值:将blank变量值添加到r_null变量值后,ri变量值加一,进入步骤4-9-5)。
(4-9-6)给行文本returnbg_row赋值:将l_null变量值添加到returnbg_row变量值最前边,再将r_null变量值添加到returnbg_row变量值最后边,之后进入步骤4-9-7)。
(4-9-7)给段落文本paraText赋值:将returnbg_row变量值添加到paraText变量值后,用doubleslash变量值替换paraText变量值的最右侧字符;之后进入步骤4-9-8)。
(4-9-8)判断i变量值是否等于1,如为等于,则需判断跨列情况,进入步骤4-9-9);如不为等于,进入步骤4-9-10)。
(4-9-9)对表格跨行记录表t_cline按表格跨行记录,行号与i变量值相等进行查询并获取查询记录oneclinerecord,获取oneclinerecord第一条记录,进入步骤4-9-9-1)进行处理,直到处理完oneclinerecord中的所有记录;之后进入步骤4-9-10)。
(4-9-9-1)获取当前记录的colspan字段值,给段落文本paraText赋值:将cline变量值赋值给中转格式tempFormat,用当前记录的colspan字段值替换tempFormat变量值中的“*”,再将tempFormat变量值添加到paraText值后。
(4-9-10)i变量值加一。
(4-10)给段落文本paraText赋值:将hline变量值添加到paraText变量值后;进入步骤4-11)。
(4-11)对模板结点表t_recordNeo4j按模板结点.父结点名与当前pararecord记录中的childname字段值相等且模板结点.结点文本等于“表体”进行查询并获取查询记录bodyrecord,再对数据路径表t_dymaticData中数据路径.结点名与bodyrecord第一条记录中的name值相等进行查询并获取查询记录vtablerecord,进入步骤4-12);
(4-12)将动态SQL语句“SELECT id FROM**”中“**”用vtablerecord记录中的tablename字段值替换并执行动态SQL语句获取查询记录bidrecord,然后获取bidrecord中的第一条记录,进入步骤4-12-1)~4-12-2)进行处理,直到处理完bidrecord中的所有记录;之后进入步骤4-13)。
(4-12-1)初始化表格行文本linetext为空字符串,对模板结点表t_recordNeo4j按模板结点.结点文本等于“预先设定的第二规则文本”且模板结点.父结点名等于模板结点.结点名且模板结点.根结点名等于当前pararecord记录中的childname字段值且模板结点.结点文本等于“表体”进行查询并获取记录bnrecord,获取bnrecord第一条记录,进入步骤4-12-1-1)进行处理,直到处理完bnrecord中的所有记录;之后进入步骤4-12-2)。
(4-12-1-1)以当前bnrecord记录中的name字段值和当前bidrecord记录中的id值为参数再调用函数dymatic_data,并获取函数返回值vbodytext,判断vbodytext值是否为空字符串,如为空,则当前结点单元无文本,给表体行文本linetext赋值:将blank变量值添加到linetext变量值后;如不为空,则当前结点单元有文本,给表体行文本linetext赋值:将vbodytext和blank变量值依次添加到linetext变量值后。
(4-12-2)给段落文本paraText赋值:将linetext变量值添加到paraText变量值后,用doubleslash变量值替换paraText变量值的最右侧字符,然后将hline变量值添加到paraText变量值后;
(4-13)给段落文本paraText赋值:将endtabular、endenter和endtable变量值依次添加到paraText变量值后。
(4-14)将段落文本paraText、当前pararecord记录中的childname字段值和模板编号tempNumber变量值插入到段落内容表t_paragraphText且分别对应字段paragraph_text、paragraph_name和templatenumber。
A2-2、根据所述大纲信息、预先设定数据路径信息,获取与所述纲目结构树中任一结点所对应的标题文本。
A2-3、根据与所述任一段落结构树对应的段落文本、与所述纲目结构树中任一结点所对应的标题文本、模板记录信息,确定与所述任一段落文本对应的标题文本。
在本实施例的具体应用中,包括:(1)创建纲目实例表t_instance:判断数据库中是否存在纲目实例表t_instance,如为存在,则删除表t_instance,进入步骤1-1);如不为存在,进入步骤1-1)。
(1-1)创建表t_instance,表中包含字段:id、结点名name、结点文本text、结点类型type、父结点parent、上一个同级结点prevnode、下一级结点数目和根结点treeroot,id为自增整型字段,其他为字符串字段,进入步骤2)。
(2)对模板记录表t_tempData、大纲表t_outline、段落内容表t_paragraphText按大纲,结点名等于模板记录.父结点名且模板记录.模板编号等于字符串“1001”且模板记录子树名等于段落内容.段落名且段落内容.段落文本不等于空字符串进行联合查询,将大纲表t_outline中满足条件的不重复记录插入到纲目实例表t_instance,各记录属性与临时表字段值一一对应,进入步骤3)。
(3)查询纲目实例表t_instance中所有parent字段值并将满足条件的不重复记录插入到纲目实例表t_instance中并删除表重复记录且只保留一条。
A2-4、基于所述段落文本和与所述段落文本对应的标题文本,获取文档文本。
参见图5,在本实施例的具体应用中A2-4包括:文档各部分融合与文档生成过程包括标题文本生成、标题格式编码;根据纲目实例查询、整合标题与段落文档,并添加格式编码来实现整个文档文本生成。
其中格式编码为表(2)格式编码字符说明
具体过程如下:
(1)定义单个标题文本获取函数single_title,函数的输入参数为标题结点名titleName,输出为单个标题singleTitle,函数的实现过程见步骤1-1)~1-3));之后进入步骤2)。
(1-1)获取输入参数标题结点名titleName,初始化输出参数singleTitle为空字符串,进入步骤1-2)。
(1-2)对大纲表t_outline按大纲.结点名与标题结点名titleName值相等进行查询并获取查询记录outlinerecord,然后判断outlinerecord记录中的type字段值:当值为预先设定的第一规则文本时,标题文本固定,将outlinerecord记录中的text字段值赋值给singleTitle变量;当值为预先设定的第二规则文本时,以标题结点名titleName和空字符串为参数再调用函数dymatic_data,获取函数返回值并赋值给singleTitle变量,进入步骤1-3)。
(1-3)将singleTitle作为函数返回值输出。
(2)定义总标题文本获取函数report_title,输出为文档总标题reportTitle,函数的实现过程见步骤2-1)~2-3));之后进入步骤3)。
(2-1)对大纲表t_outline按大纲.父结点名等于空字符串进行查询并获取查询记录oprecord,然后以oprecord记录中的name字段值为参数再调用单个标题文本获取函数single_title,并获取函数返回值titleText,进入步骤2-2)。
(2-2)判断titleText值是否等于空字符串,如为等于,则文档无总标题,给reportTitle变量赋值:将title变量值赋值给reportTitle变量,删除reportTitle变量值中的“*”;如不为等于,给reportTitle变量赋值:将title变量值赋值给reportTitle变量,用titleText变量值替换reportTitle变量值中的“*”。
(2-3)将reportTitle作为函数返回值输出。
(3)初始化文档正文bodyText为空字符串,对纲目实例表t_instance按纲目实例.父结点与纲目实例.根结点名相等进行查询并获取查询记录fnrecord,获取fnrecord的第一条记录,进入步骤3-1)~3-2)进行处理,直到按fnrecord记录中name字段值的正序依次处理完fnrecord中的所有记录;之后进入步骤4)。
(3-1)获取当前fnrecord记录的name字段,以当前fnrecord记录的name字段值为参数再调用函数single_title,并获取函数返回值ftext,然后以当前fnrecord记录的name字段值、模板编号tempNumber、空字符串和ftext变量值为参数再调用函数style_format,并获取函数返回值ftext_output,接着给文档正文bodyText赋值:将section变量值赋值给bodyText变量,然后将bodyText变量值中的“*”用ftext_output变量值替换;之后进入步骤3-2)。
(3-2)对纲目实例表t_instance按纲目实例.父结点与当前fnrecord记录的name字段相等进行查询并获取查询记录snrecord,snrecord的第一条记录,进入步骤3-2-1)~3-2-5)进行处理,直到按snrecord记录中name字段值的正序依次处理完snrecord中的所有记录。
(3-2-1)获取当前snrecord记录的name字段,以当前snrecord记录的name字段值为参数再调用函数single_title,并获取函数返回值stext,然后以当前snrecord记录的name字段值、模板编号tempNumber、空字符串和stext变量值为参数再调用函数style_format,并获取函数返回值stext_output,接着给文档正文bodyText赋值:将subsection变量值赋值给bodyText变量,然后用stext_output变量值替换bodyText变量值中的“*”;之后进入步骤3-2-2)。
(3-2-2)对段落内容表t_paragraphText和模板记录表t_tempData按段落内容.段落名等于模板记录.子树名且模板记录.父结点名等于当前snrecord记录的name字段值进行联合查询并获取查询记录parasrecord,进入步骤3-2-3)。
(3-2-3)获取parasrecord记录中的paragraph_text字段值,并判断paragraph_text字段值是否等于空字符串,如不为等于,进入步骤3-2-4);如为等于,进入步骤3-2-5)。
(3-2-4)获取parasrecord中的第一条记录,进入步骤3-2-4-1)~3-2-4-3)进行处理,直到处理完parasrecord中的所有记录。
(3-2-4-1)初始化格式段落文本paraSText为空字符串,获取当前parasrecord记录中的paragraph_text和paragraph_name字段值,以当前parasrecord记录中的paragraph_name字段值、模板编号tempNumber和当前parasrecord记录中的paragraph_text为参数再调用函数style_format,并获取函数返回值parasout,进入步骤3-2-4-2)。
(3-2-4-2)给格式段落文本paraSText赋值:在paraSText值字符串后依次添加latex_parindent值、parasout变量值和latex_return值,进入步骤3-2-4-3)。
(3-2-4-3)给文档正文bodyText赋值:将paraSText变量值添加到bodyText变量值后。
(3-2-5)对纲目实例表t_instance按纲目实例.父结点与当前snrecord记录的name字段值相等进行查询并获取查询记录tnrecord,获取tnrecord的第一条记录,进入步骤3-2-5-1)~3-2-5-4)进行处理,直到按tnrecord记录中name字段值的正序依次处理完tnrecord中的所有记录。
(3-2-5-1)获取当前tnrecord记录的name字段,以当前tnrecord记录的name字段为参数再调用函数single_title,并获取函数返回值ttext,然后以当前tnrecord记录的name字段值、模板编号tempNumber、空字符串和ttext变量值为参数再调用函数style_format,并获取函数返回值ttext_output,接着给文档正文bodyText赋值:将subsubsection变量值赋值给bodyText变量,然后用ttext_output变量值替换bodyText变量值中的“*”;之后进入步骤3-2-5-2)。
(3-2-5-2)对段落内容表t_paragraphText和模板记录表t_tempData按段落内容.段落名等于模板记录.子树名且模板记录.父结点名等于当前tnrecord记录的name字段值进行联合查询并获取查询记录paratrecord,进入步骤3-2-5-3)。
(3-2-5-3)获取paratrecord记录中的paragraph_text字段值,并判断paragraph_text字段值是否等于空字符串,如不为等于,进入步骤3-2-5-4);如为等于,则不做处理。
(3-2-5-4)获取paratrecord中的第一条记录,进入步骤3-2-5-4-1)~3-2-5-4-3)进行处理,直到处理完paratrecord中的所有记录。
(3-2-5-4-1)初始化格式段落文本paraTText为空字符串,获取当前paratrecord记录中的paragraph_text和paragraph_name字段值,以当前paratrecord记录中的paragraph_name字段值、模板编号tempNumber和当前paratrecord记录中的paragraph_text为参数再调用函数style_format,并获取函数返回值paratout,进入步骤3-2-5-4-2)。
(3-2-5-4-2)给格式段落文本paraTText赋值:在paraSText值字符串后依次添加latex_parindent值、paratout变量值和latex_return值,进入步骤3-2-5-4-3)。
(3-2-5-4-3)给文档正文bodyText赋值:将paraTText变量值添加到bodyText变量值后。
(4)初始化文档文本docText为空字符串,调用总标题文本获取函数report_title,获取函数返回值docTitle,进入步骤5)。
(5)给文档文本docText赋值:将headerText、docTitle、beginDocument、makeTitle、defaultFormat、bodyText和endDocument变量值依次添加到docText变量值后,进入步骤6)。
(6)装置程序对文档文本docText字符串进行反转义,然后在latex环境中编译转义结果并生成pdf格式文档,进入步骤7)。
(7)输出pdf格式文档。
本实施例中,用动态模板结构树存储文档模板可解决章节、段落和格式细节根据动态数据变化而灵活变化与调整问题。自动抓取数据并根据数据确定生成文档的纲目结构、段落内容和格式;模板组装高效,同一数据能采用不同模板来生成不同文档,能更好地满足文档需求;本实施例获取文档的方法具有很强的通用性,适用于多个领域的文档生成,尤其适用于地质信息文档领域。
以上结合具体实施例描述了本发明的技术原理,这些描述只是为了解释本发明的原理,不能以任何方式解释为对本发明保护范围的限制。基于此处解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
Claims (10)
1.一种基于动态模板的规范化文档生成方法,其特征在于,包括步骤:
A1、接收用户在图数据库中录入的动态模板树,并基于所述图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息和大纲信息;
所述动态模板树包括:以预先设定的文档中的总标题为根结点、以所述预先设定的文档中任一段落的标题为子结点的纲目结构树和段落结构树;其中,所述段落结构树中具有多层结点;所述多层结点中的第一层的结点包括以所述预先设定的文档中任一段落为结点的根结点;其中所述多层结点中的第二层结点为所述根结点的子结点,包括以所述段落中第一预设规则的文本为结点的第一子结点和/或以段落中第二预设规则的文本为结点的第二子结点和/或以段落中第三预设规则的文本为结点的第三子结点和/或以所述段落中第四预设规则的文本为结点的第四子结点;其中所述多层结点中除第一层、第二层、之外的任一层结点为所述任一层的上一层结点中的第三子结点的子结点或第四子结点的子结点;
其中,所述第三子结点的子结点或第四子结点的子结点包括:第一子结点和/或第二子结点和/或第三子结点和/或第四子结点;
所述纲目结构树中的任一结点均包括:以第一预设规则文本为结点的第一子结点和/或第二预设规则文本为结点的第二子结点;
所述模板结点信息包括:与所述动态模板树中的第一子结点、第三子结点、第四子结点所对应的文本;
所述大纲信息包括:与所述纲目结构树中根结点对应的文档总标题和与所述纲目结构树中根结点的子结点对应的标题之间的纲目关系;
A2、基于所述模板结点信息、大纲信息、预先设定的模板记录信息以及预先设定的数据路径信息,获取文档文本;
其中,所述预先设定的数据路径信息为:与所述任一第二子结点所对应的文本数据;
模板记录信息包括:纲目结构树中的每一子结点和任一段落结点之间的对应关系。
2.根据权利要求1所述的方法,其特征在于,所述步骤A2包括:
A2-1、根据所述模板结点信息、模板记录信息、预先设定数据路径信息,获取与所述任一段落结构树对应的段落文本;
A2-2、根据所述大纲信息、预先设定数据路径信息,获取与所述纲目结构树中任一结点所对应的标题文本;
A2-3、根据与所述任一段落结构树对应的段落文本、与所述纲目结构树中任一结点所对应的标题文本、模板记录信息,确定与所述任一段落文本对应的标题文本;
A2-4、基于所述段落文本和与所述段落文本对应的标题文本,获取文档文本。
3.根据权利要求2所述的方法,其特征在于,所述步骤A2-1包括:
A2-1-1、基于所述模板结点信息,获取所述模板结点信息中任一段落树中的第一结点、第三结点、第四结点所对应的文本和所述段落树中的第二结点;
A2-1-2、基于所述模板结点信息中任一段落树中的第一结点、第三结点、第四结点所对应的文本,确定与所述任一段落树对应的第一文本;
A2-1-3、基于所述任一段落树对应的第一文本、所述段落树中的第二结点以及预先设定的数据路径信息,确定与所述任一段落结点对应的段落文本。
4.根据权利要求3所述的方法,其特征在于,所述步骤A2-2包括:
A2-2-1、基于所述大纲信息,获取所述大纲信息中大纲结构树中的任一结点的第一子结点所对应的文本和所述大纲结构树中的第二子结点;
A2-2-2、基于所述大纲信息中大纲结构树中的任一结点的第一子结点所对应的文本、所述大纲结构树中的任一结点的第二子结点以及预先设定的数据路径信息,确定与所述大纲结构树中任一结点对应的标题文本。
5.根据权利要求3所述的方法,其特征在于,所述步骤A2之后还包括:
A3、基于预先设定的样式信息,确定所述文档文本中标题文本的字体、字号、字色和所述文档文本中段落文本的字体、字号、字色;
其中,所述预先设定的样式信息包括:字体类型、字号类型、字色类型。
6.根据权利要求1所述的方法,其特征在于,所述基于图数据库中的动态模板树,获取与所述动态模板树对应的大纲信息,包括:
对所述图数据库中的大纲结构树按照预先设定的第一遍历方法进行遍历,获取大纲信息。
7.根据权利要求1所述的方法,其特征在于,所述基于图数据库中的动态模板树,获取与所述动态模板树对应的模板结点信息,包括:
对所述图数据库中的任一段落结构树按照预先设定的第一遍历方法进行遍历,获取模板结点信息。
8.根据权利要求6或7所述的方法,其特征在于,所述预先设定的第一遍历方法,包括:
从所述大纲结构树或段落结构树的根结点开始遍历,逐层进行遍历处理;针对每一层的结点按照预先设定的顺序进行遍历,若遍历的当前的结点没有子结点时,则遍历完当前的结点后进行下一顺序结点的遍历;若遍历的当前的结点有子结点时,则遍历完当前的结点后,遍历当前结点的所有子结点。
9.一种基于动态模板的规范化文档生成的装置,其特征在于,所述基于动态模板的规范化文档生成的装置存储计算机指令;所述计算机指令使所述获取词项文档段落关联权重的装置执行如权利要求1至8任一项所述的基于动态模板的规范化文档生成方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1-8任一项所述的基于动态模板的规范化文档生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229288.5A CN111444697B (zh) | 2020-03-27 | 2020-03-27 | 一种基于动态模板获取规范化文档的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229288.5A CN111444697B (zh) | 2020-03-27 | 2020-03-27 | 一种基于动态模板获取规范化文档的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444697A true CN111444697A (zh) | 2020-07-24 |
CN111444697B CN111444697B (zh) | 2022-04-26 |
Family
ID=71652541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010229288.5A Active CN111444697B (zh) | 2020-03-27 | 2020-03-27 | 一种基于动态模板获取规范化文档的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444697B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454430B1 (en) * | 2004-06-18 | 2008-11-18 | Glenbrook Networks | System and method for facts extraction and domain knowledge repository creation from unstructured and semi-structured documents |
CN101944162A (zh) * | 2010-09-02 | 2011-01-12 | 江苏大学 | 一种基于xml文档的电子病历模板系统及电子病历模板制作方法 |
CN102439598A (zh) * | 2011-09-15 | 2012-05-02 | 华为技术有限公司 | 一种文档模板管理方法和系统 |
CN103309849A (zh) * | 2013-03-28 | 2013-09-18 | 大连理工大学 | 一种基于OpenXML的docx文档创建和修改方法 |
US20160026730A1 (en) * | 2014-07-23 | 2016-01-28 | Russell Hasan | Html5-based document format with parts architecture |
US20160110313A1 (en) * | 2014-03-14 | 2016-04-21 | Citta LLC | System and method of content creation, versioning and publishing |
US20180081868A1 (en) * | 2016-09-21 | 2018-03-22 | FinancialForce.com, Inc. | Dynamic intermediate templates for richly formatted output |
CN108763171A (zh) * | 2018-04-20 | 2018-11-06 | 中国船舶重工集团公司第七〇九研究所 | 一种基于格式模板的文档自动化生成方法 |
CN110750973A (zh) * | 2019-09-02 | 2020-02-04 | 北京东软望海科技有限公司 | 动态模板配置方法及系统 |
-
2020
- 2020-03-27 CN CN202010229288.5A patent/CN111444697B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454430B1 (en) * | 2004-06-18 | 2008-11-18 | Glenbrook Networks | System and method for facts extraction and domain knowledge repository creation from unstructured and semi-structured documents |
CN101944162A (zh) * | 2010-09-02 | 2011-01-12 | 江苏大学 | 一种基于xml文档的电子病历模板系统及电子病历模板制作方法 |
CN102439598A (zh) * | 2011-09-15 | 2012-05-02 | 华为技术有限公司 | 一种文档模板管理方法和系统 |
CN103309849A (zh) * | 2013-03-28 | 2013-09-18 | 大连理工大学 | 一种基于OpenXML的docx文档创建和修改方法 |
US20160110313A1 (en) * | 2014-03-14 | 2016-04-21 | Citta LLC | System and method of content creation, versioning and publishing |
US20160026730A1 (en) * | 2014-07-23 | 2016-01-28 | Russell Hasan | Html5-based document format with parts architecture |
US20180081868A1 (en) * | 2016-09-21 | 2018-03-22 | FinancialForce.com, Inc. | Dynamic intermediate templates for richly formatted output |
CN108763171A (zh) * | 2018-04-20 | 2018-11-06 | 中国船舶重工集团公司第七〇九研究所 | 一种基于格式模板的文档自动化生成方法 |
CN110750973A (zh) * | 2019-09-02 | 2020-02-04 | 北京东软望海科技有限公司 | 动态模板配置方法及系统 |
Non-Patent Citations (3)
Title |
---|
ORSON: ""Java 动态生成复杂 Word"", 《HTTPS://WWW.CNBLOGS.COM/JAVA-CLASS/P/4686325.HTML》 * |
肖洋等: "使用Jacob生成Word实现文档自动化的方法研究", 《大众科技》 * |
马永志 等: ""汽车散热器设计计算平台文档自动生成研究"", 《青岛大学学报(工程技术版)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111444697B (zh) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6003033A (en) | System and method for describing and creating a user defined arbitrary data structure corresponding to a tree in a computer memory | |
CN101025738B (zh) | 一种免模板动态网站生成方法 | |
Amagasa et al. | A data model for temporal XML documents | |
CN102646039A (zh) | 基于XML Schema的软件界面生成系统及方法 | |
CN102982010A (zh) | 提取文档结构的方法和装置 | |
CN102456053B (zh) | 一种xml文档到数据库的映射方法 | |
JP2004342091A (ja) | 階層データ形式のためのデータベースモデル | |
JP2002318798A (ja) | 構造化文書翻訳におけるユーザ制御可能なデータをグループ化する方法およびシステム | |
CN102314497B (zh) | 一种用于识别标记语言文件主体内容的方法和设备 | |
CN103646032A (zh) | 一种基于本体和受限自然语言处理的数据库查询方法 | |
CN109885569A (zh) | 基于配置文件对xml数据进行字段提取及结构化方法 | |
EP2180413A1 (en) | Method and device for storing document data in document bank system | |
CN103123631A (zh) | 文案的生成、网页文案的展示方法、装置及网站服务器 | |
CN112395418B (zh) | 网页中的目标对象提取方法、装置、电子设备 | |
Wu et al. | Designing semistructured databases using ORA-SS model | |
CN102841886A (zh) | 拆分文档的方法和装置 | |
CN113761859B (zh) | 电子报告定义方法及装置、电子设备 | |
CN104484337B (zh) | Xml文档的存储方法 | |
CN104699664B (zh) | 一种模板独立的排版系统及方法 | |
CN101916260A (zh) | 一种灾害本体和关系数据库间语义映射构建的方法 | |
CN111444697B (zh) | 一种基于动态模板获取规范化文档的方法及装置 | |
Cadish et al. | Heterogeneous view integration via sketches and equations | |
CN101814064B (zh) | 报表模板的创建方法、报表生成方法及报表系统 | |
CN103294791A (zh) | 一种可扩展标记语言模式匹配方法 | |
CN113435178A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |