Subject: Re: [xsl] How to get unique data From: ronald heller <ronald@xxxxxxxxxxx> Date: Thu, 08 Nov 2001 14:02:52 +0100 |
using the key function should do the trick: I made a script and tested it under saxon 6.4.2.
XML I used: <progs> <prog pid="0"> <item iid="0" fid="1"/> <item iid="0" fid="2"/> <item iid="0" fid="3"/> <item iid="0" fid="4"/> <item iid="0" fid="5"/> <item iid="1" fid="6"/> <item iid="1" fid="7"/> <item iid="1" fid="8"/> <item iid="1" fid="9"/> <item iid="1" fid="10"/> </prog> <prog pid="1"> <item iid="2" fid="11"/> <item iid="2" fid="12"/> <item iid="2" fid="13"/> <item iid="2" fid="14"/> <item iid="2" fid="15"/> <item iid="3" fid="16"/> <item iid="3" fid="17"/> <item iid="3" fid="18"/> <item iid="3" fid="19"/> <item iid="3" fid="20"/> </prog> </progs>
XSLT: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="item" match="item/@iid" use="." />
<xsl:template match="item"> <item iid="{@iid}" fid="{@fid}" /> </xsl:template> </xsl:stylesheet>
OUTPUT: <?xml version="1.0" encoding="utf-8"?> <prog pid="0"> <item iid="0" fid="1" />
<item iid="1" fid="6" /> </prog>
<prog pid="1"> <item iid="2" fid="11" />
<item iid="3" fid="16" /> </prog>
Hi,
In SQL "Select Distinct ...." can get the unique data form the specify table. But in xml I can not do the same work.
The data is as following: <prog pid="0"> <item iid="0" fid="1"/> <item iid="0" fid="2"/> <item iid="0" fid="3"/> <item iid="0" fid="4"/> <item iid="0" fid="5"/> <item iid="1" fid="6"/> <item iid="1" fid="7"/> <item iid="1" fid="8"/> <item iid="1" fid="9"/> <item iid="1" fid="10"/> </prog> <prog pid="1"> <item iid="2" fid="11"/> <item iid="2" fid="12"/> <item iid="2" fid="13"/> <item iid="2" fid="14"/> <item iid="2" fid="15"/> <item iid="3" fid="16"/> <item iid="3" fid="17"/> <item iid="3" fid="18"/> <item iid="3" fid="19"/> <item iid="3" fid="20"/> </prog>
How can I use xsl in IE to get the follow data: <prog pid="0"> <item iid="0" fid="1"/> <item iid="1" fid="6"/> </prog> <prog pid="1"> <item iid="2" fid="11"/> <item iid="3" fid="16"/> </prog>
fid attribute's value here is not important, I just want to the first item element with the unique iid.
I use the follow xsl ... <xsl:for-each select="//prog" order-by="@pid"> <xsl:for-each select="item" order-by="@iid"> <xsl:if exp="!checkDup( @iid )"> ...show the unique data... </xsl:if> </xsl:for-each> </xsl:for-each> ... <xsl:script language="javascript"> <![CDATA[ var arrItemName = new Array();
function checkDup( item ) { var isDup = false;
for ( i = 0; i<arrItemName.length; i++ ) { if ( arrItemName[i] == item ){ isDup = true; break; } }
if ( isDup==false ){ var len = arrItemName.length; arrItemName.length ++; arrItemName[len] = item; }
return isDup; } ]]> </xsl:script>
IE reported no error but still give the duplicate data, why??? Can anyone help me out???
______________________________________
ÎÒµÄQQ : 329170
ÎÒµÄICQ : 37175293
ÎÒµÄÂÛ̳: http://www3.ccw.com.cn c/c++
===================================================================
ÐÂÀËÃâ·Ñµç×ÓÓÊÏä (http://mail.sina.com.cn)
ÐÂÀË·ÖÀàÐÅÏ¢££³ÇÊÐÉú»îÖ¸ÄÏ£¡ (http://classad.sina.com.cn/)
ÆßÖÖÊÖ»úͼƬ¡¢Ç§Ê×ÁåÉùÏÂÔØ¡¡ÐÂÀ˶ÌÐÅÎÞÏÞ¾«²Ê! (http://sms.sina.com.cn/)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to get unique data, Chris Bayes | Thread | [xsl] Q on ISO TimeDate convertion, Walter Torres |
RE: [xsl] reliability of MSXML, Kevin Jones | Date | Re: [xsl] Testing for certain combi, David Carlisle |
Month |