XSL Vu le code XML suivant:Exécution d'un « groupe par » requête dans XPath
<results name="queryResults">
<int name="intfield1:[* TO 10]">11</int>
<int name="intfield2:[10 TO 20]">9</int>
<int name="intfield1:[10 TO 20]">12</int>
</results>
je voudrais produire ce XML:
<results>
<field name="numberfield1">
<value name="[* TO 10]">11</value>
<value name="[10 TO 10]">12</value>
</field>
<field name="numberfield2">
<value name="[10 TO 20]">9</value>
</field>
</results>
Je ne peux pas penser comment faire en principalement parce que je XSL suis vouloir groupe par le numbericfield .. Tout ce que je peux trouver est la suivante:
<xsl:if test="count(results/int) > 0">
<results>
<xsl:for-each select="results/int">
<field>
<xsl:attribute name="name">
<xsl:value-of select="substring-before(@name, ':')"/></xsl:attribute>
<value>
<xsl:attribute name="name">
<xsl:value-of select="substring-after(@name, ':') "/>
</xsl:attribute>
<xsl:value-of select="."/>
</value>
</field>
</xsl:for-each>
</results>
</xsl:if>
Toutefois, cela ne produit pas le beau groupe liste ed place i obtenir ceci:
<results>
<field name="numberfield1">
<value name="[* TO 10]">11</value>
</field>
<field name="numberfield2">
<value name="[10 TO 20]">9</value>
</field>
<field name="numberfield1">
<value name="[10 TO 10]">12</value>
</field>
</results>
Si quelqu'un peut me TSAR dans la bonne direction .. Ce serait génial?
Merci
Vous l'homme .. .. hourras juste essayé et il fonctionne un régal. Je vais devoir chercher ce truc de "meunchian grouping" comme pour le moment tout cela ressemble à du vaudou – CraftyFella
Une question ... Y at-il un moyen de limiter les champs int qu'il crée ... comme il y a une autre liste d'int's else où et ça amène ceux-ci dans la clé intfield? Espérons que cela a du sens – CraftyFella
Oui, dans l'attribut 'match' de la clé xsl: vous pouvez entrer une expression Xpath complète pour être plus précis sur les nœuds dont vous avez besoin. Par exemple –