xsl-list
[Top] [All Lists]

single display of double elements but how to use generate-id

2002-12-19 09:02:15
Hello XSL-List Members,

while you all discuss strange (for me) things about verse extractions
i hope my question is trivial for you.

what i want to do is a javascript extract like this:

------------------------------------------
var listB = new DynamicOptionList("B","A");
listB.addOptions("PM2Q 6","Mac","Mac");
listB.addOptions("PageMaker 7.0","Windows","Windows","Mac","Mac");
listB.setDefaultOption("PM2Q 6","Mac");
listB.setDefaultOption("PageMaker 7.0","Mac");
------------------------------------------

done with this xsl (works):
------------------------------------------

<xsl:text>var listB = new DynamicOptionList("B","A");</xsl:text>
<xsl:for-each select="xalan:nodeset($smallversion)/vers">
            <xsl:text>listB.addOptions("</xsl:text>
                <xsl:value-of select="." /><xsl:text>"</xsl:text>
                <xsl:variable name="thisname" select="."/>
                
                <xsl:variable name="systemsForEach">
                <xsl:for-each select="$articles[contains(articleName, 
$thisname)]">
                        <sfffe><xsl:text>,"</xsl:text><xsl:value-of 
select="articleenv/name"/>","<xsl:value-of 
select="articleenv/name"/><xsl:text>"</xsl:text></sfffe>
                </xsl:for-each>
                </xsl:variable>
                <xsl:variable name="newnode" 
select="xalan:nodeset($systemsForEach)/sfffe"/>
                <xsl:for-each select="$newnode">
                        <xsl:if test="generate-id(.) =  
generate-id($newnode[.=current()])">
                                <xsl:value-of select="."/>
                        </xsl:if>
                </xsl:for-each>
                                
                <xsl:text>);</xsl:text>
</xsl:for-each>
<xsl:for-each select="xalan:nodeset($smallversion)/vers">
                <xsl:text>listB.setDefaultOption("</xsl:text>
                <xsl:value-of select="." />
                <xsl:text>",</xsl:text>
                <xsl:for-each select="xalan:nodeset($smallsys)/sys">
                        <xsl:if test="position()='1'">
                                <xsl:text>"</xsl:text><xsl:value-of 
select="."/><xsl:text>"</xsl:text>
                        </xsl:if>
                </xsl:for-each>
            <xsl:text>);</xsl:text>
</xsl:for-each>
----------------------------------------


but the next part drives me crazy.

the output should be like this without doubles of languages:

----------------------------------------

var listC = new DynamicOptionList("C","A","B");
listC.addOptions("PM2Q 6|Mac","english/anglais","EN");
listC.addOptions("PageMaker 
7.0|Windows","german/allemand","DE","german/allemand","DE","english/anglais","EN");
listC.addOptions("PageMaker 
7.0|Mac","german/allemand","DE","german/allemand","DE");
                  ^firstselect    ^secondselect                    ^option     
^value
-----------------------------------------

what should the script do: when someone choose an option in a select
box the othe box should be filled automatically with new options
without reloading. (the jscript works fine allready)
but as you can see, the languages are displayed twice.

here is the piece of xsl that makes the stuff:
i have marked the criteric point with an command.

any one got an idea ?

at the bottom you can find the the xml i work with !

------------------------------------------

<xsl:text>var listC = new DynamicOptionList("C","A","B");</xsl:text>
<xsl:for-each select="xalan:nodeset($smallversion)/vers">
            <xsl:variable name="thisname" select="."/>
                <xsl:variable name="systemsForEach">
                <xsl:for-each select="$articles[contains(articleName, 
$thisname)]">
                        <xsl:variable name="envname" select="articleenv/name"/>
                        <sofar>
                                <xsl:text>listC.addOptions(</xsl:text>
                                <xsl:text>"</xsl:text>
                                <xsl:value-of 
select="$thisname"/>|<xsl:value-of select="$envname"/>
                                <xsl:text>"</xsl:text>
                                <xsl:for-each 
select="$articles[contains(articleName, $thisname)]">
                                        <xsl:if 
test="contains(articleenv/name,$envname)">
                                        
                                                <!-- at this point i need to 
display each language only once -->
                                                
<xsl:text>,"</xsl:text><xsl:value-of 
select="articlelanguage/name"/><xsl:text>","</xsl:text><xsl:value-of 
select="articlelanguage/shortname"/><xsl:text>"</xsl:text>
                                                <!-- end language display -->
                                        
                                        </xsl:if>
                                </xsl:for-each>
                                <xsl:text>);</xsl:text>
                        </sofar>
                </xsl:for-each>
                </xsl:variable>
                <xsl:variable name="newnode" 
select="xalan:nodeset($systemsForEach)/sofar"/>
                <xsl:for-each select="$newnode">
                        <xsl:if test="generate-id(.) =  
generate-id($newnode[.=current()])">
                                <xsl:value-of select="."/>
                        </xsl:if>
                </xsl:for-each>
</xsl:for-each>


-- 
Best regards,
 Heiko                          mailto:heiko(_at_)specht(_dot_)com


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="neutest.xsl" encoding="UTF-8"?>
<page 
key="softline.de.product_show"><article-list><article><article_id>21652</article_id><articleName>PM2Q
 6 MAC 
en.</articleName><articleno>21652</articleno><archived>0</archived><weight>0.15000000596046448</weight><deliverable>1</deliverable>
<reservationstock>0.0</reservationstock><articleenv><articleenv_id>2</articleenv_id><name>Mac</name><shortname>M</shortname></articleenv><articlelanguage><articlelanguage_id>3</articlelanguage_id><name>english/anglais</name><shortname>EN</shortname></articlelanguage>
<articleclass1_id>0</articleclass1_id><articleclass2_id>0</articleclass2_id><articleclass3_id>0</articleclass3_id><articleclass4_id>0</articleclass4_id><expiration>1</expiration><type><type_id>1</type_id><pricecalculator_id>1</pricecalculator_id><name>standard</name>
<deliverable>1</deliverable></type><retailprice><retailprice_id>33914</retailprice_id><article_id>21652</article_id><pricetype_id>100</pricetype_id><client_id>1</client_id><price>145.69</price><bruttoprice>169.0</bruttoprice><currency><currency_id>114</currency_id><name>EURO</name>
<shortname>EUR</shortname><exchange>1.0</exchange><isoname>EUR</isoname><isocode>978</isocode></currency><vatrate>16.0</vatrate></retailprice></article><article><article_id>957550</article_id><articleName>PageMaker
 7.0 WIN de.</articleName><articleno>PMA00003</articleno><archived>0</archived>
<weight>1.2999999523162842</weight><deliverable>1</deliverable><reservationstock>0.0</reservationstock><articleenv><articleenv_id>3</articleenv_id><name>Windows</name><shortname>W</shortname></articleenv><articlelanguage><articlelanguage_id>5</articlelanguage_id><name>german/allemand</name>
<shortname>DE</shortname></articlelanguage><articleclass1_id>0</articleclass1_id><articleclass2_id>0</articleclass2_id><articleclass3_id>0</articleclass3_id><articleclass4_id>0</articleclass4_id><expiration>0</expiration><type><type_id>1</type_id><pricecalculator_id>1</pricecalculator_id>
<name>standard</name><deliverable>1</deliverable></type><retailprice><retailprice_id>199698</retailprice_id><article_id>957550</article_id><pricetype_id>100</pricetype_id><client_id>1</client_id><price>818.1</price><bruttoprice>949.0</bruttoprice><currency><currency_id>114</currency_id>
<name>EURO</name><shortname>EUR</shortname><exchange>1.0</exchange><isoname>EUR</isoname><isocode>978</isocode></currency><vatrate>16.0</vatrate></retailprice></article><article><article_id>957551</article_id><articleName>PageMaker
 7.0 MAC de.</articleName><articleno>PMA00004</articleno>
<archived>0</archived><weight>1.2999999523162842</weight><deliverable>1</deliverable><reservationstock>0.0</reservationstock><articleenv><articleenv_id>2</articleenv_id><name>Mac</name><shortname>M</shortname></articleenv><articlelanguage><articlelanguage_id>5</articlelanguage_id>
<name>german/allemand</name><shortname>DE</shortname></articlelanguage><articleclass1_id>0</articleclass1_id><articleclass2_id>0</articleclass2_id><articleclass3_id>0</articleclass3_id><articleclass4_id>0</articleclass4_id><expiration>0</expiration><type><type_id>1</type_id>
<pricecalculator_id>1</pricecalculator_id><name>standard</name><deliverable>1</deliverable></type><retailprice><retailprice_id>199703</retailprice_id><article_id>957551</article_id><pricetype_id>100</pricetype_id><client_id>1</client_id><price>818.1</price><bruttoprice>949.0</bruttoprice>
<currency><currency_id>114</currency_id><name>EURO</name><shortname>EUR</shortname><exchange>1.0</exchange><isoname>EUR</isoname><isocode>978</isocode></currency><vatrate>16.0</vatrate></retailprice></article><article><article_id>957552</article_id>
<articleName>Update auf PageMaker 7.0 MAC de. von 
x.x</articleName><articleno>PMA00005</articleno><archived>0</archived><weight>1.2000000476837158</weight><deliverable>1</deliverable><reservationstock>0.0</reservationstock><articleenv><articleenv_id>2</articleenv_id><name>Mac</name>
<shortname>M</shortname></articleenv><articlelanguage><articlelanguage_id>5</articlelanguage_id><name>german/allemand</name><shortname>DE</shortname></articlelanguage><articleclass1_id>3</articleclass1_id><articleclass2_id>0</articleclass2_id><articleclass3_id>0</articleclass3_id>
<articleclass4_id>0</articleclass4_id><expiration>0</expiration><type><type_id>1</type_id><pricecalculator_id>1</pricecalculator_id><name>standard</name><deliverable>1</deliverable></type><retailprice><retailprice_id>199708</retailprice_id><article_id>957552</article_id>
<pricetype_id>100</pricetype_id><client_id>1</client_id><price>128.45</price><bruttoprice>149.0</bruttoprice><currency><currency_id>114</currency_id><name>EURO</name><shortname>EUR</shortname><exchange>1.0</exchange><isoname>EUR</isoname><isocode>978</isocode></currency>
<vatrate>16.0</vatrate></retailprice></article><article><article_id>957553</article_id><articleName>Update
 auf PageMaker 7.0 WIN de. von 
x.x</articleName><articleno>PMA00006</articleno><archived>0</archived><weight>1.2000000476837158</weight><deliverable>1</deliverable>
<reservationstock>0.0</reservationstock><articleenv><articleenv_id>3</articleenv_id><name>Windows</name><shortname>W</shortname></articleenv><articlelanguage><articlelanguage_id>5</articlelanguage_id><name>german/allemand</name><shortname>DE</shortname></articlelanguage>
<articleclass1_id>0</articleclass1_id><articleclass2_id>0</articleclass2_id><articleclass3_id>0</articleclass3_id><articleclass4_id>0</articleclass4_id><expiration>0</expiration><type><type_id>1</type_id><pricecalculator_id>1</pricecalculator_id><name>standard</name><deliverable>1</deliverable>
</type><retailprice><retailprice_id>199713</retailprice_id><article_id>957553</article_id><pricetype_id>100</pricetype_id><client_id>1</client_id><price>128.45</price><bruttoprice>149.0</bruttoprice><currency><currency_id>114</currency_id><name>EURO</name><shortname>EUR</shortname>
<exchange>1.0</exchange><isoname>EUR</isoname><isocode>978</isocode></currency><vatrate>16.0</vatrate></retailprice></article><article><article_id>960563</article_id><articleName>Update
 auf PageMaker 7.0 WIN en. von x.x</articleName><articleno>PMA00012</articleno>
<archived>0</archived><weight>1.2000000476837158</weight><deliverable>1</deliverable><reservationstock>0.0</reservationstock><articleenv><articleenv_id>3</articleenv_id><name>Windows</name><shortname>W</shortname></articleenv><articlelanguage><articlelanguage_id>3</articlelanguage_id>
<name>english/anglais</name><shortname>EN</shortname></articlelanguage><articleclass1_id>3</articleclass1_id><articleclass2_id>0</articleclass2_id><articleclass3_id>0</articleclass3_id><articleclass4_id>0</articleclass4_id><expiration>0</expiration><type><type_id>1</type_id>
<pricecalculator_id>1</pricecalculator_id><name>standard</name><deliverable>1</deliverable></type><retailprice><retailprice_id>221191</retailprice_id><article_id>960563</article_id><pricetype_id>100</pricetype_id><client_id>1</client_id><price>128.45</price><bruttoprice>149.0</bruttoprice>
<currency><currency_id>114</currency_id><name>EURO</name><shortname>EUR</shortname><exchange>1.0</exchange><isoname>EUR</isoname><isocode>978</isocode></currency><vatrate>16.0</vatrate></retailprice></article></article-list><cart><priceSubTotal>0.00</priceSubTotal><VAT>0.00</VAT>
<priceTotal>0.00</priceTotal><sumTotal>0.00</sumTotal><sumVAT>0.00</sumVAT></cart><usertracking><client_id>1</client_id><document>product_show_11567</document></usertracking></page>
 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>