2010-05-19 4 views
0

j'ai la feuille xslt suivante:Essayer d'utiliser XSLT pour un XML dans ASP.NET

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:variable name="nhits" select="Answer[@nhits]"></xsl:variable> 
    <xsl:output method="html" indent="yes"/> 
    <xsl:template match="/"> 
    <div> 
     <xsl:call-template name="resultsnumbertemplate"/> 
    </div> 
    </xsl:template> 
    <xsl:template name="resultsnumbertemplate"> 
    <xsl:value-of select="$nhits"/> matches found 
    </xsl:template> 
</xsl:stylesheet> 

Et c'est le xml que Im essayant de mélanger avec le xslt précédent:

<Answer xmlns="exa:com.exalead.search.v10" context="n%3Dsl-ocu%26q%3Dlavadoras" last="9" estimated="false" nmatches="219" nslices="0" nhits="219" start="0"> 
    <time> 
    <Time interrupted="false" overall="32348" parse="0" spell="0" exec="1241" synthesis="15302" cats="14061" kwds="14061"> 
     <sliceTimes>15272 </sliceTimes> 
    </Time> 
    </time>  
</Answer> 

im en utilisant un XslCompiledTransform et qui fonctionne bien:

XslCompiledTransform transformer = new XslCompiledTransform(); 

transformer.Load(HttpContext.Current.Server.MapPath("xslt\\" + requestvariables["xslsheet"].ToString())); 

transformer.Transform(xmlreader, null, writer); 

Mes problèmes vient quand je suis essayant de mettre dans une variable la aTTRIBUT « de Nhits » La valeur est placée sur l'élément Answer, mais je ne rends rien en utilisant ma feuille xslt.

Savez-vous quelle pourrait être la cause?

Pourrait être l'attribut xmlns dans mon fichier XML?

Merci d'avance.

Cordialement.

Jose

Répondre

1

Votre problème immédiat est que votre XPath est erroné. Essayez

<xsl:variable name="nhits" select="/Answer/@nhits" /> 

Cependant, je suggère un changement pour se débarrasser complètement de la variable, vous n'en avez pas besoin.

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> 
    <xsl:output method="html" indent="yes"/> 

    <xsl:template match="Answer"> 
    <div> 
     <xsl:value-of select="@nhits"/> 
     <xsl:text> matches found</xsl:text> 
    </div> 
    </xsl:template> 

</xsl:stylesheet> 
+0

Bonjour Tomalak, d'abord merci pour votre réponse rapide . Si j'utilise le code que vous m'avez donné (la feuille xsl), le navigateur me montre tous les éléments, non seulement la "valeur de select" et les correspondances trouvées. Savez-vous quelle pourrait être la cause? Merci beaucoup. Cordialement. Jose. – Sosi

+0

@Jose: Oui. S'il n'y a qu'un seul élément '' et que rien d'autre ne vous intéresse dans votre XML, changez ' en ' – Tomalak

1

Votre variable doit être select="Answer/@nhits"

Votre XPath currect de "Answer[@nhits]" essaie de sélectionner l'élément Answer qui a un attribut nommé nhits ..

+0

Hello Gaby, merci pour votre réponse. Le problème que j'ai maintenant est que je peux tout imprimer, ou rien. Pas un élément ou un attribut spécifique. Savez-vous pourquoi pourrait être la cause? Merci d'avance. Cordialement. Jose – Sosi

+0

Vous voulez dire 'Answer [@nhits]', parce que 'Answer/[@ nhits]' est une erreur de syntaxe. – Tomalak

+0

@Tomalak, correct .. je l'ai mal lu .. –