XSLT: si la balise existe, appliquez le modèle; sinon, choisissez la valeur statique
Je suis nouveau sur XSLT en général, donc s'il vous plaît garder avec moi...
Avec cela à l'esprit, ce que je suis en train de faire est de vérifier pour un certain tag dans le fichier XML. Si c'est là que je veux appliquer un modèle. Si non, je veux l'ajouter (comme une valeur vide). Toujours, fondamentalement, la forçant à être dans la sortie finale. Comment puis-je faire?
J'ai eu quelque chose comme ça...
<xsl:choose>
<xsl:when test="@href">
<xsl:apply-templates select="country" />
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
Haut poriton du code est ce que je pense que j'ai tort. Besoin de quelque chose dans le otherwise
tag et mon when
partie est mal je pense.
<xsl:template match="country">
<xsl:if test=". != '' or count(./@*) != 0">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
Peut aider quelqu'un? Je vous remercie à l'avance.
EDIT:
Oui en fin de compte j'ai besoin d'au moins un <country />
tag pour être dans le XML. Mais il est possible qu'il n'existe pas à tous les. S'il n'existe pas, je dois le mettre. Un exemple de bonne collaboration serait <country>US</country>
source d'informationauteur Issa Fram
Vous devez vous connecter pour publier un commentaire.
Dans le modèle de l'élément parent le pays devrait être en cours d'utilisation par exemple
Au lieu de
foo
utiliser le nom de l'élément parent. Et bien sûr, vous pourriez aussi faire d'autres choses comme la copie de l'élément, je me suis concentré sur leif
vérifier. Vous n'avez pas vraiment besoin d'unexsl:choose/when/otherwise
de mon point de vue, laxsl:if
devrait suffire comme apply-templates ne va pas faire n'importe quoi avec enfant des éléments qui n'existent pas.Encore plus simple:
Ne remarque:
Pas XSLT instructions conditionnelles (comme
<xsl:if>
) sont utilisés et ils ne sont pas nécessaires.Très souvent, la présence de
<xsl:if>
ou<xsl:choose>
est une indication que le code peut être remaniée et considérablement améliorée, grâce, entre autres choses, de se débarrasser des instructions conditionnelles.Vous n'avez même pas besoin de tout type de Le Traitement Conditionnel. Cette feuille de style:
Avec cette entrée:
De sortie: