一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

将Word文档内容转换成符合S1000D标准XML片段的动态转换方法与流程

2023-02-06 10:56:06 来源:中国专利 TAG:
将word文档内容转换成符合s1000d标准xml片段的动态转换方法
技术领域
:1.本发明涉及一种将word文档内容转换成符合s1000d标准xml片段的动态转换方法,属于数据智能处理
技术领域
:。
背景技术
::2.复杂装备在交付用户时需随装交付一套用户手册,用户手册一般用交互式电子技术手册(ietm)软件制作生成,数据模块构成了ietm的主要内容。所述的数据模块翻译自s1000d国际标准(www.s1000d.org),英文原文是datamodel,简称为dm,意指一段包含技术内容的xml格式文档。s1000d标准定义了描述类、程序类、故障类、图解零件类、维护计划类、接线类等类型dm的schema(模式)。3.目前常用的dm编制方法是将已有的维修手册、使用操作手册等word文档拆分为片段,然后将这些文档片段转换为符合标准要求的dm,一般采用两种转换方式:第一种是将word中文字内容拷贝到dm编辑器的正确位置;第二种需先处理word文档(例如将word文档内容增加标签或者转换为html格式),再利用转换软件将标签或元素按内置的规则进行批量转换。第一种方式需要进行大量重复的选择、拷贝、粘贴、事后复核等操作,第二种方式需要对word文档内容进行大量预处理工作,难以提升数据编制工作效率和质量,现急需一种能够将word文档内容动态转换为符合标准要求的xml格式片段方法。技术实现要素:4.现有面向s1000d标准格式的dm自动转换或快速编辑方法仅适用于描述类dm单一数据类型,本发明提出的技术方法适用于将word文档内容转换为s1000d标准规定的描述类、图解类、程序类等多种dm类型,在提高xml格式数据编制效率同时降低了数据编制技术难度。5.本发明的技术方案为:一种将word文档内容转换成符合s1000d标准xml片段的动态转换方法,其特征在于:包括以下步骤:6.步骤1、打开word文档和需要编辑的dm文档,在word显示页面选中需要转换的内容,并在dm文档中设定一个插入word内容片段的锚点;7.步骤2、获取dm中锚点的行号和当前行中包含的元素名称,加载与元素名称对应的、符合s1000d标准模式要求的xml格式代码生成规则;8.步骤3、将word文档中选定的内容生成新的文档;9.步骤4、解析新文档中所有节点,判断新文档中节点的类型,按照标题、段落、表格、有序列表、无序列表、图形、图解列表进行分类处理,生成符合s1000d标准xml格式片段;10.步骤5、将生成的xml片段插入dm中锚点位置。附图说明11.图1:业务流程图;12.图2:技术实现路径示意图;13.图3:word内容转换为dm片段规则示意图。具体实施方式14.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。15.根据本发明的实施例,提出一种将word文档内容转换成符合s1000d标准xml片段的动态转换方法,包括如下步骤:16.步骤1、打开word文档和需要编辑的dm,在word显示页面选中需要转换的内容,同时在dm中设定一个插入word内容片段的锚点;17.步骤2、获取dm中锚点的行号和当前行中包含的元素名称,加载与元素名称对应的、符合s1000d标准模式要求的xml格式代码生成规则;18.步骤3、将word文档中选定的内容生成新的word文档;19.步骤4、解析新文档包含的所有节点,判断新文档中节点的类型,按照标题、段落、表格、有序列表、无序列表、图形、图解列表等进行分类处理,生成符合s1000d标准xml格式片段;20.步骤5、将生成的xml片段插入dm中锚点位置。21.进一步的,所述步骤1具体执行过程为:22.步骤1.1、同时打开word文档和xml格式dm。word内容利用第三方插件(例如ntko)显示。dm需要用javascript类库codemirror显示并编辑,支持折叠、展开、撤销、重做、查找等操作。在dm编辑页面中加载schema以支持dm的编辑和校核,即:“editor.setoption("hintoptions",{schemainfo:schema__});”,其中schema__是用开源java类库xmlschema-core解析相应的s1000d标准schema文件(例如描述类dm为descript.xsd,程序类dm为proced.xsd,图解零部件类dm为ipd.xsd)得到符合codemirror要求的json文件;23.步骤1.2、在word文档显示页面中用鼠标或键盘选择需要转换的内容片段,包括含标题的层级段落、普通段落、表格、有序或无序列表(支持嵌套)、图形、上下标等;24.步骤1.3、在dm编辑页面中设定一个插入word内容片段的锚点。25.进一步的,所述步骤2具体执行过程为:26.步骤2.1、获取dm中锚点行号,添加锚点位置标识anchorjson,以{text:text值,line:line值,ch:ch值}的json形式来表示,包括以下四种情况(在dm的content元素前不能设定为锚点):27.(1)锚点行文本不以“》”结尾的(即以文字结尾的,例如带randomlist的para),如果以“《/”结尾,则anchorjson={text:锚点行文本,line:锚点行行号,ch:锚点行文本中“《/”位置},否则anchorjson={text:锚点行匹配结束行文本,line:锚点行匹配结束行行号,ch:锚点行匹配结束行的长度};28.(2)锚点行以“《/”开头的anchorjson={text:锚点行文本,line:锚点行行号,ch:0};29.(3)锚点行是形如”《元素》《/元素》”的则anchorjson={text:锚点行文本,line:锚点行行号,ch:0};30.(4)如以上都不是则anchorjson={text:锚点行文本,line:锚点行行号,ch:锚点行文本长度};31.步骤2.2、解析锚点行数据元素名称,加载数据元素名称对应的xml格式代码生成规则,例如s1000d国际标准中定义的常用数据元素:warning、caution、note、para、table、sequentiallist、randomlist、levelledpara、mainprocedure、proceduralstep、reqcondgroup、illustratedpartscatalog等,其中__text__为文本占位符,如附图3所示。32.进一步的,所述步骤3具体执行过程为:33.步骤3.1、将word文档中选定的内容提取出来,拷贝到windows剪贴板中,在内存中将拷贝的内容转换为rtf格式的二进制代码;34.步骤3.2、在内存中将二进制代码生成新文档(此文档具有访问速度快、复制的内容完整、不受原word文档的影响等特点,其后的操作都是基于此文档);35.步骤3.3、解析新文档中所有内容节点并编号,形成documentnodes集合。36.进一步的,所述步骤4具体执行过程为:37.步骤4.1、定义一个字符串集合inittexts,用于存储新文档中documentnodes解析结果;38.步骤4.2、解析新文档包含的节点documentnodes,判断新文档中节点的类型;39.步骤4.3、对节点内容按照标题、段落、表格、有序列表、无序列表、图形、图解列表等进行分类处理;40.步骤4.4、如图2所示,按照加载的xml格式代码生成规则,对节点的技术内容进行转换,添加符合s1000d标准模式定义的元素、属性标签,具体过程为:41.步骤4.4.1、当节点类型是paragraph时,首先取出其字符串文本值{文本},①如果paragraph的样式是标题,如本标题和上一个标题级别一样,则inittexts中增加“《/levelledpara》”,本标题级别小于上一级别,则inittexts中增加多个“《/levelledpara》”,inittexts中增加“《levelledpara》《title》{文本}《/title》”;②如果是列表(编号样式是23的为无序列表,以“rl”表示;其余为有序列表,以“sl”表示),则在inittexts中增加“rl(或sl)#列表级别《listitem》《para》{文本}《/para》《/listitem》”;③如果是正常段落,则在inittexts中增加“{文本}”。其中处理上标和下标为“《subscript》{上报文本}《/subscript》”和“《superscript》{下标文本}《/superscript》”;42.步骤4.4.2、当节点类型是表格时,首先取到表格列数值{列数},然后循环解析行row,再循环row中包含的单元格cell,最后在inittexts中增加“《tgroupcols="{列数}"》《colspeccolname="col{列序号}"/》《thead》…《/thead》《tbody》《row》《entry》《para》{文本}《/para》《/entry》《/row》《/tbody》《/tgroup》”。其中要特别处理合并单元格。单元格中的文本用paragraph中的处理方式;43.步骤4.4.3、当节点类型是图形时,在inittexts中增加“《figure》《title》《/title》《graphicinfoentityident="{icn值}"xlink:actuate="onrequest"xlink:show="replace"xlink:type="simple"》《/graphic》《/figure》”。44.步骤4.5、循环上述步骤4.2、4.3、4.4,将新文档的所有节点完成转换,生成inittexts集合;45.步骤4.6、对inittexts集合进行有序列表、无序列表及其嵌套的后续处理,得到处理后的字符串集合resulttexts。具体处理过程如下:用java类库dom4j新建xml的document为docu,初始化根节点并赋值为当前元素为elem。预定义当前值之前的最近的列表级别beforelevelnumber为-2。循环inittexts的每个字符串nowstr并判断是否为有序无序列表及其列表级别,取出下个值nextstr并判断是否有序无序列表及其列表级别,包括以下四种情况:46.(1)当前值和下一值都是有序无序列表时,①如当前值列表级别大于下一值列表级别,则elem增加子元素listitem及子子元素para为当前元素elem并赋值文本为nowstr,根据当前值的有序无序elem增加子元素sequentiallist或randomlist并赋值slrl属性为当前值列表级别,②如当前值列表级别小于下一值列表级别,则向上找到下一值列表级别的元素,增加子元素listitem及子子元素para为当前元素elem并赋值文本为nowstr,③如果当前值列表级别等于下一值列表级别,则elem增加子元素listitem及子子元素para为当前元素elem并赋值文本为nowstr,④赋值当前值列表级别给beforelevelnumber;47.(2)当前值是有序无序列表而下一值不是有序无序列表时,则elem元素的祖父元素增加子元素listitem及子子元素para为当前元素elem并赋值文本为nowstr;48.(3)当前值不是有序无序列表而下一值是有序无序列表时,则将beforelevelnumber赋值给当前值列表级别,①如beforelevelnumber为-2或下一值列表级别大于当前值列表级别,则elem增加子元素para并赋值文本为nowstr,根据下一值的有序无序elem增加子元素sequentiallist或randomlist并赋值slrl属性为下一值列表级别,②如下一值列表级别小于当前值列表级别,则elem增加子元素listitem及子子元素para为当前元素elem并赋值文本为nowstr,并往回找到列表级别为下一值列表级别的sequentiallist或randomlist元素为当前元素elem,③如下一值列表级别等于当前值列表级别,则elem增加子元素listitem和子子元素para并赋值文本为nowstr;49.(4)当beforelevelnumber为-2或下一值为“《/levelledpara》”时,则resulttexts添加docu的xml文本,并初始化docu和赋值beforelevelnumber为-2。循环完毕inittexts的每个元素最后得到resulttexts;50.步骤4.7、对resulttexts中xml格式片段文本进行后续处理,主要分为两种情况:一种是dm为描述类时,循环resulttexts中的每个字符串,首先剔除掉“《xml/》”、“《para/》”、“《para》《/para》”等,然后处理转义后的特殊字符为正常字符(例如《、》、\、/),其次根据不同的字符串进行不同的处理,(1)如果是以“《tgroup”开头的,则字符串前后分别增加”《table》”和“《/table》”,(2)如果不是以“《para》”开头,则在字符串前增加“《para》”,不是以“《/para》”结尾的,则在字符串后增加“《/para》”;另一种是非描述类dm时,需要替换占位符“__text__”,首先计算出转换规则中的占位符的出现次数{count},以resulttexts的长度除以{count}为循环次数,逐个替换代码生成规则{rule}中的占位符为resulttexts的对应值,得到最终的xml格式片段;51.步骤4.9、合并resulttexts中的文本,得到完整的xml格式片段文本。52.进一步的,所述步骤5具体执行过程为:53.步骤5.1、将生成的xml格式片段文本添加到dm锚点行的{line:line值,ch:ch值}位置,执行editor.replaceselection(str);54.步骤5.2、对编制完成的dm整体内容用javascript类库jquery.format.js进行格式化;55.步骤5.3、按照s1000d标准模式对dm利用java类库dom4j进行校验;56.步骤5.4、保存dm内容。57.以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献