使用XSL-FO我想发布PDF文件的动态链接。我在StackOverflow上找到了这个,并且谷歌的许多例子都带有静态网址,但没有动态网址的示例。这就是我发布这个问题的原因。我想从xml文件生成链接(链接是元素'topicref'中属性'href'的值):
<script src='https://code.jquery.com/jquery-3.1.0.js'></script>
<table width='200' border='0'>
<tr>
<td><input id='a' class='radioOption' type='radio' name='RadioGroup0' value='a' />A</td>
<td><input id='b' class='radioOption' type='radio' name='RadioGroup0' value='b' />B</td>
<td><input id='c' class='radioOption' type='radio' name='RadioGroup0' value='c' />C</td>
<td><input id='d' class='radioOption' type='radio' name='RadioGroup0' value='d' />D</td>
</tr>
<tr>
<td class='other'>
<input type='radio' class='radioMore hasChild' name='RadioGroup1' id='a28' value='Other' />
<label for='a28'>Other</label>
<div class='text'>
<input type='text' id='other1' value='Other' class='hasParent'>
</div>
</td>
<td></td>
<td>
<input name='RadioGroup1' class='radioMore hasChild' type='radio' value='search' />Search
<input id='adjectiveSearch' type='search' name='search' placeholder='Search...' class='hasParent'>
</td>
<td>
<input name='RadioGroup1' class='radioMore' type='radio' value='d' />D
</td>
</tr>
</table>
<div id='result'>
</div>
我用过xsl-fo:
<?xml version="1.0" encoding="utf-8"?>
<map outputclass="DTVMap">
<title>Testdocument DTVmap</title>
<topicref format="dita" scope="local" href="ObjSt/bla/DTV/Testdocument_14.06.dita" navtitle="Testdocument 14.06" />
</map>
我收到一条消息: “与元素类型”null“关联的属性”external-destination“的值不得包含'&lt;'字符“。
我试图通过在xsl-fo中添加以下代码来获取链接,而不是从上面添加“basic-link external-destination”。
<fo:basic-link external-destination="url(<xsl:value-of select="map/topicref/@href"/>)" color="blue" text-
decoration="underline"><xsl:value-of select="map/topicref/@href"/></fo:basic-link>
现在生成的PDF中有一个链接,但链接是:'file:///C/ws/fo_xslt/ObjSt/bla/DTV/Testdocument_14.06.dita'而不是:'ObjSt / bla /DTV/Testdocument_14.06.dita”。
问题是;我怎样才能获得如下链接:'ObjSt / bla / DTV / Testdocument 14.06.dita'所以,没有'file:/// C / ws / fo_xslt'? 'C:/ ws / fo_xslt'是我放置生成的PDF的目录。 或者:如何获取仅包含href属性值的链接? 感谢
PS: 我用来生成pdf的Java类是(只是为了提供更多背景):
<xsl:value-of select="map/topicref/@href"/>
<xsl:param name="link" select="map/topicref/@href" />
<fo:basic-link color="blue" text-decoration="underline">
<xsl:attribute name="external-destination">
<xsl:value-of select="$link" />
</xsl:attribute>
<xsl:value-of select="$link" />
</fo:basic-link>
答案 0 :(得分:1)
最简单的方法是使用属性值模板。在要评估的表达式周围使用{
和}
:
<fo:basic-link external-destination="url({map/topicref/@href})"
color="blue" text-decoration="underline">
<xsl:value-of select="map/topicref/@href"/>
</fo:basic-link>
有关XSLT 1.0定义,请参阅https://www.w3.org/TR/xslt#attribute-value-templates。