Comment puis-je exclure des éléments avec xsi: nil = « true » d'une transformation?

StackOverflow https://stackoverflow.com/questions/2179374

  •  24-09-2019
  •  | 
  •  

Question

J'ai des fichiers XML qui a récemment changé de sorte que certains des noeuds ont maintenant l'attribut xsi: nil = « true ». J'ai une feuille de style XSLT qui rend le XML en HTML pour une Eyeballing rapide des données. À l'heure actuelle pour faciliter les choses sur moi-même je bande les namespaces de XML avant de demander la feuille de style. Cela a bien fonctionné jusqu'à notre dernière mise à jour. Maintenant, je reçois une erreur parce que le XSL ne sait pas comment gérer le xsl:. Nil = « true »

Je peux facilement mettre à jour le code, donc je fais un REMPLACER / supprimer sur tous les xsl: néant = « true » correspond dans le fichier XML avant de le transformer, mais je me demandais s'il est possible de cludge la feuille de style XSLT donc que xsi: de nul sera ignoré / pas provoquer des pannes de transformation même si aucun namespaces sont compris dans le fichier XML. Je préférerais faire les choses de cette façon parce que je peux faire le changement sur le serveur maintenant, où si je dois publier une nouvelle version web, je dois sauter à travers quelques cerceaux internes pour l'obtenir déployé.

Après que je reçois des choses de travail (soit en supprimant la xsl: néant des années avant ou pendant la transformation). Je vais cependant revenir autour et comprendre pourquoi je l'ai enlevé les espaces de noms à l'origine et fixer que

Merci pour toute aide que vous pouvez me donner.

Était-ce utile?

La solution

Pourquoi avez-vous supprimer les espaces de noms en premier lieu? Le XSLT vous permet de contrôler les préfixes ne doivent pas être mis dans la sortie, et vous pouvez sauter les xsi:nil bien dans la feuille de style.

S'il n'y a pas de déclaration préfixe d'espace de noms pour le préfixe xsi, le XML est pas valide. Donc, soit vous faites affaire avec XML invalide ou vous avez encore une déclaration d'espace de noms XSI quelque part, et vous pouvez changer le XSLT pour ignorer ces entrées.

Si vous faites une découverte-remplacer la source XML, assurez-vous vraiment sûr de le fixer plus tard (bientôt!), Parce que ce genre de choses va casser le cou.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top