2009-08-27 3 views
6

Avoir un document XML source qui utilise un espace de noms contenant des préfixes et un espace de noms par défaut. Lorsque je le transforme à l'aide d'un document XSLT, le document XML traduit résultant est incorrect, c'est-à-dire que les données d'élément du document XML source sont manquantes.Problème avec XSLT où le document XML source utilise l'espace de noms par défaut

Lorsque je supprime le "namespace par défaut" du document XML source, la transformation fonctionne comme prévu. Question: existe-t-il un moyen de résoudre le problème sans avoir besoin de supprimer l'espace de nom par défaut du document XML source? Autrement dit, ajoutez la solution au document XSLT.

XML Document:

<MyElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.zolldata.com/UDX"> 

où l'espace de noms par défaut de problème est xmlns = "http://www.zolldata.com/UDX"

Répondre

4

Spécifiez même espace de noms par défaut dans le document XSLT si vos sélecteurs font n'utilisez pas de préfixes, ou utilisez des préfixes pour tous les sélecteurs dans le fichier XSLT, mais n'oubliez pas de les lier à l'espace de noms par défaut de votre document XML.

+1

Je voudrais ajouter l'espace de noms par défaut, xmlns = "http://www.zolldata.com/UDX", à mon document XSLT. Comment lier? qu'est-ce que je lie? – Larry

+0

J'ai essayé votre première suggestion et cela ne fonctionne pas. Il semble que l'espace de nom par défaut DOIT être retiré du XML pour que le XSLT fonctionne (ou préfixé correctement). Comme Larry, je ne sais pas ce que vous voulez dire par "... n'oubliez pas de les lier à l'espace de noms par défaut". Je suppose que cela signifie en fait préfixer avec "xmlns: z = ..." qui ne fonctionne que si vous êtes sur le point de modifier la réponse xml au lieu d'avoir à traiter avec un système existant qui utilise validement un espace de noms par défaut. – Justin

Questions connexes