J'ai créé la feuille de style XSL suivante qui prend un paquet XML (provenant de SVN) et convertit tous les nœuds "d'entrée", qui n'incluent pas le texte "archive" , dans une liste séparée par des virgules pour mon script ANT. Un fichier XML exemple ressemble à ceci ....XSL supprimer des nœuds vides dans le même code
<?xml version="1.0"?>
<lists>
<list path="https://mydomain.com/branches">
<entry kind="dir">
<name>James_Work</name>
<commit revision="2209">
<author>James</author>
<date>2010-09-02T11:02:08.584250Z</date>
</commit>
</entry>
</list>
</lists>
... et mon XSL est ce ....
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="selectionPropertyList">
<xsl:for-each select="lists/list/entry[name!='archive']">svnType/<xsl:value-of select="name" />
<xsl:if test="position()!=last()">,</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:template match="/">
<root>
<svnType><xsl:copy-of select="$selectionPropertyList" /></svnType>
</root>
</xsl:template>
</xsl:stylesheet>
Le problème que je suis frappé est quand je reçois un paquet vide arrière. Cela peut arriver par exemple si j'appelle le dossier des branches SVN qui est actuellement vide, et se termine avec une entrée vide dans ma liste ANT.
Un exemple paquet XML ressemble à ceci
<?xml version="1.0"?>
<lists>
<list path="https://mydomain.com/branches">
</list>
</lists>
Quelqu'un sait-il une manière que je pouvais faire filtrer ces paquets vides de mes annonces?
Merci, James
post-scriptum J'ai essayé les conseils donnés ici mais ça ne correspond pas vraiment à ce que j'essaie de faire ici. http://www.tek-tips.com/viewthread.cfm?qid=1088712&page=1
Mise à jour
Plus grand exemple d'entrée:
<?xml version="1.0"?>
<lists>
<list path="https://mydomain.com/website/branches">
<entry kind="dir">
<name>ITNAM-752</name>
<commit revision="2171">
<author>jcb4337</author>
<date>2010-08-30T15:13:21.006125Z</date>
</commit>
</entry>
<entry kind="dir">
<name>JCB4337-577</name>
<commit revision="2171">
<author>jcb4337</author>
<date>2010-08-30T15:13:21.006125Z</date>
</commit>
</entry>
<entry kind="dir">
<name>JCB4337-726</name>
<commit revision="2209">
<author>jcb4337</author>
<date>2010-09-02T11:02:08.584250Z</date>
</commit>
</entry>
<entry kind="dir">
<name>JCB4337-808</name>
<commit revision="2206">
<author>jcb4337</author>
<date>2010-09-01T13:01:51.693625Z</date>
</commit>
</entry>
<entry kind="dir">
<name>JCB4337-847</name>
<commit revision="2172">
<author>jcb4337</author>
<date>2010-08-30T15:14:12.803000Z</date>
</commit>
</entry>
</list>
</lists>
La sortie je besoin de revenir de la XSL est le long des lignes de ce:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<branches>branches/ITNAM-752,branches/JCB4337-577,branches/JCB4337-726,branches/JCB4337-808,branches/JCB4337-847</branches>
</root>
J'ai utilisé le code de @ Alejandro ci-dessus et je suis à peu près là, je pense. Mais je reçois des résultats étranges en cours de route. Exemple de sortie est:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<branches>
branches/ITNAM-752,
branches/JCB4337-577,
branches/JCB4337-726,
branches/JCB4337-808,
branches/JCB4337-847,
</branches>
</root>
Alors ...
1) Obtenir beaucoup d'espace blanc entre les éléments de la liste.
2) J'ai encore une virgule supplémentaire à la fin des résultats.
3) Lorsque j'essaie de l'appliquer à notre dossier de balises SVN, je reçois des résultats étranges. Les tags sont légèrement différents car ils contiennent ce dossier "archive" que je veux exclure des résultats.
Actuellement quand je sortie le dossier tags en utilisant le même code que je reçois ce ...
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tags>
archive
jcb4337
2010-08-31T08:56:51.006125Z
tags/milestone 1-0-0,
tags/milestone 1-0-0b,
tags/milestone 1-0-1,
tags/milestone 1-0-10,
tags/milestone 1-0-11,
tags/milestone 1-0-2,
tags/milestone 1-0-3,
tags/milestone 1-0-4,
tags/milestone 1-0-5,
tags/milestone 1-0-6,
tags/milestone 1-0-7,
tags/milestone 1-0-8,
tags/milestone 1-0-9,
</tags>
</root>
donc beaucoup d'espaces et archives, ainsi que tout l'horodatage, informations sur l'auteur apparaît, en utilisant @Alejandro solution .
BTW, au cas où vous vous demandez si ANT fait un remplacement de jeton directement après la fin du XSL. Il remplace l'expression svnType dans le XML. Je ne pouvais pas penser à un moyen d'appliquer le préfixe branches/tags sur chaque nœud en utilisant XSL.
J'espère que tout cela aide un peu plus et merci encore une fois pour les efforts de tous. XSL est un peu un art noir pour moi en ce moment :-).
Si ces réponses ne couvrent pas votre problème, vous pourriez modifier votre question avec les questions en suspens . –
Merci Alejandro. J'ai donné plus d'informations ci-dessous basé sur l'une des solutions. –
Consultez ma mise à jour. N'oubliez pas de poster un commentaire dans ma réponse la prochaine fois. Sinon, je ne reçois pas de notifications. –