Subject: [xsl] sorting and merging From: Riboni Ugo <Ugo.Riboni@xxxxxxxxxxxx> Date: Tue, 3 Apr 2001 14:24:48 +0200 |
hi everybody, i'm new ot this list but maybe someone can can give me some help to solve this problem i have. (sorry if the explanation is going to be lengthy, but i had not found a more concise way to express what i need to do. i hope this helps clarity, thought.) in my application (server side) i create an xml fragment from random user input, then i need to merge it into a "main" xml document after sorting it. the structure of my main xml doc looks like: ("main.xml") <ex> <qs> <q type="S"> <as> <a>txt</a> {...more <a>...} </as> </q> {...more <q>...} </qs> </ex> and the fragments i need to merge look like: <temproot> <a new="3">txt</a> <a new="1">txt</a> <a new="2">txt</a> </temproot> What i need to do is to first sort the <a>'s in the fragment based on the "new" attribute, then insert them in the main xml file *replacing* all the old <a>'s. To make it simple suppose i wish to insert them always as childs of the first <q> in the main xml doc. (i think i can parametrize this later). Also i need, quite obviously, to remove the "new" attribute from the result, since it's useful only as a sort device and not to the final xml. Currently what i do is to create load the fragment in the processor and sort the <a>'s with a stylesheet like this one (boilerplate stuff killed): <xsl:template match='/'> <xsl:apply-templates select="/temproot"/> </xsl:template> <xsl:template match='@* | node()'> <xsl:copy> <xsl:apply-templates select='@*[not(name()="new")] | node()' > <xsl:sort select="@new" data-type="number"/> </xsl:apply-templates> </xsl:copy> </xsl:template> after this i have to resort to the loading the main xml and the sorted fragment in two DOMs and then "manually" strip all the childs <a>'s of the designated <q> and insert the new <a>'s in their place. My idea is to use document() to load the main xml in the above stylesheet and use it to perform also the part i currently do via the DOM, but so far i had not been able to write a working stylesheet that does this. Can someone please throw an hint at me ? Just an idea on how to tackle this problem or some pieces of example stylesheet would be greatly appreciated. Thanks in advance, Ugo R. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Application using XML, Alistair MacDonald | Thread | Re: [xsl] sorting and merging, Francis Norton |
[xsl] Application using XML, Daniel Newman | Date | Re: [xsl] Using document() and name, David Carlisle |
Month |