Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Eric Boen 40 posts 64 karma points
    Aug 13, 2010 @ 07:26
    Eric Boen
    0

    for-each loop and NiceURL in a template

    Not sure what I'm doing wrong here. I have a for-each loop and some Choose logic in the parent template.  The parent template calls this template and passes a node.  I'm able to loop through the list of children in the param node that is being passed in and I'm able to get the children @Id and @nodeName....but all the following variations of NiceRUrl give me the following exeption.

    System.OverflowException: Value was either too large or too small for an Int32. 

    <xsl:template name="DropLineNonActive">
        <xsl:param name="parent"/>
        <ul class="sub">
        <xsl:for-each select="$parent/*">
           <li>
              
    <href="{umbraco.library:NiceUrl(@id)}"></a> <!--tried this, throws error-->

              <href="{umbraco.library:NiceUrl(./@id)}"></a<!--tried this, throws error-->

              <href="{umbraco.library:NiceUrl(current()/@id)}"></a<!--tried this, throws error-->


              <xsl:value-of select="@id"/><!--works as expected-->
              <xsl:value-of select="@nodeName"/><!--works as expected-->
           </li>
        </xsl:for-each>
        </ul>
      </xsl:template>

    Not sure why this won't work.  Thanks for any advise you may have.

    Eric

  • Chriztian Steinmeier 2800 posts 8791 karma points MVP 8x admin c-trib
    Aug 13, 2010 @ 09:20
    Chriztian Steinmeier
    0

    Hi Eric,

    Are you on 4.5.1 or 4.0?

    For the record: The first is the one that you should use (the other two does the exact same thing with bigger byte-counts :-)

    If you're on 4.5.1 (which I suspect), you should add the [@isDoc] predicate to the $parent/* select, like this:

    <xsl:for-each select="$parent/*[@isDoc]">

    because the star will select all the properties as well...

    Why does the value-of statements "work"?

    - Because they will print the @id and @nodeName from the document node, and nothing from the properties - the properties on the other hand will fail in the NiceUrl() call because they have no @id attribute...

    /Chriztian

     

  • Eric Boen 40 posts 64 karma points
    Aug 13, 2010 @ 15:43
    Eric Boen
    0

    @Chriztian - Yes I am using 4.5.1.  Thank you for the explanation, that does work.  I didn't realize that [@isDoc] predicate included the properties.  Great information!

    Thanks

    Eric

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies