[Linux-bruxelles] XML et XSLT

Yannick Warnier ywarnier at beeznest.org
Dim 4 Jan 23:58:40 CET 2009


Salut,

Y a quelqu'un sur la liste qui est particulièrement "pro" en XSLT?

J'ai un fichier XML (qui est un format électronique de facture
péruvienne) qui ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl"
href="recibo.xsl"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2">
	<ext:UBLExtensions>....</ext:UBLExtensions>
	<cbc:ID>E001-1</cbc:ID>
	<cbc:IssueDate>2008-12-15</cbc:IssueDate>
...
</Invoice>

et un XSLT qui ressemble à ceci:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet 
version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2"
xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2"> 
<xsl:template match="/"> 

 <xsl:variable name="SERVICIO">
                <xsl:value-of
select="Invoice/cac:OrderReference/cac:DocumentReference/cbc:ID"/>
 </xsl:variable>

<html>
<head>
	<title>Recibo por Honorarios Electrónico</title>
	<link rel="stylesheet" type="text/css" href="ebxml.css"/>
</head>
<body > 
 <TABLE ALIGN="center" class="form-table" width="600" >
  <tbody>
   <tr>
	<td>
    	<tr><td width="30%">
		<TABLE>
          <TBODY>
            <tr class="bgn"><td><xsl:value-of
select="Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyName/cbc:Name"/></td></tr>
		    <tr><td>
			 <xsl:value-of
select="Invoice/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:StreetName"/>
			 <xsl:value-of
select="Invoice/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:BuildingNumber"/>
			</td></tr>
...
</TABLE>      
</body></html>
</xsl:template> 
</xsl:stylesheet> 

La transformation ne fonctionne pas (on a bien le style HTML mais aucune
donnée).

À la base, il y avait un autre XSLT complètement foireux qui ne validait
pas sous Firefox mais qui (apparemment) fonctionnait sous IE.

Maintenant j'en suis au problème suivant: quand j'ai les deux documents
entiers (par rapport aux extraits ci-dessus), j'ai l'HTML avec style CSS
mais pas les données. Quand je supprime

 xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"

de la déclaration du fichier XML, ça marche direct. Le problème
évidemment c'est que l'idée est d'arriver à construire un XSLT qui
valide et qui transforme le XML sans le modifier, parce qu'il faut que
le résultat puisse être directement extrait par des non-techniciens (des
gens qui font de la compta, par exemple).

Le but est de pouvoir soumettre un dossier à l'autorité légale
compétente pour qu'ils puissent modifier leur système de façon correcte,
mais il semblerait que le format du XML soit bon (j'ai trouvé des
exemples ici: http://www.krugle.org/ en cherchant "Invoice-2")

D'où mon appel à l'aide...
Je peux bien entendu fournir les données de test dans leur entièreté
(un .xml, un .css et un .xsl).

Yannick





Plus d'informations sur la liste de diffusion Linux-bruxelles