Subject: RE: [xsl] unique-sequence-numbering From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Wed, 7 Aug 2002 15:16:37 +0100 |
> Short of an elegant solution, here's a simple way to do it: > > Step 1: go through your XML file and create another with the student > elements duplicated as necessary. > > Step 2: go through the new file and create the output -- sequence > numbering is now trivial. Doing a transformation in two phases often *is* the elegant solution. Of course with the node-set() extension you can do this with one stylesheet. There's another solution here, which is to calculate the sequence number as position() plus the number of preceding students that have address="YYY": position() + count(preceding-sibling::student[address='YYY']) But this may have O(n^2) performance (i.e. it won't run at "wire-speed" unless you have a very good optimizer). So the two phase solution may be better. Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > > > On Wed, 7 Aug 2002 subbu@xxxxxxxxxxxx wrote: > > ..Sorry for reposting..The subject was wrong!! > ..i have an xml file which looks like below. > ..<?xml version="1.0"?> > ..<students> > .. <student id = "101"> > .. <name>A</name> > .. <address>XXX</address> > .. </student> > .. <student id = "201"> > .. <name>B</name> > .. <address>YYY</address> > .. </student> > .. <student id = "301"> > .. <name>C</name> > .. <address>XXX</address> > .. </student> > .. <student id = "401"> > .. <name>E</name> > .. <address>YYY<address> > .. </student> > ..</students> > .. > ..And i have to deliver a CSV file that has the following > fields. .. ..Student-id , SequenceNumber , name, address. .. > ..Sequence number is an automatically generated number ( > should start from 1 to > ..end of Students ).. > .. > ..so a typical CSV FIle would be.. > .. > ..101,1,A,abc > ..102,2,B,bcd > ..103,3,C,cde > ..104,4,D,efg > .... > ..Now There is a business rule that says that if a student > has an address value > ..that is equal to 'YYY', then show the complete information > *line* twice, with > ..only the sequence number changed.. > ..That is > ..101,1,A,abc > ..102,2,B,bcd > ..102,3,B,bcd <-- repeated again with sequence number > changed ..103,4,C,cde ..104,5,D,efg ..104,6,D,efg <-- > repeated again with sequence number changed .. .. ..I am > using the position() function to get the serial number..This > is where the > ..problem starts.. > ..If i put a condition that > .. if address == 'YYY' ( just pseudo code. dont mind the > syntax ) ..{ ..value-of-select --> @id,position(),name,address > .. @id,position()+1,name,address > ..} > ..else > ..{ > ..value-of-select --> @id,position(),name,address > ..} > .. > ..I end up getting something like this > .. > ..101,1,A,abc > ..102,2,B,bcd > ..102,3,B,bcd <-- repeated again with sequence number > changed ..103,3,C,cde <-- same sequence number repeated... > That is the position .. ..104,4,D,efg ..104,5,D,efg <-- > repeated again with sequence number changed .. ..and what i > want should look like .. ..101,1,A,abc ..102,2,B,bcd > ..102,3,B,bcd <-- repeated again with sequence number > changed ..103,4,C,cde <-- this is not showing up position > but prev-seq+1 ..104,5,D,efg ..104,6,D,efg <-- repeated again > with sequence number changed .. ..so the requirement tells, > if you find address equal to 'YYY', then add it show > ..it once more with a sequence number -> prev-seq-num +1 and > then every > ..subsequent sequence number should be consequitive. The > sequence number is a > ..unique number ( from 1 to End of students ). > .. > ..I can not think of a way to do this.This looks totally like > a dead end to me. ..I shall be highly thankful if some one > can please help me out of this > ..situation... > ..Please let me know if i am missing out any information that > would make the > ..question clearer.. > .. > ..Thanks a ton!!!!!!!!! > .. > ..-------------------------------------------------------------- > ..Sent with "Me-Mail", Boltblue's FREE mobile messaging > service. ..http://www.boltblue.com .. .. .. XSL-List info and > archive: http://www.mulberrytech.com/xsl/xsl-list > .. > > -- > > Jeff Kenton > DataPower Technology, Inc. > *** Wire Speed XSLT *** > http://www.datapower.com/products.shtml XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] unique-sequence-numbering, Jeff Kenton | Thread | RE: [xsl] unique-sequence-numbering, Sachidanandam E K |
[xsl] xml-stylesheet and vars, Nathan Shaw | Date | [xsl] Suppressing attributes while , Kalyan Kumar Mudumba |
Month |