Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This stylesheet:</p> <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:template match="@*|node()"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="@*|node()"/&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="Rota"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="@*|node()"&gt; &lt;xsl:sort select="substring(date,7)"/&gt; &lt;xsl:sort select="substring(date,4,2)"/&gt; &lt;xsl:sort select="substring(date,1,2)"/&gt; &lt;/xsl:apply-templates&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>With this input:</p> <pre><code>&lt;Rota&gt; &lt;Shift&gt; &lt;date&gt;30/07/2010&lt;/date&gt; &lt;title1&gt;GM Specialised Medicine&lt;/title1&gt; &lt;gm&gt;Alison Watson&lt;/gm&gt; &lt;title2&gt;DDO Medicine &amp;amp; Cardio.&lt;/title2&gt; &lt;director&gt;Suzanne Marsello&lt;/director&gt; &lt;nurse&gt;n/a&lt;/nurse&gt; &lt;/Shift&gt; &lt;Shift&gt; &lt;date&gt;23/07/2010&lt;/date&gt; &lt;title1&gt;GM Neurosciences&lt;/title1&gt; &lt;gm&gt;Katie Cusick&lt;/gm&gt; &lt;title2&gt;Chief Operating Officer&lt;/title2&gt; &lt;director&gt;Patrick Mitchell&lt;/director&gt; &lt;nurse&gt;n/a&lt;/nurse&gt; &lt;/Shift&gt; &lt;/Rota&gt; </code></pre> <p>Output:</p> <pre><code>&lt;Rota&gt; &lt;Shift&gt; &lt;date&gt;23/07/2010&lt;/date&gt; &lt;title1&gt;GM Neurosciences&lt;/title1&gt; &lt;gm&gt;Katie Cusick&lt;/gm&gt; &lt;title2&gt;Chief Operating Officer&lt;/title2&gt; &lt;director&gt;Patrick Mitchell&lt;/director&gt; &lt;nurse&gt;n/a&lt;/nurse&gt; &lt;/Shift&gt; &lt;Shift&gt; &lt;date&gt;30/07/2010&lt;/date&gt; &lt;title1&gt;GM Specialised Medicine&lt;/title1&gt; &lt;gm&gt;Alison Watson&lt;/gm&gt; &lt;title2&gt;DDO Medicine &amp;amp; Cardio.&lt;/title2&gt; &lt;director&gt;Suzanne Marsello&lt;/director&gt; &lt;nurse&gt;n/a&lt;/nurse&gt; &lt;/Shift&gt; &lt;/Rota&gt; </code></pre> <p>Also, this stylesheet works:</p> <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:template match="@*|node()"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="@*|node()"&gt; &lt;xsl:sort select="substring(date,7)"/&gt; &lt;xsl:sort select="substring(date,4,2)"/&gt; &lt;xsl:sort select="substring(date,1,2)"/&gt; &lt;/xsl:apply-templates&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p><strong>Note</strong>: Correct substring. I change input order because default order is ascending. If you want descendent order add to <code>xsl:sort</code> this attribute <code>order="descending"</code>.</p> <p><strong>EDIT</strong>: Reverted wrong substring. Also, why don't you do all with XSLT? As example, this stylesheet:</p> <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:param name="startDate" select="20100715"/&gt; &lt;xsl:param name="endDate" select="$startDate + 100"/&gt; &lt;xsl:template match="Rota"&gt; &lt;table&gt; &lt;tr&gt; &lt;th&gt;Date&lt;/th&gt; &lt;th&gt;Title&lt;/th&gt; &lt;th&gt;GM&lt;/th&gt; &lt;th&gt;Title&lt;/th&gt; &lt;th&gt;Director&lt;/th&gt; &lt;th&gt;Nurse / Matron&lt;/th&gt; &lt;/tr&gt; &lt;xsl:apply-templates select="Shift[concat(substring(date,7), substring(date,4,2), substring(date,1,2)) &gt;= $startDate] [$endDate &gt;= concat(substring(date,7), substring(date,4,2), substring(date,1,2))]"&gt; &lt;xsl:sort select="substring(date,7)"/&gt; &lt;xsl:sort select="substring(date,4,2)"/&gt; &lt;xsl:sort select="substring(date,1,2)"/&gt; &lt;/xsl:apply-templates&gt; &lt;/table&gt; &lt;/xsl:template&gt; &lt;xsl:template match="Shift"&gt; &lt;tr&gt; &lt;xsl:apply-templates/&gt; &lt;/tr&gt; &lt;/xsl:template&gt; &lt;xsl:template match="Shift/*"&gt; &lt;td&gt; &lt;xsl:value-of select="."/&gt; &lt;/td&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>Output:</p> <pre><code>&lt;table&gt; &lt;tr&gt; &lt;th&gt;Date&lt;/th&gt; &lt;th&gt;Title&lt;/th&gt; &lt;th&gt;GM&lt;/th&gt; &lt;th&gt;Title&lt;/th&gt; &lt;th&gt;Director&lt;/th&gt; &lt;th&gt;Nurse / Matron&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;23/07/2010&lt;/td&gt; &lt;td&gt;GM Neurosciences&lt;/td&gt; &lt;td&gt;Katie Cusick&lt;/td&gt; &lt;td&gt;Chief Operating Officer&lt;/td&gt; &lt;td&gt;Patrick Mitchell&lt;/td&gt; &lt;td&gt;n/a&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;30/07/2010&lt;/td&gt; &lt;td&gt;GM Specialised Medicine&lt;/td&gt; &lt;td&gt;Alison Watson&lt;/td&gt; &lt;td&gt;DDO Medicine &amp;amp; Cardio.&lt;/td&gt; &lt;td&gt;Suzanne Marsello&lt;/td&gt; &lt;td&gt;n/a&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

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