2009-09-25 9 views
0

J'ai un rapport de cristal qui inclut des données XML. Cette chaîne XML est stockée dans une colonne de base de données (Oracle 10g). En ce moment, le rapport affiche simplement la chaîne entière dans un grand désordre laide. Existe-t-il un bon moyen de soit imprimer le xml (mettre des balises sur des lignes séparées, peut-être indenter des balises imbriquées) soit même formater le xml comme d'autres données dans le rapport?jolie impression XML dans les rapports de cristal

Ma meilleure idée actuelle (où le mieux ne veut pas dire bon), est de faire juste une chaîne remplacer partout où je vois> <, de sorte qu'au moins chaque tag sera sur une ligne séparée. Ce qui serait génial est un moyen de passer cette chaîne xml dans un sous-rapport et de faire en sorte que le sous-rapport utilise ce xml comme source de données. Ce qui serait presque aussi bon, à mes fins, serait une fonction prettyprintXML quelque part dans un cristal qui formaterait simplement le XML brut d'une manière agréable. J'ai accès à Crystal 11. Merci.

EDIT - J'apprécie l'aide jusqu'à présent, mais je sais déjà 37 façons différentes de le faire en dehors de Crystal. Je suis à la recherche d'une solution qui fonctionne dans l'outil de conception Crystal Reports lui-même.

Répondre

0

Si vous utilisez ceci sur une page Web, je crois que vous devriez pouvoir le formater en utilisant un fichier css. Mais vous pouvez également utiliser XSLT en dehors de Crystal Reports. Voici quelques liens qui peuvent aider.

Link for Displaying XML with CSS

Link for to a css with crystal reports question on SO

Link of an example of XSLT instead of Crystal Reports

+0

J'ai besoin que cela fonctionne dans les rapports de cristal lui-même. Le rapport inclut des données provenant d'autres tables/colonnes qui ne sont pas xml. Si je faisais cela en dehors du cristal, il serait trivial de simplement analyser le xml et faire ce que je voulais avec. mais dans ce cas, l'objectif explicite est de produire un rapport crytal. –

0

Envoyer le XML résultat par une transformation d'identité XSLT avec l'attribut tiret de sortie sur oui.
Il affichera le même contenu, mais « assez imprimé »

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="node() | @*"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

Comment faire des transformations XSL sur une chaîne depuis Crystal? Pour clarifier, ma question n'est pas seulement de savoir comment imprimer XML - je pourrais le faire sur ma tête s'il n'y avait pas d'autres contraintes. Ce qui le rend difficile, c'est que j'essaie de le faire depuis Crystal Reports. –

Questions connexes