2012-10-16 3 views
1

부분적으로 마크 업된 많은 OCRed 문서가 있습니다. 목차에서 작업 링크를 만들려고합니다. 목차는 기존의 목차를 사용하여 문서 내에서 링크 만들기

<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> 

그래서 @xml의 값 당기면 심판의 값이 PB의 @n의 값의 일부로서 동일하고 경우 테스트 할 수있는 방법이

포맷 : ID를하고 ref 요소에서 사용 하시겠습니까? 이 작업을 수행하는 데 복잡한 방법이 있습니까?

+0

제목을 짧고 설득력있게 만드십시오 !! – Deepak

+0

** n ** 속성은 항상 두 부분으로 구성되거나 여러 개의 하이픈을 포함 할 수 있습니까? –

+0

페이지 번호를 나타냅니다. 때로는 n-n (또는 nn-nn 또는 nnn-nnn) 형식의 두 부분으로 구성되며 때로는 대시가없는 단일 부분으로 만 구성됩니다. – user1748728

답변

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에서는 좀 더 우아하고 콘체츠없이 할 수 있지만 더 간결하지는 않습니다.

+0

그 작품처럼, 감사합니다 – user1748728

+0

귀하의 질문에 만족했다면, [스택 오버플로 컨벤션] (http://stackoverflow.com/faq#howtoask) 옆에있는 체크 표시 개요를 클릭하는 것입니다 대답. (코니가 들리는 것처럼, 평판은 당신이 대답을 할 때 시스템이 응답을하게하고, 그렇게 할 때 놀라 울 정도로 동기 부여가된다.) –

관련 문제