J'ai lu avec intérêt les techniques disponibles sur le Web pour extraire une liste unique d'éléments à partir d'un fichier XML contenant des doublons en utilisant XSL.XSL: Combinaison de groupes et de modèles d'appel
Celles-ci vont en 2 catégories: 1) La méthode Muenchian (exemple: http://www.jenitennison.com/xslt/grouping/) 2) Ou le frère précédent Recherch Ces deux compter sur une expression XPath pour sélectionner les données à un groupe par.
Cependant, dans le fichier XML que j'essaie de résoudre, les données ne sont pas présentes «nativement» dans le fichier XML. J'utilise un template xsl: pour calculer des données agrégées de mes éléments. Et je voudrais regrouper basé sur les données agrégées.
Par exemple, j'ai:
<filmsreview>
<record><data name='movie'>Star Wars</data><data name='ratings'>John:Good, Mary:Good</data></record>
<record><data name='movie'>Indiana Jones</data><data name='ratings'>John:Good, Mary:Bad, Helen:Average</data></record>
<record><data name='movie'>Titanic</data><data name='ratings'>John:Bad, Helen:Good</data></record>
</filmsreview>
Je sais que la Structuration des données ne sont pas parfait et que, en créant des sous-éléments que je pouvais faire quelque chose de plus facile, mais je ne peux pas changer facilement la source de données, donc nous allons prendre cela comme un défi.
Et je voudrais construire un récapituler où j'ai évaluations distinctes de John: notes John: Bonne Bad
J'ai un xsl: template qui peut prendre un élément d'enregistrement et de retour de la note de John pour cet enregistrement : Exemple:
<xsl:template name="get_rating">
<xsl:param name="reviewer" />
<!-- I use some string manipulation, and xsl:value-of to return the review for John-->
</xsl:template>
je peux l'appeler sous un xsl: for-each pour obtenir la liste exhaustive de l'examen de John. Mais je ne peux pas combiner cet appel avec l'une des méthodes pour obtenir des valeurs uniques. Dois-je utiliser un XSL intermédiaire pour convertir mon fichier XML de manière plus structurée? Ou puis-je faire en une seule étape?
Un grand merci Gérard
Merci, cette réponse m'a aidé à trouver la solution. Quelques choses qui pourraient compléter la réponse: L'attribut suivant doit être ajouté au xsl: stylesheet xmlns: msxsl = « urn: schemas-microsoft-com: xslt » Voici les principaux besoins à définir: La boucle suivante peut être faite pour obtenir les éléments uniques: xsl: for-each> –