You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现FilesAndJATS格式jats.xml到METSMODS格式mods.xml的转换?

从JATS XML转换出版元数据到MODS XML的XSLT方案

核心逻辑

XSLT是处理这类XML格式转换的标准方案,JATS和MODS都是学术出版领域通用的元数据格式,完全不需要从零搭建转换逻辑,只要基于两者的规范映射规则编写XSLT模板即可。

具体实施步骤

  • 第一步:梳理元数据映射规则
    先对照你手头的JATS和MODS示例文件,明确核心字段的对应关系,常见映射包括:

    • 标题:JATS的<article-title>对应MODS的<titleInfo><title>
    • 个人作者:JATS的<contrib[@contrib-type='author']>下的<given-names>/<surname>对应MODS的<name type="personal">下的<namePart type="given">/<namePart type="family">
    • 出版日期:JATS的<pub-date>对应MODS的<originInfo><dateIssued>
    • 期刊来源:JATS的<journal-title>对应MODS的<relatedItem type="host"><titleInfo><title>
      (需根据实际需求补充关键词、摘要、基金信息等其他字段的映射)
  • 第二步:编写XSLT转换模板
    基于XSLT 2.0或3.0编写转换代码,以下是基础框架示例(适配JATS 1.x和MODS v3.x):

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" 
                    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:jats="http://www.ncbi.nlm.nih.gov/JATS1"
                    xmlns:mods="http://www.loc.gov/mods/v3"
                    exclude-result-prefixes="jats">
    
      <!-- 根节点匹配与MODS结构初始化 -->
      <xsl:template match="/jats:article">
        <mods:modsCollection xmlns:mods="http://www.loc.gov/mods/v3">
          <mods:mods>
            <!-- 调用各字段转换模板 -->
            <xsl:apply-templates select="jats:front/jats:article-meta/jats:title-group/jats:article-title"/>
            <xsl:apply-templates select="jats:front/jats:article-meta/jats:contrib-group/jats:contrib"/>
            <xsl:apply-templates select="jats:front/jats:article-meta/jats:pub-date"/>
          </mods:mods>
        </mods:modsCollection>
      </xsl:template>
    
      <!-- 标题转换模板 -->
      <xsl:template match="jats:article-title">
        <mods:titleInfo>
          <mods:title><xsl:value-of select="."/></mods:title>
        </mods:titleInfo>
      </xsl:template>
    
      <!-- 个人作者转换模板 -->
      <xsl:template match="jats:contrib[@contrib-type='author']">
        <mods:name type="personal">
          <mods:namePart type="given"><xsl:value-of select="jats:name/jats:given-names"/></mods:namePart>
          <mods:namePart type="family"><xsl:value-of select="jats:name/jats:surname"/></mods:namePart>
          <xsl:if test="jats:email">
            <mods:email><xsl:value-of select="jats:email"/></mods:email>
          </xsl:if>
        </mods:name>
      </xsl:template>
    
      <!-- 出版日期转换模板(ISO8601格式) -->
      <xsl:template match="jats:pub-date">
        <mods:originInfo>
          <mods:dateIssued encoding="iso8601">
            <xsl:value-of select="concat(jats:year, '-', format-number(jats:month, '00'), '-', format-number(jats:day, '00'))"/>
          </mods:dateIssued>
        </mods:originInfo>
      </xsl:template>
    </xsl:stylesheet>
    
  • 第三步:执行转换
    使用成熟的XSLT处理器(如Saxon、Xalan)运行转换,以Saxon HE为例,命令如下:

    java -jar saxon-he-12.4.jar -s:your_jats.xml -xsl:jats_to_mods.xsl -o:your_mods.xml
    

现有资源复用建议

你无需完全从零编写模板:

  • 不少学术图书馆、出版社公开了适配通用场景的JATS-MODS转换XSLT,可直接下载后根据你的具体元数据需求修改
  • 注意核对JATS和MODS的版本,确保模板中的命名空间、节点结构与你的源文件/目标格式匹配

关键注意事项

  • 处理特殊场景:比如机构作者、多语言标题、合著者排序、基金信息等,需要在XSLT中添加条件判断或额外模板
  • 验证输出:转换完成后,用MODS官方Schema验证工具检查输出XML是否符合规范

内容的提问来源于stack exchange,提问作者Dominik Kern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:34:49