J'ai un document XML que je transforme avec xslt en un document xsl-fo. J'ai ce problème difficile que j'ai essayé de traquer une solution pendant longtemps ...Transformation XSLT remplaçant une balise qui apparaît périodiquement dans le document
Dans mon XML de source j'ai quelques étiquettes entrecoupées partout. Je veux les mettre en forme comme souligné dans le document résultant, mais je n'ai pas été en mesure de le faire.
J'essaie en utilisant le code comme ceci:
<xsl:template match="//em">
<fo:inline text-decoration="underline">
<xsl:apply-templates select="*|text()"/>
</fo:inline>
</xsl:template>
Le XSLT complet ressemble à ceci:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<!-- match em tags -->
<xsl:template match="//em">
<fo:inline text-decoration="underline">
<xsl:apply-templates select="*|text()"/>
</fo:inline>
</xsl:template>
<xsl:template match="//u">
<fo:inline text-decoration="underline">
<xsl:apply-templates select="*|text()"/>
</fo:inline>
</xsl:template>
<!-- match b tags -->
<xsl:template match="//b">
<fo:inline font-weight="bold">
<xsl:apply-templates select="*|text()"/>
</fo:inline>
</xsl:template>
<xsl:template match="//br">
<fo:block><xsl:text>
</xsl:text></fo:block>
</xsl:template>
<xsl:template match="briefs">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="Evidence" page-width="8.5in" page-height="11in" margin="1in">
<fo:region-body margin-bottom=".5in" margin-top=".5in" region-name="xsl-region-body" />
<fo:region-before extent="1em" region-name="xsl-region-before" />
<fo:region-after extent="1em" region-name="xsl-region-after" />
</fo:simple-page-master>
</fo:layout-master-set>
<xsl:for-each select="brief">
<fo:page-sequence master-reference="Evidence">
<fo:static-content flow-name="xsl-region-before" font-family="Times">
<fo:block font-size="10pt" text-align="center" color="#666666">
<fo:inline font-style="italic"><xsl:value-of select="title"/></fo:inline> by <xsl:value-of select="author"/>
</fo:block>
</fo:static-content>
<fo:static-content flow-name="xsl-region-after" font-family="Times" font-size="10pt">
<fo:table>
<fo:table-column />
<fo:table-column column-width="1in" />
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block text-align="left" color="#666"><xsl:value-of select="copyright"/></fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right" font-weight="bold">
Page <fo:page-number/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:static-content>
<fo:flow flow-name="xsl-region-body" font-family="Times">
<fo:block font-size="14pt" text-align="center" text-transform="uppercase" border-before-width="2pt" border-before-color="black" border-before-style="double" border-after-width="1pt" border-after-color="black" border-after-style="solid" background-color="#ccc">
<xsl:value-of select="title"/>
</fo:block>
<xsl:for-each select="heading">
<xsl:choose>
<xsl:when test="@level = 2">
<fo:block font-size="11pt" font-weight="bold" keep-with-next="always" text-transform="uppercase" padding-before="1em">
<xsl:value-of select="title"/></fo:block>
</xsl:when>
<xsl:when test="@level = 3">
<fo:block font-size="10pt" font-weight="normal" keep-with-next="always" text-transform="uppercase" padding-before="1em">
<xsl:value-of select="title"/></fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="12pt" font-weight="bold" keep-with-next="always" text-transform="uppercase" padding-before="1em">
<xsl:value-of select="title"/></fo:block>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="content/item">
<xsl:choose>
<xsl:when test="@type = 'card'">
<!--Print the taglines-->
<fo:block font-size="10pt" font-weight="bold" padding-before="1em" keep-with-next="always">
<!--<xsl:number value="position()" format="1" />. -->
<xsl:value-of select="tagline"/>
</fo:block>
<!--Print the citation-->
<fo:block font-size="10pt" font-style="italic" keep-with-next="always" keep-together.within-page="always" margin-left=".25in" padding-before=".5em">
<!--<xsl:number value="position()" format="1" />. -->
<xsl:value-of select="citation" disable-output-escaping="yes" />
</fo:block>
<!--Print the body-->
<fo:block font-size="10pt" keep-together.within-page="always" margin-left=".25in" padding-before=".5em">
<!--<xsl:number value="position()" format="1" />. -->
<xsl:value-of select="quote" disable-output-escaping="yes" />
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="10pt" padding-before=".5em"><xsl:value-of select="."/></fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</fo:flow>
</fo:page-sequence>
</xsl:for-each>
</fo:root>
</xsl:template>
</xsl:stylesheet>
Quelqu'un at-il des idées? Merci beaucoup !!!!!
Pouvez-vous poster un échantillon de vos commentaires? – lavinio