xsl -xml fo文件-将表数据输入到xml

如何解决xsl -xml fo文件-将表数据输入到xml

|| 我有xsl-xml文件,可以将其转换为fop文件(使用FOP factory,
javax.xml.transform.TransformerFactory
),因此最终我可以将其转换为PDF。到现在为止,我只需要输入简单的数据,因此在xsl中,我将编写如下内容:
<xsl:template match=\"p\">
    <fo:block>
        <xsl:apply-templates/>
    </fo:block>
</xsl:template>
<xsl:template match=\"center\">
    <fo:block alignment-adjust=\"middle\">
        <xsl:apply-templates/>
    </fo:block>
</xsl:template>
<xsl:template match=\"b\">
    <fo:inline font-weight=\"bold\">
        <xsl:apply-templates/>
    </fo:inline>
</xsl:template>
等等。 当我将其转换为fop文件时,我得到:
<fo:block text-align=\"center\" font-weight=\"bold\" 
          text-decoration=\"underline\" 
          padding-after=\"10\">Sales Contract for <fo:inline font-weight=\"bold\"
          color=\"red\">Mobile  100</fo:inline>
</fo:block>
等等... 现在,我需要显示一个包含数据的表。如何用XML定义表模板以及必须在XML中添加什么?     

解决方法

我不明白您想要什么...但是在每种情况下,我都在写一个表格示例。 假设您有一个表格,其格式如下,其中标记“ \”行代表表的行,标记“ \ entry \”代表列:
  <table ENABLE=\"true\" id=\"\" title=\"\">
    <tgroup ENABLE=\"true\" cols=\"\">
      <tbody ENABLE=\"true\">
        <row ENABLE=\"true\">
          <entry ENABLE=\"true\" align=\"0 left\">
            <text ENABLE=\"true\">
              <DATA ENC=\"enc\" LABEL=\"label\">First row,first column (entry)</DATA>
            </text>
          </entry>
          <entry ENABLE=\"true\" align=\"0 left\">
            <text ENABLE=\"true\">
              <DATA ENC=\"enc\" LABEL=\"label\">First row,second column (entry)</DATA>
            </text>
          </entry>
        </row>
        <row ENABLE=\"true\">
          <entry ENABLE=\"true\" align=\"0 left\">
            <text ENABLE=\"true\">
              <DATA ENC=\"enc\" LABEL=\"label\">Second row,first column (entry)</DATA>
            </text>
          </entry>
          <entry ENABLE=\"true\" align=\"0 left\">
            <text ENABLE=\"true\">
              <DATA ENC=\"enc\" LABEL=\"label\">Second row,second column (entry)</DATA>
            </text>
          </entry>
        </row>
      </tbody>
    </tgroup>
  </table> 
xsl-fo可以是:
    <xsl:template match=\"table\">
        <fo:block>
            <fo:inline font-size=\"10pt\" font-weight=\"bold\"  clear=\"both\" float=\"right\">
                <xsl:text>Table&#x20;</xsl:text><xsl:if test=\"@id\"><xsl:apply-templates select=\"@id\"/></xsl:if><xsl:if test=\"@title\"><xsl:text>&#x20;</xsl:text><xsl:apply-templates select=\"@title\"/></xsl:if>
            </fo:inline>
        </fo:block>
        <xsl:if test=\"descendant::*[self::row]\">
          <fo:table margin-top=\"0.2in\" border-top-color=\"#a0c0ff\" border-top-width=\"0.01042in\" border-bottom-style=\"solid\" border-bottom-color=\"#a0c0ff\" border-bottom-width=\"0.01042in\" border-left-style=\"solid\" border-left-color=\"#a0c0ff\" border-left-width=\"0.01042in\" border-right-style=\"solid\" border-right-color=\"#a0c0ff\" border-right-width=\"0.01042in\" border-collapse=\"separate\" background-color=\"#e9e9ff\" color=\"black\" display-align=\"center\" text-align=\"left\">
                <xsl:apply-templates select=\"child::*[self::thead or self::tbody or tfoot]\" mode=\"calculate_columns\"/>              
                    <fo:table-body>
                                <xsl:apply-templates/>
                      </fo:table-body>
                     </fo:table>
                    <fo:block>
                        <fo:leader leader-pattern=\"space\"/>
                    </fo:block>
        </xsl:if>
    </xsl:template>         

    <xsl:template match=\"row\" mode=\"calculate_columns\">
          <xsl:variable name=\"columns\" select=\"count(entry)\"/>
          <xsl:variable name=\"table-width\" select=\"ancestor::table[@width]\"/>
          <xsl:param name=\"maxwidth\" select=\"7.30000\"/>
          <xsl:variable name=\"column-width\">
            <xsl:value-of select=\"concat($table-width div $columns,\'cm\')\"/>
          </xsl:variable>
            <xsl:for-each select=\"entry\">
                <xsl:variable name=\"column-number\">
                  <xsl:number level=\"multiple\" count=\"entry\" format=\"1\" />
                </xsl:variable>
                <fo:table-column column-number=\"{$column-number}\"  column-width=\"{$column-width}\"/>
            </xsl:for-each>
    </xsl:template>

    <xsl:template match=\"row\">
      <fo:table-row>
        <xsl:apply-templates/>
      </fo:table-row>
    </xsl:template>

    <xsl:template match=\"entry\">
      <fo:table-cell border-top-style=\"solid\" border-top-color=\"#a0c0ff\" border-top-width=\"0.01042in\" border-bottom-style=\"solid\" border-bottom-color=\"#a0c0ff\" border-bottom-width=\"0.01042in\" border-left-style=\"solid\" border-left-color=\"#a0c0ff\" border-left-width=\"0.01042in\" border-right-style=\"solid\" border-right-color=\"#a0c0ff\" border-right-width=\"0.01042in\">
        <fo:block padding-top=\"1pt\" padding-bottom=\"1pt\">
        <fo:inline>
          <xsl:apply-templates/>
         </fo:inline>
        </fo:block>
      </fo:table-cell>
    </xsl:template>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-