在我的工作中,iv有一个小错误。只需要强调一个小文本部分。 但当我试图添加标签时出现错误。 它给我的错误报告,它不是一个有效的孩子。无法将<fo:inline>元素添加到我的xsl中
的错误如下:
Caused by: javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "fo:inline" is not a valid child of "fo:flow"! (See fo:flow, "Mademoiselle ADS S, 1, 10000 TRO...")
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2304)
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.ElemTemplate.execute(ElemTemplate.java:393)
at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:247)
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)
at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:682)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202)
at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
at com.albiran.ebiza.utilitaires.PDFGenerator.produceXMLData(PDFGenerator.java:117)
at com.satec.pdf.SAPDFGenerator.generatePDF(SAPDFGenerator.java:163)
at com.albiran.ebiza.envoi.AsyncAttachment.getPath(AsyncAttachment.java:41)
... 3 more
而且XSL文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:import href="SAPdfUtils.xsl" />
<xsl:output method="xml" encoding="ISO-8859-1" />
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- ******************************** Déclaration, des pages ************************** -->
<fo:layout-master-set>
<fo:simple-page-master master-name="mainpage"
page-width="21cm" page-height="29.7cm" margin-top="1cm"
margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
<fo:region-body region-name="xsl-region-body"
extent="0cm" margin-top="5cm" margin-bottom="2.5cm" margin-left="2cm"
margin-right="2cm" />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="mainpage"
font-family="Arial">
<!-- ******************************** Body ************************** -->
<fo:flow flow-name="xsl-region-body" font-size="12pt"
font-family="Arial" text-align="justify">
<!-- Page 1 -->
<xsl:call-template name="break" />
<xsl:call-template name="page1" />
<fo:block break-after="page" />
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template name="page1">
<fo:table table-layout="fixed">
<fo:table-column column-width="60%" />
<fo:table-column column-width="40%" />
<fo:table-body>
<fo:table-row text-align="left" font-weight="bold">
<xsl:call-template name="cellBreak" />
<fo:table-cell>
<fo:block>
<xsl:value-of select="/document/contractor/nameLong" />
</fo:block>
<xsl:call-template name="break" />
<fo:block>
<xsl:value-of select="/document/contractor/road" />
</fo:block>
<xsl:call-template name="break" />
<fo:block>
<xsl:value-of select="/document/contractor/city" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:block text-align="right">
Paris, le
<xsl:value-of select="/document/date" />
</fo:block>
<xsl:call-template name="break" />
<fo:block font-weight="bold">
Votre référence client : N°
<xsl:value-of select="/document/contractor/id" />
</fo:block>
<fo:block font-weight="bold">
N° de contrat :
<xsl:value-of select="/document/policy/id" />
</fo:block>
<fo:block font-weight="bold">
Intitulé du produit :
<xsl:value-of select="/document/policy/productName" />
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:inline text-decoration="underline">
Objet : Remise en vigueur de votre contrat d’assurance.
</fo:inline>
<fo:block padding="-10px">
<fo:leader leader-length="90%" leader-pattern="rule"
rule-style="solid" rule-thickness="0.1mm" color="black" />
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:block>
<xsl:value-of select="/document/contractor/longTitle" />
<xsl:text>,</xsl:text>
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:block>
Suite à votre règlement du
<xsl:value-of select="/document/dateOfThePayment" />
de votre prime de
<xsl:value-of select="/document/unpaidAmount" />
<xsl:call-template name="space" />
<xsl:text>€</xsl:text>
<xsl:call-template name="space" />
pour la période du
<xsl:value-of select="/document/startDate" />
au
<xsl:value-of select="/document/endDate" />
, nous vous confirmons la remise en vigueur votre contrat d’assurance en date d’effet du
<xsl:value-of select="/document/reinstatementDate" />
.
</fo:block>
<xsl:call-template name="break" />
<fo:block>
Nous restons à votre disposition.
</fo:block>
<xsl:call-template name="break" />
<fo:block>
Nous vous prions de croire,
<xsl:value-of select="/document/contractor/longTitle" />
<xsl:text>, en l'expression de nos sentiments dévoués.</xsl:text>
</fo:block>
<xsl:call-template name="break" />
<xsl:call-template name="break" />
<fo:table table-layout="fixed">
<fo:table-column column-width="60%" />
<fo:table-column column-width="40%" />
<fo:table-body>
<fo:table-row>
<xsl:call-template name="cellBreak" />
<fo:table-cell>
<fo:block>
Votre Conseiller SATEC
</fo:block>
<xsl:call-template name="break" />
<fo:block>
Tél. :
<xsl:value-of select="/document/satecPhone" />
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template name="cellBreak">
<fo:table-cell>
<xsl:call-template name="break" />
</fo:table-cell>
</xsl:template>
<xsl:template name="tableLineBreak">
<fo:table-row>
<xsl:call-template name="cellBreak" />
</fo:table-row>
</xsl:template>
</xsl:stylesheet>
我真的没有使用XSL文件可悲的是太多的经验。并且iv看到人们有这个问题,但是由于不同的原因。
非常感谢您提前和抱歉,如果我缺少一些简单或微不足道的东西,我只是不确定这里有什么问题。
我本来以为已经fo:table或fo:block不应该是fo:flow的孩子。我通常将所有内容都封装在fo:block中的fo:block:container/fo:block中,但这可能是一种烦躁,直到你看起来像以前一样。 –
除非我误读了某些内容,否则我们在您的XSL中看不到任何名为“break”的模板,但您始终可以调用它。 –
咋....我发现了这个问题。我想要下划线的文字下的fo:block是现在的问题。这是正确的,我是盲目的。但是,谢谢你的有用信息。这也帮助了很多。 :D –