2010-03-23 2 views
0

J'essaye d'obtenir le titre du document html simple pour construire le sitemap. Mais renvoyez toujours la valeur vide. Je débogue ceci et découvre que le document (contenu) renvoie des noeuds de document. Ça ressemble à ça. alt text http://www.freeimagehosting.net/uploads/f7caf412dc.png Mais je ne pouvais pas accéder à document (content)/html ou quelque chose comme ça. S'il vous plaît aider!<xsl: valeur-de select = "document (contenu) // titre" /> renvoie le noeud vide

Répondre

2

Plus de code serait utile, mais dans de telles situations, le premier à blâmer est l'espace de noms. Je peux voir que vos nœuds sont dans l'espace de noms XHTML, mais vous n'utilisez aucun préfixe d'espace de noms dans votre XPath.

Vous devez déclarer le préfixe d'espace de noms dans votre feuille de style comme ceci:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:h="http://www.w3.org/1999/xhtml" 
> 

Et puis utilisez ce préfixe dans votre XPath comme ceci:

document(content)/h:html 
+0

Que dois-je faire pour résoudre ce problème? – Artic

+0

Merci beaucoup! – Artic

1

Si vos éléments XML sont dans un espace de noms, Même s'il s'agit de l'espace de noms par défaut du document, vous devez utiliser des préfixes d'espace de noms dans toutes les expressions XPath et les règles de correspondance de modèle. C'est l'uri de l'espace de noms et non le préfixe qui compte. Notez que les attributs ne seront pas dans l'espace de nom par défaut, ils ont seulement un espace de noms si leur nom a un préfixe.

En outre, une expression XPath contenant // est généralement moins efficace que celle qui ne le fait pas.

<xsl:stylesheet version="1.0" 
      xmlns:h="http://www.w3.org/1999/xhtml" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 


<!-- and elsewhere in your stylesheet --> 
<xsl:value-of select="document(content)/h:html/h:head/h:title"/> 
+0

Comment pourrais-je savoir quel espace de noms utiliser? – Artic

Questions connexes