j'ai le modèle XSL (I omis le modèle pour l'organisation, laissez-moi savoir si cela est nécessaire):sortie générant de transformation XSL à partir d'autres nœuds
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="SOAP-ENV:Body/*[local-name()='Publisher']">
<html>
<xsl:call-template name="body" />
</html>
</xsl:template>
<xsl:template name="body">
<BODY>
<br/>
<center>
<font face="arial" size="2">
<b>Publisher <xsl:value-of select="*[local-name()='Organization']/*[local-name()='PublisherData']/*[local-name()='PublisherName']"/>
</b>
</font>
</center>
<br/>
<xsl:apply-templates select="*[local-name()='Organization']"/>
</BODY>
</xsl:template>
</xsl:stylesheet>
Le modèle précédent génère la sortie que je veux, il est la génération les balises contenant la sortie générée par le template "body". Le problème que j'ai est que, avant la balise d'ouverture, je reçois du texte en sortie d'un nœud précédent. Je ne sais pas pourquoi cela se passe puisque je ne sélectionne pas ces autres nœuds. Par exemple:
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<n1>abc</n1>
<n2>def</n2>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<Publisher>
<!--Child nodes here -->
</Publisher>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Compte tenu du fragment précédent exemple XML, ma sortie contiendrait ce que j'attendre de mise en forme l'élément Publisher, mais je suis aussi obtenir les nœuds texte des enfants du SOAP-ENV: En-tête nœud.
Je veux seulement transformer le contenu de l'élément de l'éditeur, mais dans la sortie, je vais:
abc
def
//Expected output transforming Publisher goes here
Ma question est, pourquoi abc et sont sélectionnés def?
Vous devrez publier l'intégralité du XSL pour que nous puissions savoir d'où provient l'autre texte. Aussi, postez un échantillon de XML assez grand pour reproduire le problème (et pas plus grand!). Enfin, publiez le XML résultant. –
@Abel: Je vous recommande de vous débarrasser de tous les trucs '* [local-name() = ...]'. Il blote votre XSL et ne sert à rien. ' ' est beaucoup plus agréable, n'est-ce pas? –
Tomalak
@Tomalak: vous avez raison vu l'exemple précédent, j'ai simplement supprimé les espaces de noms et les préfixes (j'en ai un tas) pour plus de clarté. –