2009-10-10 7 views
1

Ce que j'essaie de faire est d'utiliser XSL pour sortir tous les noms d'éléments et d'attributs uniques. Pas leurs valeurs, mais leurs noms.Existe-t-il un moyen de générer le nom des éléments et des attributs à partir d'un document XML?

donc donné un XML:

<item id="12"> 
    <price>12.00</price> 
    <author>Name</author> 
    <desc>Description</desc> 
</item> 

Je veux montrer qu'il ya des éléments de l'article, le prix, l'auteur, desc. En plus de cela, je veux savoir qu'il y a un attribut de 'id'.

Des idées sur comment faire cela? Ou des articles que je peux lire à ce sujet? Est-ce même possible?

Merci,
Levi

+0

BTW, votre échantillon xml n'est pas bien formé –

Répondre

2

Je ne l'ai pas utilisé les beaucoup moi-même, mais ces fonctions vous devriez y arriver: XPath functions on nodes. Plus précisément, regardez name() et local-name(). Comme ils travaillent sur des nœuds, il ne devrait pas y avoir de problème pour les utiliser aussi bien sur des éléments que sur des attributs.

1

Essayez ceci:

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

    <xsl:key name="names" match="//* | //@*" use="name()"/> 
    <xsl:template match="/"> 
    <xsl:for-each select="(//* | //@*)[count(key('names', name())) = 1]"> 
     <xsl:value-of select="name()" /><br /> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 
+1

Plus '', ou ai-je mal compris l'exigence "unique"? – Tomalak

+0

Je ne pense pas; J'ai utilisé name() lors de la construction de la clé 'names', donc ça ne correspondra probablement pas. –

Questions connexes