Hello all,
if have found a solution of my problem
in my own script.
the solution was to create a new variable (see the commend) and
than to generate-id of the variable node-set
how easy it could be.
but another question: where to find a good tutorial about
node, nodeset and this parent:: self:: ancestor:: and so on
i need to understand this stuff.
a long time ago there was a good xsl tutorial downloadable at
mullberry.
TIA
Heiko
<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>
<!-- at this point i need to display each
language only once so i declare a variable of all languages and create a
nodesset -->
<xsl:variable name="langall">
<xsl:for-each
select="$articles[contains(articleName, $thisname)]">
<xsl:if
test="contains(articleenv/name,$envname)">
<langs><xsl:text>,"</xsl:text><xsl:value-of
select="articlelanguage/name"/><xsl:text>","</xsl:text><xsl:value-of
select="articlelanguage/shortname"/><xsl:text>"</xsl:text></langs>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:for-each
select="xalan:nodeset($langall)/langs">
<xsl:if test="generate-id(.) =
generate-id(xalan:nodeset($langall)/langs[.=current()])">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
<!-- end language display -->
<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>
Thursday, December 19, 2002, 5:02:15 PM, you wrote:
HS> Hello XSL-List Members,
HS> while you all discuss strange (for me) things about verse extractions
HS> i hope my question is trivial for you.
HS> what i want to do is a javascript extract like this:
HS> ------------------------------------------
HS> var listB = new DynamicOptionList("B","A");
HS> listB.addOptions("PM2Q 6","Mac","Mac");
HS> listB.addOptions("PageMaker 7.0","Windows","Windows","Mac","Mac");
HS> listB.setDefaultOption("PM2Q 6","Mac");
HS> listB.setDefaultOption("PageMaker 7.0","Mac");
HS> ------------------------------------------
HS> done with this xsl (works):
HS> ------------------------------------------
HS> <xsl:text>var listB = new DynamicOptionList("B","A");</xsl:text>
HS> <xsl:for-each select="xalan:nodeset($smallversion)/vers">
HS> <xsl:text>listB.addOptions("</xsl:text>
HS> <xsl:value-of select="." /><xsl:text>"</xsl:text>
HS> <xsl:variable name="thisname" select="."/>
HS> <xsl:variable name="systemsForEach">
HS> <xsl:for-each select="$articles[contains(articleName,
$thisname)]">
HS> <sfffe><xsl:text>,"</xsl:text><xsl:value-of
select="articleenv/name"/>","<xsl:value-of
select="articleenv/name"/><xsl:text>"</xsl:text></sfffe>
HS> </xsl:for-each>
HS> </xsl:variable>
HS> <xsl:variable name="newnode"
select="xalan:nodeset($systemsForEach)/sfffe"/>
HS> <xsl:for-each select="$newnode">
HS> <xsl:if test="generate-id(.) =
generate-id($newnode[.=current()])">
HS> <xsl:value-of select="."/>
HS> </xsl:if>
HS> </xsl:for-each>
HS> <xsl:text>);</xsl:text>
HS> </xsl:for-each>
HS> <xsl:for-each select="xalan:nodeset($smallversion)/vers">
HS> <xsl:text>listB.setDefaultOption("</xsl:text>
HS> <xsl:value-of select="." />
HS> <xsl:text>",</xsl:text>
HS> <xsl:for-each select="xalan:nodeset($smallsys)/sys">
HS> <xsl:if test="position()='1'">
HS> <xsl:text>"</xsl:text><xsl:value-of
select="."/><xsl:text>"</xsl:text>
HS> </xsl:if>
HS> </xsl:for-each>
HS> <xsl:text>);</xsl:text>
HS> </xsl:for-each>
HS> ----------------------------------------
HS> but the next part drives me crazy.
HS> the output should be like this without doubles of languages:
HS> ----------------------------------------
HS> var listC = new DynamicOptionList("C","A","B");
HS> listC.addOptions("PM2Q 6|Mac","english/anglais","EN");
HS> listC.addOptions("PageMaker
7.0|Windows","german/allemand","DE","german/allemand","DE","english/anglais","EN");
HS> listC.addOptions("PageMaker
7.0|Mac","german/allemand","DE","german/allemand","DE");
HS> ^firstselect ^secondselect ^option
^value
HS> -----------------------------------------
HS> what should the script do: when someone choose an option in a select
HS> box the othe box should be filled automatically with new options
HS> without reloading. (the jscript works fine allready)
HS> but as you can see, the languages are displayed twice.
HS> here is the piece of xsl that makes the stuff:
HS> i have marked the criteric point with an command.
HS> any one got an idea ?
HS> at the bottom you can find the the xml i work with !
HS> ------------------------------------------
HS> <xsl:text>var listC = new DynamicOptionList("C","A","B");</xsl:text>
HS> <xsl:for-each select="xalan:nodeset($smallversion)/vers">
HS> <xsl:variable name="thisname" select="."/>
HS> <xsl:variable name="systemsForEach">
HS> <xsl:for-each select="$articles[contains(articleName,
$thisname)]">
HS> <xsl:variable name="envname"
select="articleenv/name"/>
HS> <sofar>
HS> <xsl:text>listC.addOptions(</xsl:text>
HS> <xsl:text>"</xsl:text>
HS> <xsl:value-of
select="$thisname"/>|<xsl:value-of select="$envname"/>
HS> <xsl:text>"</xsl:text>
HS> <xsl:for-each
select="$articles[contains(articleName, $thisname)]">
HS> <xsl:if
test="contains(articleenv/name,$envname)">
HS> <!-- at this point i need
to display each language only once -->
HS>
<xsl:text>,"</xsl:text><xsl:value-of
select="articlelanguage/name"/><xsl:text>","</xsl:text><xsl:value-of
HS> select="articlelanguage/shortname"/><xsl:text>"</xsl:text>
HS> <!-- end language display
-->
HS> </xsl:if>
HS> </xsl:for-each>
HS> <xsl:text>);</xsl:text>
HS> </sofar>
HS> </xsl:for-each>
HS> </xsl:variable>
HS> <xsl:variable name="newnode"
select="xalan:nodeset($systemsForEach)/sofar"/>
HS> <xsl:for-each select="$newnode">
HS> <xsl:if test="generate-id(.) =
generate-id($newnode[.=current()])">
HS> <xsl:value-of select="."/>
HS> </xsl:if>
HS> </xsl:for-each>
HS> </xsl:for-each>
--
Best regards,
Heiko mailto:heiko(_at_)specht(_dot_)com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list