xsl-list
[Top] [All Lists]

Re: get back from nodeset to root ?

2002-12-17 03:05:52
Do you know why it is so? In your variable $alllanguage (created from a RTF via node set function) you store a new document. With for-each select="$alllanguage" you switch the context to this new document and <xsl:variable name="articelIds" select="/page/article-list/article"/> is evaluated in this document context, so it is searched for /page/article-list/article and of course nothing is found.
Outside of the for-each the context is still in the original document.

Joerg

Heiko Specht wrote:
Hello Joerg,

thanks, that helped pretty very much
some things seems so strange but are really easy.

regards

Heiko

Monday, December 16, 2002, 6:46:26 PM, you wrote:

JH> Hello Heiko,

JH> Heiko Specht wrote:

Hello all Mail list users,

I have a small (no its large) problem from getting results from a
nodeset and use them in them in the xml of the document root (or what
it is called).

I have created an variable which i called "astring" giving me (i do
there a lot of string commands) what i
wanted !!


<!-- this works perfect for me -->
<xsl:variable name="alllanguage" select="xalan:nodeset($astring)/all/artname"/>
<select name="A">
 <xsl:for-each select="$alllanguage">
    <xsl:if test="generate-id(.) =  generate-id($alllanguage[.=current()])">
            <option><xsl:value-of select="normalize-space()" /></option>
    </xsl:if>
 </xsl:for-each>
</select><br/><br/>
<!-- end of great work -->

What i want is to check if in my xml in the path
/page/article-list/article

<xsl:for-each select="$alllanguage">
<xsl:if test="generate-id(.) =  generate-id($alllanguage[.=current()])">
       <!-- works -->
       <xsl:value-of select="normalize-space()" />
       <xsl:variable name="thisname" select="normalize-space()" />
       <!-- end of works -->

       <!-- i want back into my xml document but no chance -->
       <xsl:variable name="articelIds" select="/page/article-list/article"/>


JH> you can simply move the variable declaration of articleIds outside of JH> this for-each.


       <xsl:for-each select="$articelIds">
<!-- there is an element in this path called articleName --> <xsl:if test="contains(articleName, $thisname)">
                  <xsl:value-of select="article_id"/><br/>
          </xsl:if>
</xsl:for-each>


JH> This can be simplified to

JH> <xsl:for-each select="$articleIds[contains(acrticleName, $thisname)]">
JH>    <xsl:value-of select="article_id"/><br/>
JH> </xsl:for-each>

JH> Regards,

JH> Joerg


 </xsl:if>
</xsl:for-each>

I have search for so long, but couldn'd find the answer.
a little help would be great. TIA


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



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