XSL FO - 跨命名空间和元素应用模板

时间:2014-01-21 12:01:58

标签: xslt namespaces xsl-fo

我想创建一个xsl fo样式表,它有条件地在输入xml文件的名称空间上应用模板,并且可以重用尽可能多的代码,同时可以访问整个文档中的变量。

< xsl:template match =“CreditNote | Invoice”>似乎有问题,因为它似乎需要包括变量在内的完整布局,并且不能跨标签应用。

在我的样式表中,我导入了一些定义:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:n1="bla:bla:CreditNote-2" 
xmlns:n2="bla:bla:Invoice-2">

我需要处理的xml文件采用以下格式:

<?xml version="1.0" encoding="UTF-8"?>
<CreditNote xsi:schemaLocation="ubla:bla:CreditNote-2 UBL-CreditNote-2.0.xsd">
<content>

所以在这方面我认为我需要使用命名空间作为确定如何处理文件的方法。

我使用apply-template进行了一些实验,没有太多运气。

我正在寻找的东西是这样的:

<apply if namespace is either CreditNote OR Invoice>
 <global variables>
</apply>

<apply if namespace is CreditNote>
 bar header
</apply>

<apply if namespace is Invoice>
 foo header
</apply>

<apply if namespace is either CreditNote OR Invoice>
 common body
</apply>

<fo:table>
 <fo:table-row>
  <fo:table-cell>

    <apply if namespace is CreditNote>
     bar footer
    </apply>

    <apply if namespace is Invoice>
     foo footer $variable
    </apply>

  </fo:table-cell>
  <fo:table-cell>booya</fo:table-cell>
 </fo:table-row>
</fo:table>

0 个答案:

没有答案