Namespaces et FO
Soit le fichier XSLT suivant, permettant de transformer un fichier XML en fichier Formatting Objects (standard W3C pour la publication de fichiers imprimables).
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
>
<xsl:template match="doc">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4" page-width="297mm" page-height="210mm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
<fo:region-body margin="3cm"/>
<fo:region-before extent="2cm"/>
<fo:region-after extent="2cm"/>
<fo:region-start extent="2cm"/>
<fo:region-end extent="2cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4" format="A">
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates select="para"/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="para">
<fo:block><xsl:value-of select="."/></fo:block>
</xsl:template>
<xsl:template match="para[1]">
<fo:block><fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline></fo:block>
</xsl:template>
</xsl:stylesheet>
<?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:template match="doc"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="A4" page-width="297mm" page-height="210mm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm"> <fo:region-body margin="3cm"/> <fo:region-before extent="2cm"/> <fo:region-after extent="2cm"/> <fo:region-start extent="2cm"/> <fo:region-end extent="2cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4" format="A"> <fo:flow flow-name="xsl-region-body"> <xsl:apply-templates select="para"/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template match="para"> <fo:block><xsl:value-of select="."/></fo:block> </xsl:template> <xsl:template match="para[1]"> <fo:block><fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline></fo:block> </xsl:template> </xsl:stylesheet>
Question
Indiquer quels sont les namespaces et préfixes définis dans ce fichier XSLT, expliquer à quoi ils servent en général et dans ce cas précis, et en particulier pourquoi l'on ne pourrait pas s'en passer ici.
Question
Inventer un fichier XML source doc cohérent avec la transformation XSLT proposée, et produire le fichier FO correspondant au résultat de la transformation.
Question
Modifier le fichier XML source doc pour ajouter le namespace nf29.utc.fr/doc1.
Écrivez le RelaxNG de doc.
Testez la XSLT et observer qu'elle ne fonctionne plus ; expliquer brièvement pourquoi.
Réécrivez la XSLT afin qu'elle fonctionne, en mobilisant la gestion de namespace en XSLT 2.0. Vous vous assurerez que le moteur de transformation que vous utilisez est compatible XSLT 2.0.