标签: xsl-fo

XSL-FO 创建动态目录

我们如何在 XSL-FO 中动态创建目录页面?

xsl-fo flow reference dynamic tableofcontents

1
推荐指数
1
解决办法
4037
查看次数

使用外部 XML 文档本地化 XSLT 输出

我有一个 XSLT 样式表,可将 XML 数据转换为 XSL-FO(然后使用 Apache FOP 将其呈现为 PDF)。

现在,我需要将输出本地化为几种不同的语言。例如,XSLT 生成的表的列标题需要本地化。下面是生成带有列标题“Date”“Name”“Something”的表标题的 XSLT 的简化片段:

  ...
  <fo:table>
    <fo:table-header>
      <fo:table-row>
        <fo:table-cell>
          <fo:block>Date</fo:block>
        </fo:table-cell>
        <fo:table-cell>
          <fo:block>Name</fo:block>
        </fo:table-cell>
        <fo:table-cell>
          </fo:block>Something</fo:block>
        </fo:table-cell>
      </fo:table-row>
    </fo:table-header>
    </fo:table-body>
      <xsl:apply-templates select="item"/>
    </fo:table-body>
   </fo:table>
  ...
Run Code Online (Sandbox Code Playgroud)

我们已经在系统的其他部分使用TMX文件进行国际化,因此这似乎是一种自然的方法。下面是一个 TMX 文件的简化示例,其中包含两个语言的几个字符串:

<tmx version="1.4b">
  <body>
    <tu tuid="DATE">
      <tuv xml:lang="en"><seg>Date</seg></tuv>
      <tuv xml:lang="sv"><seg>Datum</seg></tuv>
    </tu>
    <tu tuid="NAME">
      <tuv xml:lang="en"><seg>Name</seg></tuv>
      <tuv xml:lang="sv"><seg>Namn</seg></tuv>
    </tu>
 </body>
</tmx>
Run Code Online (Sandbox Code Playgroud)

因此,基本上我想用 TMX 文件中的字符串引用(使用tuid属性)替换 XSLT 中的硬编码列标题,以便相同的 XSLT 可以生成不同语言的输出。

但我似乎找不到任何有关如何将 TMX 文件与 XSLT 结合使用的资源。示例或指向一些好的教程的指针将不胜感激。

xslt localization xsl-fo internationalization tmx

1
推荐指数
1
解决办法
2605
查看次数

Apache FOP XML - XLS-FO 生成无效的 pdf

我正在尝试使用 Apache FOP 从使用 xlst 样式表格式化的 xml 文件创建 PDF 文档,以将原始 xml 文件转换为 xml-fo 格式的 xml 文件。由于我是新手,我尝试创建一个简单的 hello world 示例,但没有成功。

生成过程似乎成功(无例外),但生成的 pdf 文件由于某种原因无效。该文件大小为4.8KB,使用libreoffice writer打开时,数据肯定已写入该文件,但该文件无法在pdf阅读器中打开。

XML 文件相当简单:

<rentalRequest>
  <firstName>foo</firstName>
  <lastName>bar</lastName>
  <email>foo@bar.com</email>
  <street>foo street</street>
  <houseNo>42</houseNo>
  <postalCode>4242</postalCode>
  <city>bar city</city>
</rentalRequest>
Run Code Online (Sandbox Code Playgroud)

XSL 文件,只是尝试打印 Hello World!:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                xmlns:fo="http://www.w3.org/1999/XSL/Format">

    <xsl:output method="xml" indent="yes" />

    <xsl:template match="/">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>          
                <fo:simple-page-master master-name="all">
                    <fo:region-body />
                </fo:simple-page-master>
            </fo:layout-master-set>

            <fo:page-sequence master-reference="all">
                <fo:flow flow-name="xsl-region-body">
                    <fo:block>
                        Hello World!
                    </fo:block>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

使用JAXP + FOP生成pdf文件的java代码:

<rentalRequest>
  <firstName>foo</firstName> …
Run Code Online (Sandbox Code Playgroud)

xml pdf xslt xsl-fo apache-fop

1
推荐指数
1
解决办法
2859
查看次数

XSLT 和 XSL-FO:创建多行表?

我对 XSLT 还很陌生,我遇到了一个问题,我有一个包含未知数量的孩子的元素,我需要在表格中显示这些孩子,以便有 5-6 列可用于显示信息。

如果我得到一个如下所示的 XML 文件:

<books>
    <book>
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
    </book>
    <book>
        <author>Corets, Eva</author>
        <title>Maeve Ascendant</title>
    </book>
    <book>
        <author>Corets, Eva</author>
        <title>Oberon's Legacy</title>
    </book>
    <book>
        <author>Randall, Cynthia</author>
        <title>Lover Birds</title>
    </book>
    <book>
        <author>Thurman, Paula</author>
        <title>Splish Splash</title>
    </book>
    <book>
        <author>Knorr, Stefan</author>
        <title>Creepy Crawlies</title>
    </book>
    <book>
        <author>Kress, Peter</author>
        <title>Paradox Lost</title>
    </book>
    <book>
        <author>Crichton, Michael</author>
        <title>Jurassic Park</title>
    </book>
    <book>
        <author>Orwell, George</author>
        <title>1984</title>
    </book>
    <book>
        <author>Martin, George</author>
        <title>A Song of Ice And Fire</title>
    </book>
</books>
Run Code Online (Sandbox Code Playgroud)

我想在一个由两行五列组成的表格中显示这 10 本书。

我已经走了这么远:

<xsl:template match="books" mode="table"> …
Run Code Online (Sandbox Code Playgroud)

xml xslt xsl-fo

1
推荐指数
1
解决办法
9066
查看次数

XSLT FO 内联容器的水平对齐

我正在尝试水平对齐内联容器,但找不到相应的 FO 属性,例如用于垂直对齐的 display-align 。

这是一些没有任何对齐的示例代码:

<fo:inline-container background-color="white" border-style="solid" border-width="2mm" border-color="white">
    <fo:block font-family="Blablabla" text-align="center" font-size="54pt" space-after="6mm" text-indent="0mm" last-line-end-indent="0mm" alignment-baseline="central">
        ...
    </fo:block>
</fo:inline-container>
Run Code Online (Sandbox Code Playgroud)

整个事情将使用 AntennaHouse 5.2 进行处理。

预先感谢斯塔夫罗斯

xslt xsl-fo antenna-house

1
推荐指数
1
解决办法
2971
查看次数

使用 xsl fo 在 PDF 文档中创建超链接

我正在使用 xsl fo 和 Java 从 XML 生成 PDF。我需要在我的 6 列表的一列中嵌入一个超链接。这是我的代码片段。

    <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>
Run Code Online (Sandbox Code Playgroud)

但我的程序失败并出现此错误:

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)
Run Code Online (Sandbox Code Playgroud)

如果我评论这一行,一切正常。请帮忙 !!!!

xslt xsl-fo apache-fop

1
推荐指数
1
解决办法
4153
查看次数

有没有为XML生成XSL的应用程序?

是否有任何应用程序从XML文件生成XSL样式表?我有一个非常复杂的XML文件,它是一个结构良好的SVG文件.

有没有将XML转换为XSL的软件应用程序?

xml xslt xsl-fo

0
推荐指数
1
解决办法
3921
查看次数

如何在XSL-FO中匹配&lt;sup&gt; value &lt;/ sup&gt;

我正在使用xsl-fo并尝试在 <sup>

例如,我想使2为上标。

<sup id="FNB-0002"><xref href="#Comp_CLJONLINE_CLJ_2010_04_2/FN-0002">2</xref></sup>

我正在使用以下代码,我认为应该可以。

 <xsl:template match="sup[@id='*']">    
        <fo:inline font-size="24pt" font-weight="bold" text-indent="2em" text-transform="uppercase" >
            <xsl:apply-templates/>
            </fo:inline>
    </xsl:template>
Run Code Online (Sandbox Code Playgroud)

但是我所应用的样式均未得到认可。我开始认为这是因为2位于外部参照中,而xsl-fo则忽略了它。

谁能给我一些指导,以迎合这些风格和风格

谢谢,

xpath xsl-fo

0
推荐指数
1
解决办法
3656
查看次数

xsl fo - 识别分页符和绘制线的位置

假设我有一个带有桌子的块:

<fo:block>
    <fo:table page-break-inside="avoid">
    ...
    </fo:table>
    <fo:table page-break-inside="avoid">
    ...
    </fo:table>
...
</fo:block>
Run Code Online (Sandbox Code Playgroud)

有没有办法在块中断时绘制线条或在块上放置边框底部?

见下图(红线是我需要和缺失的).

在此输入图像描述

我正在使用Apache FOP.

任何帮助将不胜感激.

xsl-fo

0
推荐指数
1
解决办法
691
查看次数