Copied to clipboard

Flag this post as spam?

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


  • Darryl Godden 145 posts 197 karma points
    Feb 11, 2010 @ 10:48
    Darryl Godden
    0

    Nested XSL for-each

    Hi all,

    I'm trying to use a nested for-each, basically I need the 'BundleTitle' of each item within our umbraco.config and then for each of thise titles I need the 'EventTitle' which exists for each 'BundleTitle', but I'm not having much success, can you help? This is what I have so far:

    <xsl:for-each select="$currentPage/ancestor-or-self::root/node [@nodeTypeAlias='WhatsOn']/node">

    <xsl:variable name="varBundleName" select="data [@alias = 'BundleTitle']"/>

    <li><xsl:value-of select="data [@alias = 'BundleTitle']"/></li>

    <xsl:for-each select="$currentPage/ancestor-or-self::root/node/node [@alias=$varBundleName]/node">

    <xsl:value-of select="data [@alias = 'EventTitle']"/>

    </xsl:for-each>

    </xsl:for-each>

    Thanks.

  • Sebastiaan Janssen 4899 posts 14655 karma points MVP admin hq
    Feb 11, 2010 @ 10:59
    Sebastiaan Janssen
    0

    What is the result you're getting right now?

    In the second for-each you have a duplicate "/node", shouldn't that be just one of them??

    ancestor-or-self::root/node/node 

    By the way, instead of "::root" you might want to use "::node", in case you're ever going to do a multisite / multiple language versions for this site.. 

  • Kim Andersen 1447 posts 2196 karma points MVP
    Feb 11, 2010 @ 11:02
    Kim Andersen
    0

    Hi Darryl

    You could try to make some kind of debugging in your for-each. First of all try to check if the correct content is in your $varBuncleName like this:

    <textarea>
        <xsl:copy-of select="$varBundleName" />
    </textarea>

    If this one i empty, you should maybe try to create the variable like this:

    <xsl:variable name="varBundleName" select="./data [@alias = 'BundleTitle']"/>

    If your variable contains the right content, just say so, and I'll have another look at it.

    /Kim A

  • Darryl Godden 145 posts 197 karma points
    Feb 11, 2010 @ 11:50
    Darryl Godden
    0

    The variable contains the right name, I swapped the output for the variable name and it still works:

    <ul>
    <xsl:for-each select="$currentPage/ancestor-or-self::root/node [@nodeTypeAlias='WhatsOn']/node">
        <xsl:variable name="varBundleName" select="data [@alias = 'BundleTitle']"/>
        <li><xsl:value-of select="$varBundleName"/></li>
    
        <xsl:for-each select="$currentPage/ancestor-or-self::node/node [@alias=$varBundleName]/node">
            <div><xsl:value-of select="data [@alias = 'EventTitle']"/></div>
        </xsl:for-each>
    </xsl:for-each>
    

    </ul>


    Clearly I'm hitting this in a recursive DataTable fashion, my weakness is XSL, here is some of the umbraco.config:

    <!DOCTYPE umbraco[ <!ELEMENT nodes ANY>  <!ELEMENT node ANY>  <!ATTLIST node id ID #REQUIRED> ]>
    <root id="-1">
      <node id="1133" version="b5fede07-c322-42df-8211-94e659dfa070" parentID="-1" level="1" writerID="0" creatorID="0" nodeType="1132" template="1079" sortOrder="0" createDate="2010-02-09T16:58:05" updateDate="2010-02-09T16:58:11" nodeName="Home" urlName="home" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="HomePage" path="-1,1133" />
      <node id="1106" version="3af5aaa6-895c-4c42-b837-7a2acee62093" parentID="-1" level="1" writerID="0" creatorID="0" nodeType="1105" template="0" sortOrder="1" createDate="2010-01-20T11:12:18" updateDate="2010-01-20T11:12:31" nodeName="What's On" urlName="what's-on" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="WhatsOn" path="-1,1106">
        <node id="1137" version="ee2732d9-2ea0-4a50-9281-263e5a66fd6d" parentID="1106" level="2" writerID="0" creatorID="0" nodeType="1125" template="0" sortOrder="2" createDate="2010-02-10T16:03:54" updateDate="2010-02-10T16:04:27" nodeName="Johann Strauss Gala" urlName="johann-strauss-gala" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="Bundle" path="-1,1106,1137">
          <data alias="BundleTitle">Johann Strauss Gala</data>
          <data alias="BundleDescription"><![CDATA[
    <p
    style="color: #ffffff; font-size: 12px; padding-bottom: 0px; padding-left: 10px; padding-right: 10px; padding-top: 0px; text-align: center">
    <em>Waltz back in time to the glittering ballrooms of
    19th&nbsp;Century Vienna with a magical mix of music, song and
    dance from the Strauss Family and friends.<br />
    <br />
    <strong>THE BLUE DANUBE
    WALTZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
     TRITSCH TRATSCH POLKA&nbsp;&nbsp; RADETZKY MARCH&nbsp;&nbsp;
    PLAPPERMAULCHEN POLKA&nbsp; PERPETUUM
    MOBILE&nbsp;&nbsp;&nbsp;&nbsp; WIENER BLUT&nbsp;&nbsp; WINE, WOMEN
    AND SONG&nbsp;&nbsp; DIE FLEDERMAUS OVERTURE&nbsp;&nbsp;&nbsp;
    <em></em>CHAMPAGNE POLKA&nbsp;&nbsp; ROSES IN TYROL&nbsp;&nbsp;
    PIZZICATO POLKA&nbsp;&nbsp;&nbsp;<br />
     THE LAUGHING SONG&nbsp;<em>FROM DIE
    FLEDERMAUS&nbsp;&nbsp;&nbsp;<br />
    </em> THUNDER AND LIGHTNING POLKA<br />
    </strong><br />
    <strong>JOHANN STRAUSS ORCHESTRA</strong><br />
    directed from the violin in traditional Viennese&nbsp;<br />
     by&nbsp;<br />
     <strong>DAVID JURITZ</strong><br />
    with the beautiful young soprano<br />
    <strong>CAROLINE MACPHIE<br />
    </strong><br />
    <strong>JOHANN STRAUSS DANCERS</strong><br />
    <em>in exquisite costumes of the period<br />
    <br />
    </em><em>Choreography &amp; Staging - Christopher
    Hampso</em></em></p>
    
    <br />
    <br />
    ]]></data>
          <data alias="BundleMedia" />
          <data alias="BundleFeature">0</data>
          <node id="1138" version="b977f67c-772e-41fb-8027-f67401c0e933" parentID="1137" level="3" writerID="0" creatorID="0" nodeType="1126" template="1079" sortOrder="1" createDate="2010-02-10T16:05:21" updateDate="2010-02-10T16:14:20" nodeName="Barbican Centre" urlName="barbican-centre" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="Event" path="-1,1106,1137,1138">
            <node id="1139" version="6724c66b-4027-4ce9-99c3-4956b76093d4" parentID="1138" level="4" writerID="0" creatorID="0" nodeType="1127" template="0" sortOrder="1" createDate="2010-02-10T16:06:29" updateDate="2010-02-10T16:08:04" nodeName="Afternoon Performance" urlName="afternoon-performance" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="Performance" path="-1,1106,1137,1138,1139">
              <data alias="PerformanceVenue"><![CDATA[]]></data>
              <data alias="PerformanceFeature">0</data>
              <data alias="PerformanceDescription"><![CDATA[]]></data>
              <data alias="PerformanceDateTime">2009-12-31T15:00:00</data>
              <data alias="PerformanceBookingURL"><![CDATA[]]></data>
              <data alias="PerformanceBoxOffice" />
              <data alias="PerformanceTicketPrices"><![CDATA[]]></data>
            </node>
            <data alias="EventTitle">Barbican Centre - London</data>
            <data alias="EventDescription"><![CDATA[]]></data>
            <data alias="EventMedia" />
            <data alias="EventCategory"><![CDATA[Opera]]></data>
            <data alias="EventFeature">0</data>
          </node>
          <node id="1140" version="46fcaf52-2f00-4a52-95d8-9b5c560d9d6e" parentID="1137" level="3" writerID="0" creatorID="0" nodeType="1126" template="1079" sortOrder="2" createDate="2010-02-10T16:09:42" updateDate="2010-02-10T16:12:11" nodeName="Symphony Hall - Birmingham" urlName="symphony-hall---birmingham" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="Event" path="-1,1106,1137,1140">
            <data alias="EventTitle">Symphony Hall - Birmingham</data>
            <data alias="EventDescription"><![CDATA[]]></data>
            <data alias="EventMedia" />
            <data alias="EventCategory"><![CDATA[Ballet]]></data>
            <data alias="EventFeature">0</data>
            <node id="1141" version="5a61d68f-50d6-44e1-9920-cd6a07fc618c" parentID="1140" level="4" writerID="0" creatorID="0" nodeType="1127" template="0" sortOrder="1" createDate="2010-02-10T16:12:25" updateDate="2010-02-10T16:12:53" nodeName="Afternoon Performance" urlName="afternoon-performance" writerName="Administrator" creatorName="Administrator" nodeTypeAlias="Performance" path="-1,1106,1137,1140,1141">
              <data alias="PerformanceVenue"><![CDATA[]]></data>
              <data alias="PerformanceFeature">0</data>
              <data alias="PerformanceDescription"><![CDATA[]]></data>
              <data alias="PerformanceDateTime">2010-01-01T15:00:00</data>
              <data alias="PerformanceBookingURL"><![CDATA[]]></data>
              <data alias="PerformanceBoxOffice" />
              <data alias="PerformanceTicketPrices"><![CDATA[]]></data>
            </node>
          </node>
  • Darryl Godden 145 posts 197 karma points
    Feb 11, 2010 @ 12:55
    Darryl Godden
    0

    Hmm I just took the following XSL:

    <ul>
    <xsl:for-each select="$currentPage/ancestor-or-self::root/node/node [@nodeName='Johann Strauss Gala']/node">
       <li><xsl:value-of select="data [@alias = 'EventTitle']"/></li>
    </xsl:for-each>
    </ul>

    And put it into a separate XSLT File and it does pull back the event titles for that event...

    I think it should work but it doesn't, any better ideas?

  • Kim Andersen 1447 posts 2196 karma points MVP
    Feb 11, 2010 @ 13:07
    Kim Andersen
    0

    Hmm...

    Could you try this one out:

    <ul>
    <xsl:for-each
    select="$currentPage/ancestor-or-self::node [@level='1']//node [@nodeName='Johann Strauss Gala']/node">
    <li>
    <xsl:value-of select="./data[@alias = 'EventTitle']"/></li>
    </xsl:for-each>
    </ul>

    This should give you the node homepage-node of the $currentPage and then check in the tree for a node with a nodeName of Johann Strauss Gala. And the take the childnodes of the selected node.

    Hope this helps.

    /Kim A

  • Darryl Godden 145 posts 197 karma points
    Feb 11, 2010 @ 14:01
    Darryl Godden
    0

    Genius - thank you sir!

  • Kim Andersen 1447 posts 2196 karma points MVP
    Feb 11, 2010 @ 14:16
    Kim Andersen
    0

    You are very welcome.

    /Kim A

  • 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