xml - 在 XSL 文档中添加外部图形的相对路径?

标签 xml xslt xsl-fo dita

首先,我对 XSL 不太了解。

我正在使用一个名为 DITA 的应用程序来生成 pdf。它需要的事情之一是覆盖 xsl 文件;添加自定义样式。

我正在尝试使用相对路径添加外部图形。除非我提供完整路径,否则它不起作用。

不起作用:

<fo:block text-align="center" width="100%">
  <fo:external-graphic src="../../images/logo.png"/>
</fo:block>

有效:

<fo:block text-align="center" width="100%">
  <fo:external-graphic src="/absolute/path/to/images/logo.png"/>
</fo:block>

我在网上查了一下,它说使用“​​file:image.png”,其他网站说使用“url(image.png)”,但都不起作用。

我做错了什么?

最佳答案

这是一个老问题,但在使用 DITA-OT 时经常被误解。
需要了解的重要一点是,外部图形路径是相对于 DITA-OTArtwork.dir 的。

我可以想到两种添加 Logo 的方法。

简单的方法

将 logo.png 复制到 arwork 目录

DITA-OT/demo/fo/cfg/common/artwork/logo.png

将 xsl 图形路径更改为

<fo:block text-align="center" width="100%">
  <fo:external-graphic src="Configuration/OpenTopic/cfg/common/artwork/logo.png"/>
</fo:block>

更难的方法

可以更改 DITA 从中获取图片的图稿目录以及 FOP 将用于渲染 PDF 的输出目录。

打开build.xml文件

DITA-OT/demo/fo/build.xml

图稿根

定义 DITA 将图稿复制到的根目录 默认为

<property name="artwork.dir" value="${dita.map.output.dir}"/>

这会将根目录设置为保存最终 PDF 的位置。

艺术品目的地

定义相对于图稿根目录的文件存储路径

<copy todir="${coreArtworkDestinationDir}/Configuration/OpenTopic"

默认情况下,它将创建文件夹 /Configuration/OpenTopic,然后复制其中的所有内容,包括子目录。
确保更改目的地两次。您需要编辑的两个位置仅相距几行。

作品来源

定义原始图稿的保存位置,以便 DITA-OT 可以将文件复制到目标位置。
第一行指向 DITA-OT 附带的默认图稿,不应更改。

<fileset dir="${basedir}" includes="cfg/common/artwork/**/*.*"/>

第二个用于定制,因此应该用于定制。

<fileset dir="${customization.dir}" includes="common/artwork/**/*.*"/>

该路径相对于 DITA-OT/demo/fo/Customization。

关于xml - 在 XSL 文档中添加外部图形的相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282692/

相关文章:

java - 使用xslt将xml转换为xsl-fo时如何创建超链接?

xslt - "<xsl:call-template name="commonattributes"/>"是什么意思以及如何使用?

xsl-fo - 使用 Apache FOP 在 XSL-FO 中的下划线文本下放置字母

php - 解析xml到mysql

C# - XML - 压缩

java - RecyclerView Item 不包裹 ListView 的高度

XSLT 根标记命名空间而不是元素属性命名空间

css - 通过 CSS 操作 xslt 菜单

xml - XSL : finding a node based on the content of another node

list - XSL-FO-如何在两个列表 block 中继续编号?