Comment transformer et de fusionner plusieurs fichiers xml en un seul
J'ai besoin de votre aide pour transformer du XML à l'aide de XSLT. J'ai le code de sélection de plusieurs XMLs et en appliquant le XSLT.
Mon problème est avec le XSLT où je veux convertir ces shop1.xml shop2xml .. à allshops.xml. C'est une tâche facile pour quelqu'un qui sait comment travailler avec XSLT, car il y a seulement 2-3 changements.
Vous trouverez ci-dessous les structures pour une meilleure compréhension. Je vous remercie beaucoup.
shop1.xml
<shop>
<products>
<product id="189">
<title></title>
<description></description>
<price></price>
<image></image>
<url></url>
<category id="61"></category>
</product>
</products>
</shop>
shop2.xml
<shop>
<products>
<product id="182">
<title></title>
<description></description>
<price></price>
<image></image>
<url></url>
<category id="62"></category>
</product>
</products>
</shop>
shop3.xml //celui-ci a directement des produits en tant que root et l'id peut-être déjà présent
<products>
<product>
<id>123</id>
<title></title>
<description></description>
<price></price>
<image></image>
<url></url>
<category id="62"></category>
</product>
</products>
paths.xml il est utilisé à partir du code php pour obtenir plusieurs fichiers xml
<?xml version="1.0" encoding="utf-8"?>
<files>
<file>shop1.xml</file>
<file>shop2.xml</file>
<file>shop3.xml</file>
</files>
allshops.xml
<products> //removed the store,shop and products stays as root
<product>
<id>the product's attribute id</id> //new element, with value the product id=""
<title></title>
<description></description>
<price></price>
<image></image>
<url></url>
<category></category> //removed the attribute id
<shopid></shopid> //new element, will be blank for now
</product>
<product>
</product>
.
.
.
</products>
Il serait préférable de charger tous les fichiers à l'aide de
Bonjour. Je suis vraiment intéressé par cette solution si vous êtes wklling à répondre.
Voir ma réponse. J'ai gardé la transformation générale de façon à y intégrer d'autres nœuds finalement pas inclus dans vos échantillons d'entrée. Espérons que cela aide.
document()
XSLT 1.0 fonction. De cette façon, vous serez en mesure de correctement inclure le contenu à l'intérieur d'un seul products
racine et également remplir le shopid
avec le nom du fichier en cours.Bonjour. Je suis vraiment intéressé par cette solution si vous êtes wklling à répondre.
Voir ma réponse. J'ai gardé la transformation générale de façon à y intégrer d'autres nœuds finalement pas inclus dans vos échantillons d'entrée. Espérons que cela aide.
OriginalL'auteur EnexoOnoma | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Comme demandé, voici une pure XSLT solution qui fusionne des fichiers externes à l'aide de la
document()
XSLT 1.0 fonction.Remarque:
paths.xml
.[XSLT 1.0]
Lorsqu'il est appliqué sur
paths.xml
fichier fourni dans la question, produit:category
, j'ai mal compris votre question. Les édité répondre maintenant il fixe. Pour la deuxième question, tu veux dire que certains de vos aliments directementproducts
comme élément racine? Il serait mieux si vous développez votre question de départ, l'ajout de cette nouvelle information et à la rendre claire autant que possible. Je vais répondre le plus vite possible.de toute façon, j'ai généralisé la réponse à gérer d'autres aliments avec différents élément racine.
Oh désolé, j'ai vérifié à nouveau l'un de mes aliments. J'ai vu que certains aliments ne sont pas comme
<product id="123">
mais<product><id>123></id>...</product>
c'est pourquoi il ya un supplément de</id>
ci-dessous<product>
sur le XML transformé. Donc, si nous avons une clause if qui vérifie si il y a un<product id="123">
ensuite créer le<id>123</id>
à l'autre, s'est<product>
ne pas créer mais continuer avec l'élément suivant.Conditionnellement si vérifier ajouté. Également édité le XML dans la question. Cheers
Lorsque vous êtes ok, vous pouvez également supprimer tous ces commentaires :)), et la question qui a déjà modifié en conséquence et le post complet assez compréhensible.
OriginalL'auteur Emiliano Poggi