2014-01-24 75 views
-1

我想使用我的xsl文件在我的PDF報告中創建一個標題。如果源文件包含超鏈接,則應將其呈現爲超鏈接,否則爲純文本。使用xlst將xml轉換爲xsl-fo時動態創建超級鏈接?

例如,我的XML看起來像:

<a href='http://google.com' target='_blank'>This is the heading </a>" 

它應該顯示的超鏈接(如果有),否則顯示的標題爲純文本。 我該怎麼做?

我不能夠使用,否則標籤下,下面的代碼,請參見下面

<xsl:choose> 
    <xsl:when test="($RTL='true') or ($RTL='True')"> 
     <fo:block wrap-option="wrap" hyphenate="true" text-align="right" font-weight="bold"> 
     <xsl:value-of select="@friendlyname" /> 
     </fo:block> 
    </xsl:when> 
    <xsl:otherwise> 
     <!--<fo:block wrap-option="wrap" hyphenate="true" font-weight="bold">--> 
     <xsl:template match="a"> 
     <fo:block> 
      <xsl:choose> 
      <xsl:when test="@href"> 
       <fo:basic-link> 
       <xsl:attribute name="external-destination"> 
        <xsl:value-of select="@href"/> 
       </xsl:attribute> 
       <xsl:value-of select="@friendlyname" /> 
       </fo:basic-link> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="@friendlyname" /> 
      </xsl:otherwise> 
      </xsl:choose> 
     </fo:block> 

     </xsl:template> 

     <!--<xsl:value-of select="@friendlyname" />--> 

     <!--</fo:block>--> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:if> 

我如何使用它呢?

+0

這是使用'xsl:template'元素的不正確方法。它不能在'否則'裏面。所以,現在(即自更新了您的問題以來),您的問題與基本鏈接無關,但具有編寫XSLT代碼的基本規則。 –

回答

0

要在XSL-FO中顯示鏈接,請使用fo:basic-link。詳情請參閱the relevant part of the specification

這創建了一個簡單的,可點擊的鏈接,沒有任何格式。也就是說,格式是從周圍的塊元素繼承的。因此,如果您的鏈接應加下劃線或以藍色顯示,則必須明確指定。例如,通過使用fo:inline元素。

現在,在XSLT代碼而言,如果遇到a元素:

<xsl:template match="a"> 
<fo:block><!--This is the heading block--> 

測試是否有href屬性或不:

<xsl:choose> 
    <xsl:when test="@href"> 
     <fo:basic-link> 
     <xsl:attribute name="external-destination"> 
      <xsl:value-of select="@href"/> 
     </xsl:attribute> 
     <xsl:value-of select="."/> 
     </fo:basic-link> 
    </xsl:when> 

在另一方面,如果有沒有這樣的屬性:

<xsl:otherwise> 
     <xsl:value-of select="."/> 
    </xsl:otherwise> 
    </xsl:choose> 
</fo:block> 

</xsl:template> 

基本鏈接可以有一個ex外部或內部目的地。例如,後者用於引用目錄中的特定章節。

+0

你現在可以看看更新後的描述嗎? –

+0

每當它進入其他條件並從不拾起超鏈接?這是我的實際價值This is the heading

+0

我對您的原帖發表了評論。看來,你把我的答案插入了錯誤的地方。如果周圍的模板匹配'a'元素,'xsl:choose'只能按照預期工作。 –