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

如何使用XSLT 2.0实现XML格式简单双语词典的反转转换

修正后的XSLT实现

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>

<xsl:template match="items">
  <items>
    <xsl:for-each-group select="item" group-by="vertacl/verta|voorbcl/verta/@reverseword">
      <xsl:variable name="current-entry" select="current-grouping-key()"/>
      <item>
        <!-- 生成新词条簇 -->
        <trefwcl>
          <trefw><xsl:value-of select="$current-entry"/></trefw>
        </trefwcl>
        <!-- 转换原词条簇为新译文簇 -->
        <xsl:for-each select="current-group()/trefwcl">
          <vertacl>
            <verta><xsl:value-of select="trefw"/></verta>
            <xsl:copy-of select="label"/>
          </vertacl>
        </xsl:for-each>
        <!-- 处理反转示例簇 -->
        <xsl:variable name="match-voorb" select="//voorbcl[verta/@reverseword = $current-entry]"/>
        <xsl:if test="$match-voorb">
          <voorbcl>
            <voorb><xsl:value-of select="$match-voorb/verta[@reverseword = $current-entry]"/></voorb>
            <verta><xsl:value-of select="$match-voorb/voorb"/></verta>
          </voorbcl>
        </xsl:if>
      </item>
    </xsl:for-each-group>
  </items>
</xsl:template>

</xsl:stylesheet>

修改说明

  1. 保留原有分组逻辑,以原译文字段和示例的反向映射属性reverseword为分组键生成新词条
  2. 将原有分组内的词条簇trefwcl转换为新的译文簇vertacl,原词条内容作为新译文,保留原有词性标签label
  3. 匹配所有reverseword等于当前新词条的示例,反转示例原文和译文的位置生成新的示例簇

内容的提问来源于stack exchange,提问作者Robert E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:02