Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1489 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Lignes vides lors d'une transformation XSLT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lignes vides lors d'une transformation XSLT

n°1103071
multani
Dépressionnisé
Posté le 31-05-2005 à 16:08:08  profilanswer
 

Salut,
 
j'ai un petit problème lorsque je réalise une transofmration XSLT sur mes fichiers XML : j'ai un fichier XML (modèle de base de donnée, généré avec DBDesigner4) et un fichier XSLT, qui me converti ce modèle en instruction PostgreSQL.
 
J'utilise Sablotron en ligne de commande (sabcmd xml2postgres.xslt test.xml test.sql), et la transformation marche bien. Le problème, c'est que je me retrouve avec énormément de lignes blanches au début et à la fin du fichier : sur un fichier généré de 6000 lignes, il y en 1500 vides à la fin, et 3600 au début :/ (à peu près)
 
Je pensais à un bug de Sablotron, mais en essayant un autre programme (Xalan, beaucoup plus rapide que Sablotron d'ailleurs), ça fait pareil. L'auteur du fichier XSLT constate la même chose d'ailleurs
 
 
Bref, je débute en XSLT, et j'aimerais comprendre d'où vient le problème ...
Le fichier XSLT en question
Un modèle de DB comme exemple
Le résultat :/
 
 
Merci de votre aide [:romf]

mood
Publicité
Posté le 31-05-2005 à 16:08:08  profilanswer
 

n°1103817
avander
Posté le 01-06-2005 à 10:31:28  profilanswer
 

Si tu regardes ton xml de départ dans un éditeur digne de ce nom, tu verras qu'il y a une balise par ligne avec à chaque fois un retour à la ligne ( CRLF), pratiquement chaque balise à donc un contenu dit mixte... ton XSLT reprend tous ces CRLF en amont et en aval.
 
Tu peux éviter cela en ajoutant un template comme ceci:


<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:output encoding="iso-8859-1" method="text" omit-xml-declaration="yes" indent="no"/>  
<xsl:strip-space elements="DBMODEL"/>  
<xsl:param name="target"/>  
 
<xsl:template match="text()"/><!-- /!\ avale tout le contenu mixte /!\ -->
 
<xsl:template match="DBMODEL/METADATA">  
...


 
Y'a une raison de pas utiliser le namespace xsl pcq c'est pas vraiment standard, le plus dur dans ta question c'était de remettre les xsl: devant toutes les balises du stylesheet...
 
 

n°1104245
multani
Dépressionnisé
Posté le 01-06-2005 à 15:42:27  profilanswer
 

Hum, concrètement, il faut que je fasse quoi ? :D
 
J'ai mis ça dans mon .xslt :
 


<template match="text()"/><!-- /!\ avale tout le contenu mixte /!\ -->
<template match="DBMODEL/METADATA">


au lieu d'avoir juste <template match="DBMODEL/METADATA">, et ça m'enlève déjà des espaces devant (et à la fin aussi).
 
Par contre, j'ai rajouté un <text>-- début du script</text>, juste après <template match="DBMODEL/METADATA"> et en fait, ça affiche plein de lignes vides encore, entre --début du script et le début de la sortie que je veux :/ (un peu comme entre le ALTER TABLE et le "-- End of generated script " de mon fichier d'exemple) ...
 
 
J'ai essayé de virer tout les retours à la ligne du fichier XML, et effectivement, ça m'a enlevé toutes les lignes blanches [:dawa] Mais c'est pas super pratique, j'aurais préféré avoir à éviter de toucher à ce fichier :/
 
Merci de ta réponse en tout cas :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Lignes vides lors d'une transformation XSLT

 

Sujets relatifs
Récupération de x fois 4 lignes dans un fichier logcalculer le nbr de lignes pour action d'une macro
logiciel de transformation avec xsltDOM et XSLT : problème hardu
[XML/XSLT] transformation mineureMacro pour trouver et recopier toutes les lignes ayant une valeur com
[ASP/SQLServer] Comment visualiser toutes les lignes d'une table?transformation xml avec xslt
Plus de sujets relatifs à : Lignes vides lors d'une transformation XSLT


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR