2017-06-18 123 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

这工作..非常感谢你 –