2011-08-05 12 views
-1

J'ai obtenu ce problème vraiment étrange ici. Je n'ai pas pu obtenir la valeur de noeud du fichier xml suivant. Quelqu'un peut-il me dire quel est le problème avec mon fichier xslt ou fichier xml? parce que je peux avoir le xslt sur d'autres fichiers xml et c'est vraiment simple. Donc, je suis perdu perdu ici. fichier xmln'a pas pu obtenir la valeur de noeud dans XSLT

<catalog xmlns="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink" name="Test Data"> 
    <service name="tss" serviceType="OpenDAP" base="http://virbo.org/metamag/viewDataFile.jsp?filetype=data&amp;docname="/> 
    <dataset name="Scalar"> 
     <access serviceName="tss" urlPath="597C7956-742D-FEC6-D151-A37A7176E867"/> 
     <documentation type="summary">Single variable time series</documentation> 
    </dataset> 
    <dataset name="Structure"> 
     <access serviceName="tss" urlPath="E981F1AF-EF4A-11FB-AFB6-F20218B07783"/> 
     <documentation type="summary">Vector (three component) time series</documentation> 
    </dataset> 
    <dataset name="Sequence"> 
     <access serviceName="tss" urlPath="64C78182-9BDC-CBC4-56C5-679808F51398"/> 
     <documentation type="summary">Spectrum time series</documentation> 
    </dataset> 
</catalog> 

fichier xslt

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html"/> 
    <xsl:template match="/"> 
     <h2>database</h2> 
    <li>  
      <xsl:for-each select="/catalog/dataset/access/@serviceName"> 
       <xsl:value-of select="."/> 
      </xsl:for-each> 
    </li> 
    </xsl:template> 
</xsl:stylesheet> 

mais le fichier xslt fonctionne sur le fichier XML suivant avec juste changer XPath pour/data/étudiant/nom/@ id

<data class="grade2"> 
    <student id="test1"> 
     <name id="1">Bitu Kumar</name> 
     <course>MCA</course> 
     <sem>6</sem> 
     <marks>80</marks> 
    </student> 
    <student id="test2"> 
     <name id="2">Santosh Kumar</name> 
     <course>MCA</course> 
     <sem>5</sem> 
     <marks>70</marks> 
    </student> 
    <student id="test3"> 
     <name id="3">Ashish</name> 
     <course>M.Sc.</course> 
     <sem>4</sem> 
     <marks>80</marks> 
    </student> 
    <student id="test4"> 
     <name id="4">Mahesh</name> 
     <course>MA</course> 
     <sem>3</sem> 
     <marks>80</marks> 
    </student> 
</data> 

Répondre

0

Votre XSLT ne respecte pas les espaces de noms dans votre premier fichier XML.

Votre deuxième fichier XML n'en a pas.

Corrigez votre XSLT en ajoutant une déclaration d'espace de noms et modifiez votre expression XPath afin qu'elle utilise le préfixe d'espace de noms que vous définissez.

Ainsi:

xmlns:myprefix="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" 

...

/myprefix:catalog/myprefix:dataset/myprefix:access/@serviceName 
+0

Merci beaucoup pour la réponse, pouvez-vous donner un exemple comment utiliser le préfixe d'espace de noms dans XPath? – user851380

+0

quel espace de noms dois-je ajouter? celui-là? – user851380

+0

xmlns = "http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" – user851380

Questions connexes