Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This is just an example to show you how to do what you want. The main point here is application of Meunchian method to perform grouping. I've minimized in the transform the produced output so that you can easily see that the wanted result is obtained.</p> <p><strong>NOTE</strong> XML is <strong>case sensitive</strong>. Your current <code>key</code> is not built properly.</p> <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:output indent="yes"/&gt; &lt;xsl:key name="k-accounts" match="accountitem" use="concat(Contract,Account,format-number(net, '$#,###.00'),format-number(gross, '$#,###.00'))"/&gt; &lt;xsl:template match="so"&gt; &lt;xsl:apply-templates select="accountitem [generate-id() = generate-id(key('k-accounts', concat(Contract,Account,format-number(net, '$#,###.00'),format-number(gross, '$#,###.00'))) [1])]"/&gt; &lt;/xsl:template&gt; &lt;xsl:template match="accountitem"&gt; &lt;xsl:copy&gt; &lt;xsl:copy-of select="Contract|Account|net|gross"/&gt; &lt;agent_name&gt; &lt;xsl:value-of select="agent_name"/&gt; &lt;xsl:apply-templates select="key('k-accounts', concat(Contract,Account,format-number(net, '$#,###.00'),format-number(gross, '$#,###.00')))/agent_name [.!=current()/agent_name]" mode="agent_name"/&gt; &lt;/agent_name&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="agent_name" mode="agent_name"&gt; &lt;xsl:value-of select="concat('; ',.)"/&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>Given this input (slightly modified to make it well formed):</p> <pre><code>&lt;so&gt; &lt;accountitem&gt; &lt;Entry_Date&gt;2011-06-24T00:00:00-05:00&lt;/Entry_Date&gt; &lt;Contract&gt;4570000010&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;general_desc&gt;Systematic Withdrawal&lt;/general_desc&gt; &lt;net&gt;1108.3700&lt;/net&gt; &lt;gross&gt;1108.3700&lt;/gross&gt; &lt;Person_Name&gt;WHITEY HOUSE&lt;/Person_Name&gt; &lt;Last_Name&gt;HOUSE&lt;/Last_Name&gt; &lt;agent_name&gt;BROWN, JACK&lt;/agent_name&gt; &lt;Legal_Verb&gt;N&lt;/Legal_Verb&gt; &lt;Payeename&gt;NONE&lt;/Payeename&gt; &lt;Closed_Flag&gt;0&lt;/Closed_Flag&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Entry_Date&gt;2011-06-24T00:00:00-05:00&lt;/Entry_Date&gt; &lt;Contract&gt;4570000010&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;general_desc&gt;Systematic Withdrawal&lt;/general_desc&gt; &lt;net&gt;1108.3700&lt;/net&gt; &lt;gross&gt;1196.5400&lt;/gross&gt; &lt;Person_Name&gt;WHITEY HOUSE&lt;/Person_Name&gt; &lt;Last_Name&gt;HOUSE&lt;/Last_Name&gt; &lt;agent_name&gt;BROWN, JACK&lt;/agent_name&gt; &lt;Legal_Verb&gt;N&lt;/Legal_Verb&gt; &lt;Payeename&gt;NONE&lt;/Payeename&gt; &lt;Closed_Flag&gt;0&lt;/Closed_Flag&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Entry_Date&gt;2011-06-20T00:00:00-05:00&lt;/Entry_Date&gt; &lt;Contract&gt;4570000009&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;general_desc&gt;Systematic Withdrawal&lt;/general_desc&gt; &lt;net&gt;798.4038&lt;/net&gt; &lt;gross&gt;901.5600&lt;/gross&gt; &lt;Person_Name&gt;WHITEY HOUSE&lt;/Person_Name&gt; &lt;Last_Name&gt;HOUSE&lt;/Last_Name&gt; &lt;agent_name&gt;BROWN, JACK&lt;/agent_name&gt; &lt;Legal_Verb&gt;N&lt;/Legal_Verb&gt; &lt;Payeename&gt;NONE&lt;/Payeename&gt; &lt;Closed_Flag&gt;0&lt;/Closed_Flag&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Entry_Date&gt;2011-06-20T00:00:00-05:00&lt;/Entry_Date&gt; &lt;Contract&gt;4570000009&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;general_desc&gt;Systematic Withdrawal&lt;/general_desc&gt; &lt;net&gt;798.4038&lt;/net&gt; &lt;gross&gt;901.5600&lt;/gross&gt; &lt;Person_Name&gt;WHITEY HOUSE&lt;/Person_Name&gt; &lt;Last_Name&gt;HOUSE&lt;/Last_Name&gt; &lt;agent_name&gt;DUCK, DONALD Q&lt;/agent_name&gt; &lt;Legal_Verb&gt;N&lt;/Legal_Verb&gt; &lt;Payeename&gt;NONE&lt;/Payeename&gt; &lt;Closed_Flag&gt;0&lt;/Closed_Flag&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Entry_Date&gt;2011-06-20T00:00:00-05:00&lt;/Entry_Date&gt; &lt;Contract&gt;4570000009&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;general_desc&gt;Systematic Withdrawal&lt;/general_desc&gt; &lt;net&gt;800.3800&lt;/net&gt; &lt;gross&gt;820.3400&lt;/gross&gt; &lt;Person_Name&gt;WHITEY HOUSE&lt;/Person_Name&gt; &lt;Last_Name&gt;HOUSE&lt;/Last_Name&gt; &lt;agent_name&gt;BROWN, JACK&lt;/agent_name&gt; &lt;Legal_Verb&gt;N&lt;/Legal_Verb&gt; &lt;Payeename&gt;NONE&lt;/Payeename&gt; &lt;Closed_Flag&gt;0&lt;/Closed_Flag&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Entry_Date&gt;2011-06-20T00:00:00-05:00&lt;/Entry_Date&gt; &lt;Contract&gt;4570000009&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;general_desc&gt;Systematic Withdrawal&lt;/general_desc&gt; &lt;net&gt;800.3800&lt;/net&gt; &lt;gross&gt;820.3400&lt;/gross&gt; &lt;Person_Name&gt;WHITEY HOUSE&lt;/Person_Name&gt; &lt;Last_Name&gt;HOUSE&lt;/Last_Name&gt; &lt;agent_name&gt;DUCK, DONALD Q&lt;/agent_name&gt; &lt;Legal_Verb&gt;N&lt;/Legal_Verb&gt; &lt;Payeename&gt;NONE&lt;/Payeename&gt; &lt;Closed_Flag&gt;0&lt;/Closed_Flag&gt; &lt;/accountitem&gt; &lt;/so&gt; </code></pre> <p>The following output (minimized to show that correct results are achieved) is obtained:</p> <pre><code>&lt;accountitem&gt; &lt;Contract&gt;4570000010&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;net&gt;1108.3700&lt;/net&gt; &lt;gross&gt;1108.3700&lt;/gross&gt; &lt;agent_name&gt;BROWN, JACK&lt;/agent_name&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Contract&gt;4570000010&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;net&gt;1108.3700&lt;/net&gt; &lt;gross&gt;1196.5400&lt;/gross&gt; &lt;agent_name&gt;BROWN, JACK&lt;/agent_name&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Contract&gt;4570000009&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;net&gt;798.4038&lt;/net&gt; &lt;gross&gt;901.5600&lt;/gross&gt; &lt;agent_name&gt;BROWN, JACK; DUCK, DONALD Q&lt;/agent_name&gt; &lt;/accountitem&gt; &lt;accountitem&gt; &lt;Contract&gt;4570000009&lt;/Contract&gt; &lt;Account&gt;0&lt;/Account&gt; &lt;net&gt;800.3800&lt;/net&gt; &lt;gross&gt;820.3400&lt;/gross&gt; &lt;agent_name&gt;BROWN, JACK; DUCK, DONALD Q&lt;/agent_name&gt; &lt;/accountitem&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload