Subject: RE: Is conditional group-by possible?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 25 Jan 2005 16:01:58 -0000
|
Yes, conditional grouping is possible, but the element names in your
stylesheet have to match those in your source document.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Jim Neff [mailto:jneff@xxxxxxxxxxxxxxx]
> Sent: 25 January 2005 15:52
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Is conditional group-by possible?
>
> Greetings,
>
> Is a conditional group-by possible?
>
> Here is what I tried:
>
> <xsl:for-each-group
> select="Table"
> group-by="(if ((FED_ID_FLAG = 'F')
> and (not(FED_ID = '')))
> then FED_ID
> else SOC_SEC_ID)">
>
> And I get nothing in my output.
>
> My input looks like simliar to this :
>
> <NewDataSet>
> <Table>
> <PROV_SOC_SEC_ID>111104550</PROV_SOC_SEC_ID>
> <PLOS_FED_ID_FLAG>S</PLOS_FED_ID_FLAG>
> <PLOS_FED_ID>190404550</PLOS_FED_ID>
> <PATIENT_LAST_NAME>Doe</PATIENT_LAST_NAME>
> <PATIENT_FIRST_NAME>John</PATIENT_FIRST_NAME>
> </Table>
> <Table>
> <PROV_SOC_SEC_ID>111104550</PROV_SOC_SEC_ID>
> <PLOS_FED_ID_FLAG>S</PLOS_FED_ID_FLAG>
> <PLOS_FED_ID>190404550</PLOS_FED_ID>
> <PATIENT_LAST_NAME>Doe</PATIENT_LAST_NAME>
> <PATIENT_FIRST_NAME>Jane</PATIENT_FIRST_NAME>
> </Table>
> <Table>
> <PROV_SOC_SEC_ID>777104550</PROV_SOC_SEC_ID>
> <PLOS_FED_ID_FLAG>F</PLOS_FED_ID_FLAG>
> <PLOS_FED_ID>880121550</PLOS_FED_ID>
> <PATIENT_LAST_NAME>Smith</PATIENT_LAST_NAME>
> <PATIENT_FIRST_NAME>Mary</PATIENT_FIRST_NAME>
> </Table>
> </NewDataSet>
>
> This should result in two groups, one 111104550, the other 880121550.
>
> What I want is to use the FED_ID element to group by if the
> FED_ID_FLAG =
> 'F' and FED_ID is an empty string. Otherwise I want to use
> the SOC_SEC_ID
> element to group.
>
> Thanks in advance,
> Jim Neff
|