使用预先存在的目录在文档中创建链接

时间:2012-10-16 02:31:15

标签: xml xslt xpath tableofcontents

我有大量已部分标记的OCR文档。我正在尝试在目录中创建工作链接。目录格式为

<document>
  <text>
     <list>
        <item>Chapter 1<ref>7</ref></item>
        <item>Chapter 2<ref>27</ref></item>
        <item>Chapter 3<ref>54</ref></item>
        <item>Chapter 4<ref>77</ref></item>
     </list>
     <body>
      OCRED text <pb n="7-8" xml:id="VAB0003"/> OCRED text
     </body>   
</document>

有没有办法测试ref的值是否与pb中@n值的一部分相同然后如果是这样拉@xml:id的值并在ref元素中使用它? 是否有一种不太复杂的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找这样的东西:

<xsl:template match="ref*">
  <xsl:variable name="page" select="."/>
  <xsl:variable name="target" 
                select="//pb[contains(
                        concat(' ',translate(@n,'-',' '),' '), 
                        concat(' ',$page,' '))]/@xml:id"/>
  <xsl:copy>
    <xsl:if test="$target">
      <xsl:attribute name='target'>
        <xsl:value-of select="$target"/>
      </xsl:attribute>
    </xsl:if>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

target的定义中存在复杂的连接,以确保您匹配页码的完整标记;在XSLT 2.0中,它可以更优雅地完成,没有连接,但不是更简洁。