2017-06-18 127 views
0

我使用xsl fo和Java生成XML的PDF。我需要在我的6列表的一列中嵌入超鏈接。這是我的代碼片段。使用xsl fo創建PDF文檔中的超鏈接

<fo:table-row> 
    <xsl:for-each select="./clientMain/hierarchy/link"> 
    <fo:table-cell border="solid 1px black" text-align="left" font-size="10pt"><fo:block>Hierarchy</fo:block></fo:table-cell> 
    <fo:table-cell border="solid 1px black" text-align="left" font-size="9pt"> 
    <fo:block><a> 
    <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute> 
    </a></fo:block> 
    <fo:block><xsl:value-of select="@link"/></fo:block></fo:table-cell> 
    </xsl:for-each> 
    </fo:table-row> 

但我的計劃失敗,此錯誤:

javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:table-row" is missing child elements. Required content model: (table-cell+) (No context info available) 
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:718) 
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) 
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682) 
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) 
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682) 
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) 

如果我評論此行一切工作正常。請幫忙 !!!!

+1

請出多一點的輸入XML的......也許它是xpath'./cli entMain/hierarchy/link'不匹配任何東西?鏈接元素是否具有「鏈接」屬性或確切的結構是什麼?另外,我不確定是否爲塊添加href屬性使其成爲xsl-fo超鏈接,也許您會在xsl-fo spec/doc中檢查一下。 –

+2

如果'xsl:for-each'沒有檢測到任何節點,那麼您最終將得到一個沒有表格單元格的表格行,從而導致錯誤。 –

回答

1

不是解決「FO:錶行」缺少子元素的錯誤,但:

在你的代碼來看,我預計這些鏈接將無法工作,而不是的<a>標籤,使用。 <fo:basic-link internal-destination="@link" color="blue">

這是假定@link包含對ID的引用某處PDF。

對於外部鏈接,請使用<fo:basic-link external-destination="url">

+0

這工作..非常感謝你 –