Với XML sau:Thực hiện "Nhóm By" truy vấn trong 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>
Tôi muốn tạo ra XML này:
<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>
Tôi không thể nghĩ làm thế nào để làm điều này trong XSL chủ yếu là vì tôi muốn Nhóm theo số thứ tự .. Tất cả những gì tôi có thể đưa ra là:
<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>
Tuy nhiên điều này không tạo ra nhóm tốt đẹp ed danh sách thay vào đó tôi nhận được điều này:
<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>
Nếu ai đó có thể khiến tôi đi đúng hướng .. Điều đó sẽ tuyệt vời?
Cảm ơn
Bạn người đàn ông .. cổ vũ .. chỉ cần thử nó và nó hoạt động một điều trị. Tôi sẽ phải tìm kiếm điều này "nhóm meunchian" như tại thời điểm này tất cả có vẻ như voodoo – CraftyFella
Một câu hỏi ... Có cách nào để hạn chế các lĩnh vực int mà nó tạo ra .. như có một danh sách khác của int khác ở đâu và đưa những người đó vào khóa intfield? Hy vọng rằng có ý nghĩa – CraftyFella
Đúng, trong thuộc tính 'match' của xsl: key, bạn có thể nhập bất kỳ biểu thức Xpath đầy đủ nào để chính xác hơn về những nút bạn yêu cầu. Ví dụ: –