科学人生◆品味科学分享 http://blog.sciencenet.cn/u/hxiuzhou 中国科学,从此他将伴我一起生活!

博文

基于VBA的Word文档XML结构化标记方法

已有 6060 次阅读 2017-10-23 09:30 |系统分类:科研笔记| VBA程序, XML结构化标记, JATS, 自动校对

摘要 为了适应当前数字出版趋势,结构化XML文件正成为科技期刊出版的潮流,本文利用VBA编程语言,针对科技期刊文章的特点,对Word文档实现了XML结构化标记,在全文标记的基础上,还对文档内在逻辑的连续性和一致性进行了自动校对,相比传统出版模式,提高了工作效率,并减少了编校错误。本文方法已经应用于《中国科学》系列期刊,取得良好效果。

关键词 VBA程序; XML结构化标记; JATS; 自动校对


当前, 不管是纸质版还是PDF电子版本的文章, 已经不能适应碎片化阅读的需求, 这就要求我们必须探索新型的出版形态, XML(ExtensibleMarkup Language)可扩展标记语言正是为了适应碎片化阅读的趋势, 可以将一篇文章分解为若干个标记性段落, 每一个标记性段落根据需要又可以分解为若干子项, 通过标记与分解, 信息的颗粒度将会越来越细, 那么将最有效的信息推荐给读者, 以引起读者的注意则成为可能, 同时利用XML文件可以生成ePub, HTML, PDF等格式文件, 真正做到一次生成多次发布, 并且读者可以很方便的实现交互式索引、关联阅读和兴趣检索。要将文档转换为XML文件, 需要一个前提, 即事先需要有一套文档各要素的识别方法, 才能做到准确快速的转换, 本文针对科技期刊的特点, 尝试在Word文档环境下, 并且该Word文档没有经过加工排版,利用VBA(Visual Basic forApplications)语言编写识别与标记程序, 并嵌入到Word工具菜单中, 实现一键即对Word元数据的标记工作, 关于VBA语言环境、部署及具体案例应用可以参考王玥等人[1]的文章, 也可以参考VBA的帮助文档。

当我们对文档有了识别方法后, 还需要知道XML文件采用什么标准, 具体涉及哪些标签, 以便确定文档要素和XML标签的对应关系。经过调研, 我们采用了美国国立医学图书馆(National Library ofMedicine, NLM)颁布的JATS1.1(JournalArticle Tag Suite, JATS)标准.

1  JATS标签体系概述

JATS1.1标准版本是美国国立医学图书馆(NLM)201512月发布的, 最早的版本可以追溯到2003, 主要是作为文档存储、转换和Web数据交换的标准, 供各出版商采用。其标签大体可以分为<front>,<body>, <back>三大类: <front>标签中主要包含文献的文摘信息标签, 比如, 刊名、ISSNdoi、学科、文题、作者、地址、email、摘要、关键词、时间、年、卷、期、页码、基金及自定义标签等信息; <body>标签中主要包含章节标题、段落、图、表、公式等信息标签。<back>标签中则主要包含致谢、参考文献和附录等信息标签。对这些标签的详细信息可以参考JATS的官方网页:

http://jats.nlm.nih.gov/publishing/tag-library/1.1/index.html,JATS官方网页不仅提供每个标签的详细解释、用途和示例介绍, 并且提供了3个期刊的XMLPDF文档样例, 以方便使用者尽快熟悉XML标签体系, 中文相关介绍可以参考包靖玲等人[2]和沈锡宾等人[3]的文章。

2  Word文档结构化标记

        Word文档中标记, 首先需要建立Word文档的样式集, 然后将特定段落设定为特定样式, 当所有段落都按规定标记相应样式后, 即可完成Word样式与XML标签的映射。由于程序对文档的识别和标记不能保证绝对完整, 特别是针对作者提交的未经编辑加工过的原始稿件, 还需要加工人员在标记程序运行后进行校对和修改, 因此, 在人工核对后, 再用专业软件转换为XML文件。

2.1  Word样式设计

        当我们已知XML标签名称后, 即可针对性的为Word设计样式并命名, 由于XML是一种不含具体文档格式的标记性语言, 所以Word样式基本不设置具体格式, 只用不同颜色区分不同样式。为了防止设置样式时和文档中已经存在的样式冲突,特将新增样式名设置为英文名,并将原文中所有设置的外部英文样式删除后再添加新样式, 英文样式名一方面和XML标签名接近, 另一方面也尽量用通俗易懂的英文单词, 以方便后期加工人员处理文档时辨别样式和修改。1Word样式名和XML标签的对应关系(JATS1.1标准, 2015), 因为XML标签还附带中英文语言等相关属性, 所以经常一个标签可以对应映射多个Word样式, 由于公式一般是OLE形式的外嵌式格式, 比如MathType软件编辑的公式, 不需要标记即可转换为MathMLLaTex公式。

一般新建样式我们用到的VBA命令为: SetmyStyle=ActiveDocument.Styles.Add(name:="abstract", Type:=1), 该命令表示创建一个“abstract”段落样式, Type:=2则表示设置的是字符样式。

2.2  页眉、页脚和脚注的处理

        如果作者提交的稿件是按照期刊模版撰写, 或者我们在回溯过刊文档时, 一般在页眉、页脚和脚注有一些信息是必须纳入到正文中来做标记的, 本文采用提取首页页眉页脚相关信息, 如年、月、卷、期、页码、栏目、专题等相关信息, 然后按照相应样式写在正文之前, 提取页眉方法为: Set myrange =ActiveDocument. Sections(1).Headers(wdHeaderFooterFirstPage).Range, 在这条命令中, myrange即能得到首页页眉的段落, 如果要得到首页页脚段落信息, 则只需将上述命令行中的Headers替换为Footers即可。

        对于脚注, 可以用以下命令: Set foot= ActiveDocument.Footnotes(1), 表示foot是全文的第1个脚注, Setmyrange=ActiveDocument.Range (foot.reference. Start, foot.reference.End) 即能获取该脚注的段落信息, 本文是将脚注的段落信息回写到正文引用的地方, 并用字符样式进行标记, 以方便后期转换。如果要获取每个脚注, 可以用For Next命令来遍历文章中的所有脚注, 然后依次来处理。


1  Word样式名和XML标签的对应关系

样式名

中文含义

对应XML标签

样式名

中文含义

对应XML标签

publisher-name

出版商

<publisher-name>

abstract

英文摘要

<abstract>

short-publisher-name

出版商缩写名

<publisher-name>

abstract-zh

中文摘要

<trans-abstract>

journal-id

刊物ID

<journal-id>

kwd-group

英文关键词

<kwd-group>

journal-title

英文刊名

<journal-title>

kwd-group-zh

中文关键词

<kwd-group>

journal-title-zh

中文刊名

<journal-title>

vol

<volume>

abbrev-journal-title

刊名缩写

<abbrev-journal-title>

issue

<issue>

issn

ISSN

<issn>

first-page

首页码

<fpage>

cn

CN

<issn>

issue-title

专题名

<issue-title>

eissn

EISSN

<issn>

last-page

尾页码

<lpage>

article-id

稿件号

<article-id>

elocation-id

文章编码

<elocation-id>

article-id-doi

doi

<article-id>

copyright-holder

版权拥有者

<copyright-holder>

article-categories

英文学科

<subject>

copyright-year

版权年

<copyright-year>

article-categories-zh

中文学科

<subject>

funding-group

基金信息

<funding-group>

article-type

英文栏目

<article>

notes

期刊主页

<notes>

article-type-zh

中文栏目

<subject>

head-a

1级标题

<sec>

article-title

英文文题

<article-title>

head-b

2级标题

<sec>

article-title-zh

中文文题

<trans-title>

head-c

3级标题

<sec>

authors

英文作者

<contrib>

figure-caption

英文图题

<fig-group>

authors-zh

中文作者

<contrib>


figure-caption-zh

中文图题

<fig-group>

correspondence

英文通讯email

<author-notes>


table-caption

英文表题

<table>

correspondence-zh

中文通讯email

<author-notes>


table-caption-zh

中文表题

<table>

affiliation

英文地址

<aff>


footnote

脚注

<fn>

affiliation-zh

中文地址

<aff>


para

正文段落

<p>

pub-date

出版日期

<pub-date>

references

参考文献

<ref>

2.3  文摘信息识别与标记

        文摘信息主要对应XML标记中的Front标签所包含的子标签, 一般是先按照期刊模版框架来识别, 如果不是按照模版框架撰写的稿件, 则默认第一个段落为文题, 文题后面紧跟的段落为作者, 其余信息则按照文字特征来判断, 比如文字中类似*#####, [A-Z]*这样的则认为是英文单位地址, 该字符串表示是此段落中至少包含5位数字并且后面紧跟的是一个大写单词, 具体命令为: If i.Range Like *#####,[A-Z]* Then i.Style = "affiliation",  i表示定义的某个段落, i. Style命令表示为这个段落标上"affiliation"样式。图1<front>标签部分XML结构化标记结果示意图。

2.4  章节、图题和表题识别与标记

正文中如果是“1”,“1.1”, “1.1.1”开始的段落, 我们分别定义为一级章节标题、二级章节标题和三级章节标题,比如我们要识别并标记一个二级标题, 其命令为Ifi.Range Like "[1-9].# *" Then i.Style = "head-b", “head-b”即是一个二级标题样式,对于图题和表题, 我们采用的规则是图片下方的第一个非空白段落是图题,表格上方的第一个非空白段落是表题, 基本都能达到识别和标记的要求。


1  Word文档环境下XML结构化标记结果示意图


2.5  参考文献识别、加工和结构化拆分

对于参考文献, 一般我们识别多个连续列表符号的为参考文献, 如果程序没识别对, 需要手动标记。目前国内外对参考文献的处理一般是编辑先按照一定的格式进行加工, 然后用程序来拆分文献的基本元数据, 再用这些元数据去获取文献的DOIPubMed等信息, 这个处理流程从实践反馈来看有一定缺陷, 主要是如果文献加工过程不规范,则会导致拆分错误, 后期再从XML文件信息中去校对和修改, 困难很大, 严重阻碍生产的顺利进行, 本文在前人的基础上, 针对Journal类型的文献, 我们提出了一个新思路, 即先分析文献的体例特征, 并将文献分为5大基本类型, 按照分析结果去尝试解析文献的刊名、年、卷、首页码等信息, 利用这4个数据, 可以通过CrossRefAPI接口获取到文献的DOI信息, 再用这个DOI信息获取到PubMed, ADS的数据库的ID信息, 通过DOIID信息我们可以进一步去挖掘该文献的全部元数据, 然后利用这些元数据来对我们的原始文献进行加工, 具体方法和细节请参考侯修洲等人[4,5]的文章。这个方法的优点是将标记和文献拆分、加工有机结合起来, 加工人员只要一键即可完成所有文献信息的拆分。

3  全文逻辑连续性与一致性自动校对

薛子俭等人[6]曾经总结了一套科技论文分布编校法, 该方法根据文档内容将编校过程分为论文构架核查、归类加工、常规润色、整体性核对四步进行, 虽然条理很清楚,也很严谨, 但是全部都是需要编辑人工参与的, 并且对编辑的能力和经验也是一大考验,一个轮次很难解决全部的编校错误。在VBA程序标记的过程中, 我们发现全文在逻辑上存在内在的连续性和一致性, 那么是否可以利用这些规律来实现文章的自动校对工作呢, 答案是肯定的. 比如顺序文献编码制, 要求正文的文献引用必须按照顺序引用, 不能漏引也不能跨文献序号引用, 那么按照文献序号的连续性要求, 可以对突然不连续的文献序号进行高亮标记, 以提醒加工人员注意, 依照此原则, 图表序号、公式序号、章节序号的连续性校验同样有效的帮助了编辑加工人员. 一致性校验则涉及到著作年制前后文的作者年信息匹配, 如果人工校对, 则是一个大量而又繁琐的工作, 并且很难保证不出现一点疏漏或错误. 程序化匹配则能非常好的保证高效匹配校验, 并将不能匹配的著者年引用信息用高亮标记提醒出来.

对于中文来说, 程序还可以检查作者的中英文姓名和拼音是否一致, 以及中英文地址邮编是否一致,如不一致则高亮标记。

对于文献, 因为绝大多数Journal类型的文献都完成了拆分, 如果两条参考文献的doi信息相同, 则判断这两条文献是重复文献, 程序会将这两条文献标上红色字体, 如果拆分的文献中出现空标签,则该空标签会高亮标记。

通过全文逻辑连续性与一致性的自动校对后, 不仅减少了编校错误同时对后期XML文档标签索引打下了很好的基础,减轻了加工人员的劳动量, 提高了工作效率, 也减少了审校的轮次, 加快了出版速度。

4  总结

        本文按照JATS1.1标准XML文件的要求, 基本完成了对于科技期刊论文的XML结构化标记工作, 并在全文标记的基础上,对文章逻辑的连续性和一致性进行了校对,提高了工作效率,减少了编校错误。XML结构化标记是XML文件转换的第一步,也是非常关键的一步。之后我们引入了专业的XML转换工具软件, 完成了标记后的Word文档向XML文件的转换, 并通过XML文件和样式表发布了PDF和网站全文HTML版本, 整个生产全部在我们最新的生产出版流程系统中完成, 并已在《中国科学》系列期刊中实现了平稳运行, 相比之前纯纸质版校样审校, 现在的生产系统基本达到了无纸化、多地异地办公和跨平台无缝衔接, 实现了从投审稿平台、XML排版生产和网上发布一站式解决方案。


5  参考文献

1.         王玥, 毛善锋, 刘谦. Word文档中通过CrossRef自动查询与整合英文参考文献DOI的实践[J]. 中国科技期刊研究, 2013, 24(2): 333-337

2.         包靖玲, 李敬文, 沈锡宾, . 美国NLM DTD3.0期刊存储和交换标签集中文章正文部分标记解读[J]. 中国科技期刊研究,2014, 25(4): 515-519

3.         沈锡宾, 顾佳, 包婧玲, . 美国NLM DTD3.0期刊存储和交换标签集中参考文献的标记解读[J]. 中国科技期刊研究,2013, 24(2): 233-237

4.         侯修洲, 黄延红. 利用VBA程序和HTTPS协议获取参考文献的doi信息[J]. 编辑学报, 2016, 28(5): 466-469

5.         侯修洲, 黄延红. 基于CrossRef数据库的参考文献自动加工及XML标引方法[J]. 编辑学报, 2017, 29(1): 70-72

6.        薛子俭,付利. 科技论文分步编校法及注意事项[J]. 中国科技期刊研究,2012, 23(2): 325-328


全文下载:

侯修洲, 黄延红. 基于VBA的Word文档XML结构化标记方法. 编辑学报, 2017, 29(5): 471-474



https://blog.sciencenet.cn/blog-306503-1082049.html

上一篇:三体问题 | 科学家最新发现600多个周期解
下一篇:《中国科学》出版可展开空间结构动力学与控制专题
收藏 IP: 219.238.6.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-18 12:05

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部