0

我正在编写一个将 XML 转换为 XHTML 报告的 XSL 文件。此 XML 包含的图像 ID 是纸质扫描件(美国信函),可以是各种尺寸,也可以是横向或纵向。我正在寻找一种将它们最大化打印到一页纸(带有自定义标题)的方法。所以我可以旋转图像以使其适合纵向页面,或者告诉打印机在横向模式下考虑该页面。看起来像:

<img id="portrait" src="http://1.2.3.4/img/getImage.cgi?ID=1" />
<img id="landscape" src="http://1.2.3.4/img/getImage.cgi?ID=2" />

或者

<img src="http://1.2.3.4/img/getImage.cgi?ID=1" />
<div id="landscape">
    <img src="http://1.2.3.4/img/getImage.cgi?ID=2" />
</div>

我考虑了什么,为什么它不起作用:

  • 我知道 XSL 不能这样做,因为它只链接图像而不加载它们,因此它不知道它们的属性。
  • HTML 也无法做到这一点,因为它是由 XSLT 转换呈现的,并且代码无法自行更新;)
  • 我也不认为这是 CSS 的目的。尽管我愿意尝试但尚未找到明确的方法,但 JavaScript 可能无法很好地与 Flying Saucer(PDF 生成)一起使用。
  • 我无权访问在数据库中检索图像的 CGI 脚本。所以我不能修改它们。

我没有考虑过: - 反过来评估问题,使用另一个工具(例如 perl 脚本)来读取 XML 文件并生成正确的 HTML 报告。然而,如果可能的话,这将是一种不同的技术,我想避免。

您对此有何看法,你们中的一些人对此是否有经验以及如何解决此问题的任何提示或建议?

一如既往,非常感谢您抽出宝贵的时间。

此致,

曼尼

4

1 回答 1

1

如果您能够按照您在评论中所说的那样通过服务器端脚本制作某种形式,我会考虑做一些事情

  1. 创建一个附加脚本(即 /img/GetInfoData.cgi?ID=2 ,它返回类似于以下内容的 XML:<ImageInfo height="23" width="100" orientation="landscape" alt="Alt Text" src="/img/GetImage.cgi?ID=2"/>

  2. 然后在你的 XSLT 中你可以使用<xsl:variable name="ImageInfo" select="document("/img/GetImageData.cgi?ID=2")/>

  3. 然后,您可以使用<xsl:if test="$ImageInfo/ImageInfo/@orientation='landscape'>

希望有帮助。我确信这不是最快的解决方案,但它可以防止你不得不使用太多额外的技术。

于 2012-05-02T14:59:18.800 回答