Subject: [xsl] For-each and keys() From: Steve <subsume@xxxxxxxxx> Date: Mon, 31 Jul 2006 12:33:07 -0400 |
Trying to come up with key declarations for the below XML trees (which are both contained within $variables
<output type="Cognitive" count="50" /> <output type="Physical" count="26" /> <output type="Visual" count="34" /> <output type="Hearing" count="90" /> <output type="Mental" count="11" /> <output type="None" count="1" />
The count, in this case, is the amount of times a Record/disabPrimary corresponds to any disabilities/option/@oldID. These must then be grouped by their @type and appear only once in the table.
Sorry to post so much but in trying to score for brevity I have obviously overcorrected and gone straight to muddled ambiguity in previous posts. Please let me know if there is anything too vague that I may elaborate upon. ---
My current XSL has the problem of not using key in a meaningful way (always returns 0) and also produces a row for each Record, although it does order them by type.
<xsl:key name="options" match="option" use="@type" /> <xsl:key name="oldID" match="Record" use="disabPrimary" /> <xsl:variable name="$Definitions" select="Document(Disabilities.xml)" /> <xsl:variable name="$Var" select="Document(Records.xml)" /> <xsl:template match="Record" mode="x"> <xsl:param name="type" /> <tr> <td> <xsl:value-of select="$type" /> </td> <td> <xsl:variable name="current" select="disabPrimary" /> <xsl:for-each select="$Definitions/disabilities"> <xsl:value-of select="count(key('oldID',$current))" /> </xsl:for-each> </td> </tr> </xsl:template> <xsl:template match="/" > <html> <head> <link rel="stylesheet" href="performance.css" /> </head> <body> <table> <xsl:for-each select="$Definitions/disabilities/option[generate-id(.)=generate-id(key('options',@type)[1])]"> <xsl:sort select="@type"/> <xsl:apply-templates mode="x" elect="$Var/Records/Record"> <xsl:with-param name="type" select="@type" /> </xsl:apply-templates> </xsl:for-each> </table> </body> </html> </xsl:template>
<disabilities> <option oldID="204" type="Cognitive" name="Alzheimer's/Dementia"/> <option oldID="407" type="Physical" name="Amputation"/> <option oldID="405" type="Physical" name="Arthritic Conditions"/> <option oldID="301" type="Cognitive" name="Autism"/> <option oldID="100" type="Visual" name="Blind"/> <option type="Physical" name="Blood disorders" /> <option oldID="413" type="Physical" name="Cancer"/> <option oldID="400" type="Cognitive" name="Cerebral Palsy"/> <option oldID="410" type="Physical" name="Chronic Fatigue Syndrome"/> <option oldID="305" type="Cognitive" name="Cognitive-Other"/> <option type="Physical" name="Cystic Fibrosis"/> <option oldID="101" type="Hearing" name="Deaf"/> <option oldID="302" type="Cognitive" name="Developmental/Mental Retardation"/> <option oldID="414" type="Physical" name="Diabetes"/> <option oldID="411" type="Physical" name="Epilepsy/Seizure Dis."/> <option type="Physical" name="Fibromyalgia"/> <option oldID="101" type="Hearing" name="Hard of Hearing"/> <option oldID="415" type="Physical" name="Heart Disease" /> <option type="Physical" name="Hepatitus"/> <option oldID="416" type="Physical" name="HIV/AIDS"/> <option type="Physical" name="Kidney disorder/renal failure"/> <option oldID="300" type="Cognitive" name="Learning Disabilities"> <option oldID="" type="Physical" name="Lung disease/disorders/conditions" /> <option oldID="202" type="Mental" name="Mental Health-Other"/> <option oldID="200" type="Mental" name="Mental Illness/Emot.Dis"/> <option oldID="418" type="Physical" name="Morbid Obesity"/> <option oldID="417" type="Physical" name="Multiple Chemical Sensitive"/> <option oldID="420" type="Multiple" name="Multiple Disability"/> <option oldID="403" type="Physical" name="Multiple Sclerosis"/> <option oldID="402" type="Physical" name="Muscular Dystophy"/> <option oldID="412" type="Physical" name="Neurological-Other"/> <option oldID="500" type="None" name="None"/> <option oldID="406" type="Physical" name="Orthopedic-Other"/> <option oldID="419" type="Physical" name="Physical-Other"/> <option oldID="410" type="Physical" name="Post-Polio"/> <option oldID="404" type="Physical" name="Spinal Cord Disorders" /> <option oldID="404" type="Physical" name="Spinal Cord Injuries" /> <option oldID="409" type="Physical" name="Stroke/Cardiovascular"/> <option oldID="201" type="Mental" name="Substance Abuse/Addiction"/> <option oldID="303" type="Cognitive" name="Traumatic Brain Injury" /> <option oldID="" type="Visual" name="Visually Impaired"/> </disabilities>
<Records> <Record> <disabPrimary>200</disabPrimary> </Record> <Record> <disabPrimary>407</disabPrimary> </Record> <Record> <disabPrimary>101</disabPrimary> </Record> <Record> <disabPrimary>101</disabPrimary> </Record> <Record> <disabPrimary>101</disabPrimary> /Record> <Record> <disabPrimary>101</disabPrimary> </Record> <Record> <disabPrimary>101</disabPrimary> </Record> <Record> <disabPrimary>200</disabPrimary> </Record> <Record> <disabPrimary>101</disabPrimary> </Record>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Is it possible to create , Nick Glenister | Thread | Re: [xsl] For-each and keys(), andrew welch |
Re: [xsl] Glossary Help, Mukul Gandhi | Date | Re: [xsl] Sibling axis and as="elem, Colin Adams |
Month |