XML question

Discussion in 'XML' started by wingnut144@gmail.com, Dec 29, 2007.

  1. Guest

    Currently I have a XML file in the following format:

    <?xml version="1.0" encoding="utf-8"?>
    <class>
    <sdate>9/10/07</sdate>
    <special>1,2</special>
    <inst>Max Callao</inst>
    <sdate>10/22/07</sdate>
    <special>1,2</special>
    <inst>Max Callao</inst>
    <sdate>11/26/07</sdate>
    <special>3</special>
    <inst>Steve Grosz</inst>
    <sdate>1/28/08</sdate>
    <special>1,2</special>
    <inst>Andy Gearhart</inst>
    <sdate>3/10/08</sdate>
    <special>3</special>
    <inst>Max Callao</inst>
    <sdate>4/21/08</sdate>
    <special>1,2</special>
    <inst>Max Callao</inst>
    </class>

    And that data is used in:

    <!--- Reads in SB1 xml file with dates and instructor info --->
    <cffile action="read" file="C:\Inetpub\wwwroot\SalleBoise\sb1.xml"
    variable="xmldoc">
    <cfset mydoc = XmlParse(xmldoc)>

    <cfset mydoc_stuff = XmlSearch(mydoc, "/class/sdate")>
    <cfset cl_inst= XmlSearch(mydoc, "/class/inst")>
    <cfset cl_spec=xmlSearch(mydoc, "/class/special")>

    <cfset CurrDate=dateformat(now(),"mmmm d,yyyy")>
    <!--- Starts off the inital item count --->
    <cfset icount=1>

    <div align="left" style="margin:0 auto;">
    <cfloop index="mydoc_item" from="1" to=#ArrayLen(mydoc_stuff)#>
    <cfset mydoc_data = mydoc_stuff[mydoc_item].XmlText>
    <cfset mydoc_inst= cl_inst[mydoc_item].XmlText>
    <cfset mydoc_spec=cl_spec[mydoc_item].XmlText>

    <!--- Find the number of days between the start of the session and
    the
    current date --->
    <cfset temp=datediff("d",mydoc_data,CurrDate)>
    <!--- Send end date for classes, calculated by adding 23 days to start
    of
    beginning of class --->
    <cfset temp2=dateformat(dateadd("d",23,mydoc_data),"m/d/yy")>
    <!--- Check to see if date of classes are more than 3 months out, or
    are
    more than 14 days in the past (based on class ending date), if so,
    don't
    display --->
    <cfif (datediff("m",CurrDate,mydoc_data) gte 3) or
    (datediff("d",temp2,CurrDate) gte 15)>

    <cfelse>
    <!--- If class date is more than 23 days old, mark as 'not available'
    --->
    <cfif temp gt 23>
    <img src="images/small_no_class.gif" style="padding-right:5px;
    margin-left:25px;" alt="Class Finished" title="Class Finished"
    /><cfoutput>Session #icount#: <span
    class="fake_strikethrough">#mydoc_data# -- #temp2#</span><br />
    <div align="left" style="font:Arial, Helvetica, sans-serif; font-size:
    10px;
    float:left; padding-left:62px;">Instructor: #mydoc_inst#</div><br
    clear="left">
    <div style="padding-left:62px; float:left; font-size:10px;">Class
    type:
    <cfloop list="#mydoc_spec#" delimiters="," index="i">
    <cfswitch expression="#i#">
    <cfcase value="1">
    Beginner,
    </cfcase>
    <cfcase value="2">
    Intermediate
    </cfcase>
    <cfcase value="3">
    Workshop session
    </cfcase>
    </cfswitch>
    </cfloop>
    </div><br clear="left">
    <!--- <cfif len(mydoc_spec) gte 1><div style="padding-left:10px;
    float:left;
    font-size:9px;"><strong>Workshop session</strong></div><br
    clear="left"></cfif> --->
    </cfoutput>
    <!--- If class start date is today AND and the class ending date is
    less
    than 23 days, mark as 'in session' --->
    <cfelseif (datediff("d",mydoc_data,CurrDate) gte 0) and
    (datediff("d",mydoc_data,CurrDate) lte 23)>
    <img src="images/small_in_session_class.gif" style="padding-right:
    5px;
    margin-left:25px;" alt="In session" title="In session" /
    ><cfoutput>Session

    #icount#: #mydoc_data# -- #temp2#<br />
    <div align="left" style="font:Arial, Helvetica, sans-serif; font-size:
    10px;
    float:left; padding-left:62px;">Instructor: #mydoc_inst#</div><br
    clear="left">
    <div style="padding-left:62px; float:left; font-size:10px;">Class
    type:
    <cfloop list="#mydoc_spec#" delimiters="," index="i">
    <cfswitch expression="#i#">
    <cfcase value="1">
    Beginner,
    </cfcase>
    <cfcase value="2">
    Intermediate
    </cfcase>
    <cfcase value="3">
    Workshop session
    </cfcase>
    </cfswitch>
    </cfloop>
    </div><br clear="left">
    </cfoutput>
    <cfelse>
    <!--- Otherwise mark the class as available to sign up for --->
    <!--- Display register icon if class is 45 days or less before start
    of
    class --->
    <cfif datediff("d",CurrDate, mydoc_data) lte 45>
    <div class="reg_img" style="float:right; width:65px;"><a
    href="https://www.memberst.com/Programs/Sessions.aspx?
    id=18355939-76D7-4927-B9E4-1C4EF29CDF0B"
    target="_blank"><cfoutput>
    <img src="images/small_online_register.gif" alt="Register for
    #mydoc_data#
    class" name="register" width="15" height="15" border="0"
    style="padding-left:5px;" title="Register for #mydoc_data#
    class"/></cfoutput></a></div>
    </cfif>
    <img src="images/small_yes_class.gif" style="padding-right:5px;
    margin-left:25px;" alt="Upcoming" title="Upcoming" /
    ><cfoutput>Session

    #icount#: #mydoc_data# -- #temp2#<br />
    <div align="left" style="font:Arial, Helvetica, sans-serif; font-size:
    10px;
    float:left; padding-left:62px;">Instructor: #mydoc_inst#</div><br
    clear="left">
    <div style="padding-left:62px; float:left; font-size:10px;">Class
    type:
    <cfloop list="#mydoc_spec#" delimiters="," index="i">
    <cfswitch expression="#i#">
    <cfcase value="1">
    Beginner,
    </cfcase>
    <cfcase value="2">
    Intermediate
    </cfcase>
    <cfcase value="3">
    Workshop session
    </cfcase>
    </cfswitch>
    </cfloop>
    </div><br clear="all">
    </cfoutput>
    </cfif>
    </cfif>
    <cfset icount=icount+1>
    </cfloop>

    I'd like to see about adding a <location> tag to the XML so we could
    have
    something like:

    <location>
    <location1>
    <class>
    <sdate>9/10/07</sdate>
    <special>1,2</special>
    <inst>Max Callao</inst>
    <sdate>10/22/07</sdate>
    <special>1,2</special>
    <inst>Max Callao</inst>
    <sdate>11/26/07</sdate>
    <special>3</special>
    <inst>Steve Grosz</inst>
    <sdate>1/28/08</sdate>
    <special>1,2</special>
    <inst>Andy Gearhart</inst>
    <sdate>3/10/08</sdate>
    <special>3</special>
    <inst>Max Callao</inst>
    <sdate>4/21/08</sdate>
    <special>1,2</special>
    <inst>Max Callao</inst>
    </class>
    </location1>
    <location2>
    And similar info as above
    </location2>

    But my question (after all of this) is how to change the .cfm page to
    loop
    over each location and then display the information.

    You can see the result of the page as it stands now at
    www.salleboise.com/class_schedule.cfm

    Thanks!!
     
    , Dec 29, 2007
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Bomb Diggy
    Replies:
    0
    Views:
    470
    Bomb Diggy
    Jul 28, 2004
  2. Tony Prichard
    Replies:
    0
    Views:
    791
    Tony Prichard
    Dec 12, 2003
  3. Mark Van Orman

    embedding xml in xml as non-xml :)

    Mark Van Orman, Sep 14, 2004, in forum: XML
    Replies:
    5
    Views:
    510
    Patrick TJ McPhee
    Sep 15, 2004
  4. Andy
    Replies:
    0
    Views:
    560
  5. Erik Wasser
    Replies:
    5
    Views:
    527
    Peter J. Holzer
    Mar 5, 2006
Loading...

Share This Page