URL: https://linuxfr.org/forums/programmationautre/posts/xsl-filtre-sur-les-petits-fils Title: XSL : filtre sur les petits fils Authors: Papey Date: 2009年12月21日T12:36:33+01:00 Tags: Score: 0 Bonjour à tous, je possède un fichier xml du type : [?xml version="1.0" encoding="utf-8"?] [A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"] £spaces£ £/spaces£[B1] £spaces£ £/spaces£[C1]xx[/C1] £spaces£ £/spaces£[C2]yy[/C2] £spaces£ £/spaces£[/B1] £spaces£ £/spaces£[B2] £spaces£ £/spaces£[C3]dsfhizu[/C3] £spaces£ £/spaces£[C4] £spaces£ £/spaces£[D1]zoibvd[/D1] £spaces£ £/spaces£[D2]**0**[/D2] £spaces£ £/spaces£[/C4] £spaces£ £/spaces£[/B2] £spaces£ £/spaces£[B2] £spaces£ £/spaces£[C3]ii[/C3] £spaces£ £/spaces£[C4] £spaces£ £/spaces£[D1]fazoifbvza[/D1] £spaces£ £/spaces£[D2]**0**[/D2] £spaces£ £/spaces£[/C4] £spaces£ £/spaces£[/B2] £spaces£ £/spaces£[B2] £spaces£ £/spaces£[C3]mliohszaz[/C3] £spaces£ £/spaces£[C4] £spaces£ £/spaces£[D1]cvkjbsdhzpz[/D1] £spaces£ £/spaces£[D2]**1**[/D2] £spaces£ £/spaces£[/C4] £spaces£ £/spaces£[/B2] [/A] Et je souhaiterais enlever tous les éléments B2 pour lesquels la balise D2 est à 1, et garder le reste des informations identiques. J'ai un peu de mal à trouver la syntaxe XSL correspondante. J'ai bien essayé ça : [xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"] [xsl:output method="xml" indent="yes"/] [xsl:strip-space elements="*"/] [xsl:template match="/"] £spaces£ £/spaces£[xsl:element name="A"] £spaces£ £/spaces£[xsl:for-each select="/A/B1"] £spaces£ £/spaces£[xsl:copy-of select="."/] £spaces£ £/spaces£[/xsl:for-each] £spaces£ £/spaces£[xsl:for-each select="/A/B2[C4/D2=0]"] £spaces£ £/spaces£[xsl:copy-of select="."/] £spaces£ £/spaces£[/xsl:for-each] £spaces£ £/spaces£[/xsl:element] [/xsl:template] [/xsl:stylesheet] Mais le namespace, au lieu de se placer au niveau de A, se retrouve ventilé sur tous les éléments B1 et B2... Si quelqu'un a une idée... Merci d'avance !

AltStyle によって変換されたページ (->オリジナル) /