Учитывая следующий XML:Выполнение «Группировать по» запрос в XPath XSL
<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>
Я хотел бы, чтобы произвести этот 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>
Я не могу думать, как сделать это в XSL в основном потому, что я хотел группы по numbericfield .. Все, что я могу придумать это:
<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>
Однако это не дает хорошую группу ed list, а я получаю это:
<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>
Если кто-то может уложить меня в правильном направлении .. Это было бы здорово?
Благодаря
Вы человек .. ура .. просто попытался это, и это работает удовольствие. Мне нужно будет найти эту «группировку с участием майнинга», так как на данный момент все это похоже на voodoo. – CraftyFella
Один вопрос ... Есть ли способ ограничить созданные им int-поля ... так как есть еще один список int else где и вносят их в ключ intfield? Надеюсь, что имеет смысл – CraftyFella
Да, в атрибуте «match» ключа xsl: вы можете ввести любое полное выражение Xpath, чтобы быть более точным о том, какие узлы вам требуются. Например, –