我是XSL FO的初学者。 我有一个非常简单的XML文档:
<?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
解析文档你能告诉我使用什么功能吗?
提前致谢
答案 0 :(得分: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找到许多问题。