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

如何通过XPath匹配@rid提取对应aff元素的关联值?

解决XSLT中匹配@rid与@id提取对应机构信息的问题
  • 核心逻辑:处理每个<contrib>时,要基于当前节点的@rid属性值,精准定位到@id属性与之匹配的<aff>元素,而非全局选取所有<aff>节点。

  • 修正后的XPath写法:
    根据你的XML结构层级选择对应写法:

    • 如果<aff>在文档任意位置,用全局匹配结合当前节点属性:
      <xsl:value-of select="//aff[@id = current()/@rid]"/>
      
    • 如果<aff>是<contrib>的兄弟节点(或可通过相对路径快速定位),用更高效的相对路径:
      <xsl:value-of select="../aff[@id = @rid]"/>
      
  • 完整示例(以常见学术XML结构为例):
    XML源示例:

    <article>
      <aff id="aff1">北京大学计算机学院</aff>
      <aff id="aff2">清华大学电子工程系</aff>
      <contrib-group>
        <contrib rid="aff1">张三</contrib>
        <contrib rid="aff2">李四</contrib>
      </contrib-group>
    </article>
    

    对应XSLT模板:

    <xsl:template match="contrib">
      <p>
        <xsl:value-of select="."/> - <xsl:value-of select="//aff[@id = current()/@rid]"/>
      </p>
    </xsl:template>
    

    此写法会让每个作者仅输出对应的机构信息,不会重复显示所有机构内容。

  • 关键细节:

    • current()函数用于锁定当前正在处理的<contrib>节点,确保匹配的是当前节点的@rid值,避免上下文混淆。
    • 优先使用相对路径替代全局路径//aff,能大幅提升大XML文件的处理效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:23:12