首页> 中国专利> WORD内容批量拷贝到基于S1000D标准DM的快速转换方法

WORD内容批量拷贝到基于S1000D标准DM的快速转换方法

摘要

本发明涉及WORD内容批量拷贝到基于S1000D标准DM的快速转换方法,属于数据格式内容转换领域,包括以下步骤:文档html化;判断是否从word文档中复制,若是,则核对是否为注册word粘贴命令,若不是,则调用普通转换操作;判断当前光标是否定位在编辑区节点;获取粘贴命令的对象;启动多线程处理;根据各线程处理时间判定是否结束线程;获取模板信息;往Transformer转换对象中设置必要参数,转换成S1000D标准DM的Xml文件。本发明通过模板引擎能够把word中的标题、强调、上下标、有序、无序、表格、图片、图标、文本等内容自动转换成S1000D对应内容,提升编辑效率。

著录项

  • 公开/公告号CN112699641A

    专利类型发明专利

  • 公开/公告日2021-04-23

    原文格式PDF

  • 申请/专利权人 南京国睿信维软件有限公司;

    申请/专利号CN202110316627.8

  • 发明设计人 孙国防;蒋巍;孙浩;

    申请日2021-03-25

  • 分类号G06F40/151(20200101);G06F40/186(20200101);

  • 代理机构32273 南京苏创专利代理事务所(普通合伙);

  • 代理人凤婷

  • 地址 210013 江苏省南京市鼓楼区古平岗4号院53号楼7楼

  • 入库时间 2023-06-19 10:43:23

说明书

技术领域

本发明涉及一种word内容批量拷贝到基于S1000D标准DM的快速转换方法,属于数据智能处理技术领域。

背景技术

S1000D标准DM以Xml格式定义。编制S1000D标准手册时,所有DM最终都必须以Xml文件保存。IETM手册在国内普及之前,大多数用户已经有以word文档形式编写好的手册数据。

为将原有手册内容转成S1000D标准的IETM手册数据,传统方式是在编写DM的过程中将word中的内容通过复制、粘贴等方式转录成Xml格式。这种方式无法充分复用原有资料,编写效率低,准确率低。

发明内容

为了解决上述技术问题,本发明提供一种WORD内容批量拷贝到基于S1000D标准DM的快速转换方法,包括如下步骤:

步骤1:文档html化:对文档全文进行html标签语言的文本化,输出html标签语言文本;

步骤2:根据步骤1中所得html标签语言文本判断是否来源于word文档,若是,则进入步骤3,若不是,则调用普通转换操作;

步骤3:核对html标签语言文本是否为已注册的word粘贴命令,若否,则把word粘贴命令注册到缓存的命令集合中,然后进入步骤4,若是,则直接进入步骤4;

步骤4:判断当前光标是否定位在编辑区节点中,若否,则警告提示,若是,则进入步骤5;

步骤5:获取word需要粘贴的对象,执行粘贴命令,并且初始化xslt样式模板;

步骤6:启动多线程操作,对粘贴后的html标签语言文本进行裁剪、调整或者删除不必要的内容,为转换S1000D节点做准备;

步骤7:若当前线程能在1秒内处理完源数据,则不弹出日志对话框,若超过1秒还没有执行完,则结束当前线程,弹出操作日志对话框;

步骤8:根据xslt样式文件路径获取样式模板,若缓存中有样式模板信息,则默认样式模板信息从缓存中取,若缓存中没有样式模板信息,则把样式模板信息存入到缓存中,需要模板信息时直接从缓存中取;

步骤9:通过样式模板获取Transformer转换对象,再往Transformer转换对象中设置必要参数,转换成S1000D标准DM的Xml文件。

进一步的,所述步骤1中通过键盘“CTRL+C/CTRL+V”触发复制/粘贴命令,将文档内容复制到剪切板中,设置文档数据格式为html格式,通过Transformer转换对象获取剪切板中html格式内容。

进一步的,所述步骤2中根据底层html数据中的“xmlns:w=urn:schemas-microsoft-com:office:WORD”信息来判断html标签语言文本是否从word文档中复制。

进一步的,所述步骤6的多线程操作的具体执行过程为:

步骤6.1:把html标签语言文本中字符串转成Document对象进行解析,并删除html标签语言文本中的命名空间及注释内容,再把图片内容下载到本地临时文件夹,普通图片用png格式保存,VISIO格式用EMF压缩格式保存,文件命名格式为“image”+编号;

步骤6.2:删除html标签语言文本中底层对应的meta多余标签内容,删除全局字体相关的样式;

步骤6.3:删除原word纯文本内容样式、有序列表、无序列表样式及文本布局格式,修改语言为“zh-CN”格式;

步骤6.4:删除底层原word文档全文中的链接样式;

步骤6.5:根据原word文档底层表格列宽,修改为用百分比表示列宽,增加处理指令,用来预处理按照S1000D标准标签表示的表格;

步骤6.6:修改图片标签,把原word文档中的底层标签改为

,并且增加属性“class='figcaption'”来表示图片,若没有加入此属性的,则默认作为图标;

步骤6.7:根据原word文档中的底层

标签的属性“class='MsoNormal'”判断底层

标签是有序列表还是无序列表,若是有序列表,则把

标签转成对应的有序“

  1. ”标签,若是无序列表,则把

    标签转成对应的无序“

    • ”标签;

      步骤6.8:处理图注或者表注,根据原word文档中的图片或者表格标签中的“class='figcaption'”或者“class='caption'”来填充图片或者表格的标题;

      步骤6.9:预处理标题标签,根据原word文档全文中的底层标签,如一级标题标签“

      ”转成对应的“

      ”标签,在后期根据“class='section1'”转成对应的S1000D节点或者步骤标签;

      步骤6.10:删除原word文档中的底层空文本标签、span标签及样式,把“”标签中的内容替换到外层

      标签中,并且删除“”标签及其样式;

      步骤6.11:根据步骤6.1-6.10,生成对应的标签内容,作为转成S1000D标签的输入原Xml内容;

      步骤6.12:将步骤6.11生成的输入原Xml内容解析转成“Document”对象,为转成标准S1000D内容做准备。

      进一步的,所述步骤7中通过thread.join(1000)结束当前线程。

      进一步的,所述步骤9中通过单例模式获取样式模板,往“Document”对象中设置必要参数的具体过程为:

      当进行层级或者步骤节点转换时,将当前的DM类型设置到“Document”对象中,若当前DM类型是描述类型,html标签

      转成S1000D标准一级层级段落标签,html标签
      转成S1000D标准子级层级段落标签,用1,1.1,1.1.1来表示层级段落标签样式,节点的父子或兄弟关系根据class属性值进行确定;若当前DM类型是程序类型,html标签
      转成一级步骤节点标签
      转成子级步骤节点标签或者,并且用1,1.1,1.1.1来表示层级样式,节点的父子或者兄弟关系根据class的属性值进行确定;

      当进行标题节点转换时,若当前DM类型是描述类型,则转成标签;若当前DM是程序类型,则将html标签<h1>~<h6>标签转成S1000D标准Xml的para标签;</p><p>当进行段落节点转换时,将html的<P>标签转成对应的S1000D标准Xml的<para>标签,根据节点上下文关系,在解析时,若当前节点的父节点是警告标签、注意标签和注标签时,则将html的<P>标签转换成S1000D标准Xml的<warningAndCautionPara>标签;</p><p>当进行有序/无序列表转换时,将html的有序标签<ol><li>转成S1000D标准Xml的<sequentialList><listItem>标签,用1,1.1,1.1.1来表示层级段落标签样式;将html的无序标签<ul><li> S1000D标准Xml的<randomList><listItem>标签,用“.”表述无序样式;</p><p>当进行图标转换时,若源数据html中没有<div class="figure">标签,只出现<img alt="…" src="xxx.png"> </img>时,则默认转成S1000D标准Xml的图标标签<symbolsrc=" "/>;</p><p>当进行表格转换时,根据表格样式模板,把源数据表格节点及子节点与S1000D节点根据tr----->row、td----->entry、colgroup----->colspec、caption----->title对应关系进行转换;源数据表格跨列,则通过处理指令计算当前开始列与结束列,并且把对应结果作为单元格namest和nameend的属性值;</p><p>当进行文本操作时,若有处理指令<.toxml-text.>,则默认当作文本进行拷贝,若没有处理指令<.toxml-text.>,则作为para节点进行拷贝。</p><p>进一步的,所述步骤9中通过模板样式文件进行转换,转换成标准S1000D节点后,根据当前光标位置节点的上下文约束关系,判断是否能插入转换后节点,若能够插入,则把根据样式模板转成的节点粘贴到对应位置,若不能插入,则进行提示信息说明。</p><p>本发明的有益效果是:用户只需要批量复制word内容并粘贴到编辑工具中,即可快速生成符合标准要求的Xml文件。生成过程中通过模板引擎能够把word中的标题、强调、上下标、有序、无序、表格、图片、图标、文本等内容自动转换成S1000D对应的章节号、加粗、倾斜、下划线、上下标、有序、无序、表格、图形、文本等内容,提升编辑效率。</p><p>附图说明</p><p>图1是本发明的转换步骤示意图;</p><p>图2是本发明的实施例WORD原文件图;</p><p>图3是本发明的实施例转换为S1000D的Xml标准后数据图。</p><p>具体实施方式</p><p>现在结合附图对本发明作进一步详细的说明。</p><p>如图1所示,本发明WORD内容批量拷贝到基于S1000D标准DM的快速转换方法,步骤如下:</p><p>步骤1:文档html化:对文档全文进行html标签语言的文本化,输出html标签语言文本;通过键盘“CTRL+C/CTRL+V”触发系统剪切板命令,设置数据格式为html格式,通过Transformer转换对象获取剪切板中html格式内容。</p><p>步骤2:根据步骤1中所得html标签语言文本确定是否来源于word文档,若是,则进入步骤3,若不是,则调用普通转换操作;根据底层html数据中的“xmlns:w=urn:schemas-microsoft-com:office:WORD”信息来确定html标签语言文本是从word文档中复制还是从其它文档复制。</p><p>步骤3:核对html标签语言文本是否为已注册word粘贴命令,若否,则把word粘贴命令注册到缓存的命令集合中,然后进入步骤4,若是,则直接进入步骤4;</p><p>步骤4:判断当前光标是否定位在编辑区节点中,若否,则警告提示,若是,则进行步骤5;</p><p>步骤5:获取word需要粘贴的对象,执行粘贴命令,并且初始化xslt样式模板;</p><p>步骤6:启动多线程操作,对粘贴后word内容对应的html标签语言文本进行裁剪、调整或者删除不必要的内容,为转换S1000D节点做准备;多线程操作的具体执行过程为:</p><p>步骤6.1:把html标签语言文本中字符串转成Document对象进行解析,并删除html标签语言文本中的命名空间及注释内容,再把图片内容下载到本地临时文件夹,普通图片用png格式保存,VISIO格式的用EMF压缩格式保存,文件命名格式为“image”+编号;</p><p>步骤6.2:删除html标签语言文本中底层对应的meta多余标签内容,删除全局字体相关的样式;</p><p>步骤6.3:删除原word纯文本内容样式、有序列表、无序列表样式及文本布局格式,修改语言为“zh-CN”格式;</p><p>步骤6.4:删除底层原word文档全文中的链接样式;</p><p>步骤6.5:根据原word文档底层表格列宽,修改为用百分比表示列宽,增加处理指令,用来预处理按照S1000D标准标签表示的表格;</p><p>步骤6.6:修改图片标签,把原word文档中的底层<img>标签改为<figure>,并且增加属性“class='figcaption'”来表示图片,若没有加入此属性的,则默认作为图标;</p><p>步骤6.7:根据原word文档中的底层<p>标签的属性“class='MsoNormal'”判断底层<p>标签是有序列表还是无序列表,若是有序列表,则把<p>标签转成对应的有序“<ol><li>”标签,若是无序列表,则把<p>标签转成对应的无序“<ul><li>”标签;</p><p>步骤6.8:处理图注或者表注,根据原word文档中的图片或者表格标签中的“class='figcaption'”或者“class='caption'”来填充图片或者表格的标题;</p><p>步骤6.9:预处理标题标签,根据原word文档全文中的底层标签,如一级标题标签“<h1></h1>”转成对应的“<div class='section1'><h1><h1></div>”标签,在后期根据“class='section1'”转成对应的S1000D节点或者步骤标签;</p><p>步骤6.10:删除原word文档中的底层空文本标签、span标签及样式,把“<b>、<big>、<cite>、<em>、<i>、<small>、<strong>和<u>”标签中的内容替换到外层<p>标签中,并且删除“<b>、<big>、<cite>、<em>、<i>、<small>、<strong>和<u>”标签及其样式;</p><p>步骤6.11:根据步骤6.1-6.10,生成对应的标签内容,作为转成S1000D标签的输入原Xml内容;</p><p>步骤6.12:将步骤6.11生成的输入原Xml内容解析转成“Document”对象,为转成标准S1000D内容做准备。</p><p>步骤7:若当前线程在1秒内能处理完源数据,则不弹出日志对话框,若超过1秒还没有执行完,则结束当前线程,弹出操作日志对话框;通过thread.join(1000)结束当前线程,其中1000为1秒。</p><p>步骤8:根据xslt样式文件路径获取样式模板,若缓存中有模板信息的,则默认模板信息从缓存中取,若没有模板信息,则把模板信息存入到缓存中,需要模板信息时直接从缓存中取;</p><p>步骤9:通过模板获取Transformer转换对象,再往Transformer转换对象中设置必要参数,转换成S1000D标准DM的Xml文件。</p><p>下面给出本发明的一个具体应用实施例,参照图2和3:</p><p>步骤1:首先选中需要拷贝的内容,图2中的内容即为拷贝的内容,通过键盘“CTRL+C/CTRL+V”,然后光标定位到编辑区需要拷贝的节点位置。</p><p>步骤2:根据底层html数据中的“xmlns:w=urn:schemas-microsoft-com:office:WORD”信息来确来确定复制的数据是否来源于word文档。</p><p>步骤3:如果是从word文档中复制,首先核对是否注册word粘贴命令,如果没有注册,需要把粘贴命令注册到命令集合中,后期再复制粘贴时,直接从缓存中查找当前操作的命令。</p><p>步骤4:在执行命令之前,先进行预处理判断,判断当前光标是否定位在编辑区节点中,如果编辑区光标没有定位在节点,进行警告提示。</p><p>步骤5:用如图2所示的word源数据,通过Transformer转换对象获取word对应的html内容。</p><p>步骤6:然后对底层html内容进行裁剪、调整或者删除不必要的内容,为转换S1000D标准节点做准备,并且弹出对话框,显示具体操作日志信息,减少重复操作,节省步骤,提升命令准确性。</p><p>步骤7:对于对话框是否显示,根据执行word内容时间确定,如果当前线程在1秒内处理完源数据,默认不弹出日志对话框;如果超过1秒还没有执行完,通过thread.join(1000)结束当前线程,弹出操作日志对话框。</p><p>步骤8:通过xslt样式文件路径获取样式模板,在获取样式模板主要通过单例模式,如果缓存中有模板信息,则默认模板信息从缓存中取,如果没有,则把模板信息存入到缓存中,以后需要时再直接从缓存中取,不需要再重新解析,提高效率。</p><p>步骤9:通过模板获取Transformer转换对象,然后往此对象中设置必要参数。</p><p>步骤9.1:把当前DM类型设置到此对象中,后面在做样式的时候不同的DM所展现的效果不一样。</p><p>步骤9.2:把当前光标节点设置到此对象中,在粘贴的时候需要根据当前光标位置节点判断是否能插入转换后的节点。设置参数使得转换时标准明确,为后续转换做准备。</p><p>根据模板样式文件进行转换,具体转换步骤如下:</p><p>对于层级或者步骤节点转换操作如下:根据步骤9传入的DM类型,如果当前DM类型是描述类型,则将<div class="section1">转成<levelledPara>,如果当前DM是程序类型,则将<div class="section1">转成<procduralStep>,将<div class="section2">转成子级<levelledPara>或者<procduralStep>,并且用1,1.1,1.1.1来表示层级样式,节点的父子或者兄弟关系根据class的属性值进行确定。</p><p>对于标题节点转换逻辑如下:根据源数据<h1><h2>……<h6>,如果当前DM类型是描述类型,则转成<title>;如果当前DM是程序类型,则转成<para>。参见图3,例如源数据:</p><p><div class="section1"></p><p><h1>整机功能描述</h1></p><p></div></p><p>如果当前DM类型是描述类型,转成:</p><p><levelledPara></p><p><title>1.整机功能描述

      如果当前DM类型是程序类型,转成:

      1.整机功能描述

      对于段落节点转换如下:

      标签转成对应的,其中若光标定位在编辑区的节点是时,转换成对应的节点。

      对于有序无序列表转换如下:

      1. 转成对应的节点,并且用1,1.1,1.1.1来表示层级样式;根据
      获取专利

      客服邮箱:kefu@zhangqiaokeyan.com

      京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
      • 客服微信

      • 服务号