J'essaie de sélectionner tous les liens dans un document xhtml en xsl. Certaines balises d'ancrage contiennent la déclaration d'espace de nom xmlns="http://www.w3.org/1999/xhtml"
. Ceux-ci ne sont pas sélectionnés. par exemple. avec ce doc xml:sélectionnez un nœud avec un xmlns?
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
<root>
<item>
this iz sum text and it haz sum <a xmlns="http://www.w3.org/1999/xhtml" href="http://cheezburger.com/">linx</a> in it.
Teh linx haz piks of <a href="http://icanhascheezburger.com/">kittehs</a> in dem.
</item>
</root>
et ce xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<dl>
<xsl:for-each select="//root/item/a">
<dd><xsl:value-of select="."/></dd>
<dt><xsl:value-of select="@href"/></dt>
</xsl:for-each>
</dl>
</html>
</xsl:template>
</xsl:stylesheet>
Seul le second lien est sélectionné. Quelqu'un peut-il expliquer ce qui se passe ici et comment je pourrais le réparer?
cela fonctionne - merci. le problème ici est que tous les liens ne sont pas marqués avec l'espace de nom. –
La définition de l'espace de noms par défaut sur l'étiquette de style appropriée ('xmlns =" http://www.w3.org/1999/xhtml "') devrait permettre à '/ root/item/a' de sélectionner tous les éléments si les autres nœuds «anonymes» devraient aussi être dans cet espace de noms. – Wrikken
Cette dernière déclaration d'espace de nom est utile pour la sortie, pas pour select. XSLT 2.0 a un attribut 'xpath-default-namespace' pour cette question. –