2010-03-07 6 views
1

Ceci est l'extrait du fichier XML.Sélection de chaîne/littéral à partir d'un élément de noeud enfant spécifié à l'aide de XSLT

<rdf:RDF> 
     <rdf:Description rdf:about="http://abc.org/JohnD"> 
      <video:Movie xml:lang="en" xmlns:video="http://example.org/movie">Avatar</video:Movie> 
      </rdf:Description> 

     <rdf:Description rdf:about="http://abc.org/JohnD"> 
     <foaf:interest xml:lang="en" xmlns:foaf="http://xmlns.com/foaf/0.1/">games</foaf:interest> 
     </rdf:Description> 

</rdf:RDF> 

l'extrait XSL

<xsl:template match="rdf:RDF/rdf:Description"> 
    <xsl:value-of select="video:Movie"/> 
</xsl:template> 

Je veux choisir le littéral « Avatar » du nœud avec le nom <video:Movie> ne

Je ve essayé d'utiliser <xsl:value-of select="video:Movie"/> et divers autres combinaisons, mais ne sera pas affiché. J'ai déclaré l'espace de noms en conséquence dans l'en-tête XSL.

+0

L'espace de noms rdf est-il déclaré dans votre document XML et votre feuille de style? Tout ce que vous avez ici semble correct sauf pour un xmlns: rdf = "..." – dkackman

+0

J'ai déclaré tous les espaces de noms nécessaires. Parce que sinon, l'application ASP.net à laquelle le XSL est lié jettera une exception. – louis

Répondre

1

Le code suivant sélectionne l'élément indépendamment de l'URL d'espace de noms:

<xsl:template match="rdf:RDF/rdf:Description"> 
    <xsl:value-of select="*[name() = 'video:Movie']"/> 
</xsl:template> 

Mais si tous les espaces de noms sont corrects le code fourni devrait fonctionner, je viens de tester avec le XSLT suivant (notez l'espace de noms vidéo sur le XSLT).

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:video="http://example.org/movie" 
> 
    <xsl:output method="html"/> 

     <xsl:template match="rdf:RDF/rdf:Description"> 
      <xsl:apply-templates select="video:Movie"/> 
     </xsl:template> 
</xsl:stylesheet> 
Questions connexes