2011-05-25 88 views
1

我是XSL FO的初学者。 我有一个非常简单的XML文档:在XSL FO文档中写入XSL-t

<?xml version= "1.0" ?> 
<test> 
TEST 
</test> 

我想打印的标签<test>

我写了下面XLS FO文档由FOP处理的内容。

<fo:root xmlns:yt="http://www.yseop.com/text/2" 
xmlns:y="http://www.yseop.com/engine/3" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 


    <fo:layout-master-set> 
     <fo:simple-page-master master-name="rapport"> 
     <fo:region-body margin-top="0.75in" margin-left="0.75in" margin-right="0.75in" margin-bottom="0.75in"/> 
     <fo:region-after extent="0.25in"/> 
     <fo:region-start/> 
     </fo:simple-page-master> 
    </fo:layout-master-set> 

    <fo:page-sequence master-reference="rapport"> 

     <fo:flow flow-name="xsl-region-body"> 
      <fo:block> 
      XXX 
       <xsl:apply-templates select="document('D:\XXX-conseilVente\xmlBatch\input_test1.xml')/test"/> 
      </fo:block> 
     </fo:flow> 
    </fo:page-sequence> 



</fo:root> 

我得到以下警告:

 [fop] 25 mai 2011 12:05:10 org.apache.fop.events.LoggingEventListener processEvent 
     [fop] ATTENTION: Unknown formatting object "{http://www.w3.org/1999/XSL/Transform}apply-templates" encountered (a child of fo:block}. (See position 22:99) 

并没有什么对我的输出PDF。

我想我没有使用正确的函数解析使用XSL-T文档

你能告诉我用什么功能?

在此先感谢

回答

4

XSLT和XSL-FO是两种不同的语言。基本上,它的运行方式与目前的做法相比:FO嵌入在XSLT样式表中,然后用于处理原始XML以创建XSL-FO文档(不含任何XSLT)。这被扔在XSL-FO处理器上以创建例如PDF。

XSLT  processing 
    |   | 
XML ---> XSL-FO ---> PDF 

所以,你开始用XSLT样式表是这样的(没有命名空间和这样的,只是给你一个想法):

<xslt:stylesheet> 

    <xslt:template match="/"> 
    <fo:root> 
     <!-- fo head --> 
     <fo:page-sequence> 
     <fo:flow> 
      <xslt:apply-templates /> <!-- process the rest of the doc--> 
     </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 
    </xslt:template> 

    <xslt:template match="test"> 
    <fo:block> 
     <xslt:value-of select="." /> 
    </fo:block> 
    </xslt:template> 

</xslt:stylesheet> 

你可以找到Dave Pawson's XSL FAQ ansered许多问题。

+0

非常感谢,它完美的作品。 – 2011-05-25 15:31:17

+0

不客气。 – Boldewyn 2011-05-25 17:48:50