我想使用我的xsl文件在PDF报告中创建标题。如果源文件包含超链接,则应将其呈现为超链接,否则为纯文本。
例如,我的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 :(得分:1)
要在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>
基本链接可以包含外部或内部目标。后者用于指代目录中的特定章节。