Je veux traduire un fichier XML avec des données telles que les suivantes:XSLT sur SSRS rapport
<FlatData>
<Details1_Collection>
<Details1 Customer1="Customer" Total1="3" />
...
</Details1_Collection>
</FlatData>
Les données que je suis intéressé par ce sont les attributs et leurs valeurs dans chaque Details1
. Le problème est que ces attributs ne vont pas nécessairement être le même dans chaque fichier XML que je veux traduire, et je veux un but général XSL qui pourrait gérer une telle Details1
comme ceux-ci:
<Details1 Customer1="Customer" Total1="3" />
<Details1 Name="Jim" Age="14" Weight="180" />
<Details1 Date="2009-07-27" Range="1-5" Option1="True" />
Ces différentes Details1
ne serait pas se produire dans le même fichier XML source, mais plutôt dans des fichiers différents. Cependant, je voudrais utiliser le même XSL sur chacun.
Je pensais que j'avais besoin de quelque chose comme <xsl:value-of select="@attribute_name"/>
mais qu'est-ce que je mets pour @attribute_name
quand je ne sais pas à l'avance quels attributs il y aura? De même, comment capturer le nom de l'attribut? Je voudrais faire exploser le XML source ci-dessus à quelque chose comme:
<Details1>
<Customer1>Customer</Customer1>
<Total1>3</Total1>
</Details1>
Edit: merci pour les réponses! Je vais avoir du mal à obtenir plus que la sortie suivante, cependant:
<?xml version="1.0" encoding="UTF-8"?>
<FlatData>
<Details1_Collection></Details1_Collection>
</FlatData>
J'ai essayé les deux années Lavinio et les réponses de Jörn Horstmann, ainsi que d'essayer de combiner les deux. Je lance cette commande:
msxsl.exe -o output.xml input.xml transform.xsl
Je pense que quelque chose qui de prendre le chemin est un namespace dans le fichier d'entrée:
<Report Name="MyReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyReport">
Il en résulte un fichier XML avec presque autant de lignes que l'original, XML d'entrée, mais avec tous vide la première ligne contenant xml version = "1.0" encoding = "utf-8"?> '. –
Il s'avère que j'ai eu des lignes vides au lieu des données que je voulais à cause d'un problème d'espace de noms; question mise à jour, ajouté ma propre réponse. –