2016-08-16 5 views
0

XSLT를 사용하여 Word 파일을 XML로 변환합니다. 테이블에서 rowspan 속성을 얻는 방법.w : vML을 Word ML에서 HTML의 행 스팬으로 병합

이것은 이것을 달성하기위한 XSLT 코드입니다.

<xsl:template match="w:tc"> 
    <xsl:choose> 
     <xsl:when test="w:tcPr/w:vMerge[@w:val='restart'] or w:tcPr[not(w:vMerge)]"> 
      <td> 
       <xsl:if test="w:tcPr/w:gridSpan"> 
        <xsl:attribute name="colspan" select="w:tcPr/w:gridSpan/@w:val"/> 
       </xsl:if> 
       <xsl:if test="w:tcPr/w:vMerge[@w:val='restart']"> 
       <xsl:value-of select="count(parent::w:tr/following-sibling::w:tr[w:tc/w:tcPr/w:vMerge[not(@w:val)]])"/> 
       </xsl:if> 
       <xsl:apply-templates/> 
      </td> 
     </xsl:when> 
    </xsl:choose> 
</xsl:template> 

그러나이 코드는 모든 행을 계산합니다. 카운트를 다음 @w : val = 'restart'로 제한해야합니다. XSLT에서도 가능합니까?

답변

0

는 XSLT 3.0을 사용하는 경우, 노드가 (2.0) 다른 노드 전에 여부를 테스트하는 << 비교 연산자가, 당신은 와 다음 @w:val='restart'하자 바인딩 할 수 있습니다.

let $guard := parent::w:tr/following-sibling::w:tr[@w:val='restart'][1] 
    (: Note: I probably got the above XPath wrong so it needs fine-tuning :) 
return count(
    parent::w:tr/following-sibling::w:tr 
    [. << $guard] 
    [w:tc/w:tcPr/w:vMerge[not(@w:val)]] 
) 
+0

우리는 오픈 소스 색슨 즉 HE 버전만을 사용하고 있습니다. XSLT 3.0은 HE의 일부가 아닙니다. –