2009-06-10 8 views
0

Compte tenu du fichier XML suivant:empêcher x: à partir des éléments d'entraînement à l'intérieur noeud sélectionné

<?xml version="1.0" encoding="UTF-8"?> 
<doc> 
    <head> 
     <title>Introduction</title> 
     <section>section</section> 
     <channel>testing/test</channel> 
    </head> 
    <body> 
     <h1>Heading</h1> 
     <p>Lorem ipsum dolor sit amet.</p> 
     <p>Donec sed enim.</p> 
    </body> 
</doc> 

et le fragment de JSTL suivant, où le fichier XML a été chargé dans la variable 'file':

<x:parse var="xml" doc="${file}"/> 
<x:out select="$xml//body"/> 

J'espère obtenir:

<h1>Heading</h1> 
<p>Lorem ipsum dolor sit amet.</p> 
<p>Donec sed enim.</p> 

Mais je reçois:

Heading Lorem ipsum dolor sit amet. Donec sed enim. 

Remarquez, pas de tags. Comment pourrais-je faire pour que JSTL laisse les tags dans le résultat?

+0

Le contenu de cette question a été adapté d'une question sur une liste de diffusion qui n'a jamais été répondue. La question originale est ici: http://article.gmane.org/gmane.comp.jakarta.taglibs.user/6801 – Sixty4Bit

Répondre

1

x:out est très similaire à xsl:value-of en ce qu'il ne sélectionnera que des nœuds de texte. Par conséquent si vous voulez préserver la structure XML alors je suggérerais d'utiliser x:transform et d'écrire une feuille de style qui utilisera un xsl:copy-of pour préserver les balises. Une autre option est d'écrire votre propre tag :-).

Questions connexes