XslGenerator:EventSessionSpeaker
Overview
This template shows how to have a multi-node XML source using the DynamicXmlBuilder. In this example, the top node is <event> which has two subnodes: <Session> and <Track>. The <Session> node has a subnode for <Speaker>.
The display shows the Event, with the Session(s) and Track(s) underneath. Within each session, we output the speaker(s) at that session.
Content Detail Definition
Definition and XSL
Important! The SQL commands on this page can be improved with SQL 2005's FOR XML PATH mode syntax. This feature is available in the 2007.01 build and later. Please see XWeb:ExecuteMethod_Case_Study1 for details on how to work with this new feature. These samples are still valid, but it is recommended that you use the newer syntax if your netFORUM site is on 2007.01 or later. Both DynamicXmlBuilder and XslGenerator work with this newer SQL syntax.
{BeginXmlBuilderXml}
<EventList>
  <Event>
    <sql>
	select evt_title, evt_key
	from ev_event (nolock)
	where getdate() between evt_post_to_web_date  and evt_remove_from_web_date
	and evt_delete_flag = 0
	order by evt_start_date desc
    </sql>
    <Session>
      <sql>
	select ses_title, ses_key, ses_evt_key
	from ev_session (nolock)
	where ses_evt_key = {evt_key}
      </sql>
      <Speaker>
        <sql>
	select 	cst_sort_name_dn
 
	from 	ev_event_faculty (nolock) 
 
	        JOIN ev_event_speaker (nolock) 
	                ON fac_key=spk_fac_key
		JOIN co_customer (nolock) 
			ON fac_cst_key=cst_key
		JOIN ev_session (nolock) 
			ON fac_ses_key=ses_key
	where
		fac_delete_flag=0
		and fac_ses_key={ses_key}
	order by
	               cst_sort_name_dn
 
        </sql>
      </Speaker>
    </Session>
    <Track>
      <sql>
        select
          trk_name
        From 
          ev_track (nolock)
        where 
          trk_delete_flag=0 AND
          trk_evt_key={evt_key}
      </sql>
    </Track>
  </Event>
</EventList>
{EndXmlBuilderXml}
 
 
{BeginXsl}
<?xml   version="1.0"   encoding="UTF-8"   ?>
<xsl:stylesheet   version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template   match="EventList">
		<DIV>
			<xsl:apply-templates   select="Event"   />
		</DIV>
	</xsl:template>
 
	<xsl:template   match="Event">
		<DIV>
			<span   class="tinyTXT">
				<strong>
					<xsl:value-of   select="evt_title"   />
				</strong>
			</span>
 
                                                <p   />
 
			<span   class="tinyTXT"   style="PADDING-LEFT: 10px; WIDTH: 98%; PADDING-TOP: 4px">
				<i>Sessions</i>
			</span>
 
			<xsl:apply-templates   select="Session"   />
 
                                                <p   />
 
			<span   class="tinyTXT"    style="PADDING-LEFT: 10px; WIDTH: 98%; PADDING-TOP: 4px">
				<i>Tracks</i>
			</span>
 
			<xsl:apply-templates   select="Track"   />
			<p   />
		</DIV>
	</xsl:template>
 
	<xsl:template   match="Session">
		<DIV>
			<span   class="tinyTXT"   style="PADDING-LEFT: 20px; WIDTH: 98%; PADDING-TOP: 4px"><xsl:value-of   select="ses_title"   /></span>
		</DIV>
 
			<span   class="tinyTXT"   style="PADDING-LEFT: 30px; WIDTH: 98%; PADDING-TOP: 4px"><i>Speakers</i></span>
                                <xsl:apply-templates   select="Speaker"   />
 
	</xsl:template>
 
	<xsl:template   match="Speaker">
		<DIV>
			<span   class="tinyTXT"   style="PADDING-LEFT: 40px; WIDTH: 98%; PADDING-TOP: 4px"><xsl:value-of   select="cst_sort_name_dn"   /></span>
		</DIV>
	</xsl:template>
 
	<xsl:template   match="Track">
		<DIV>
			<span   class="tinyTXT"   style="PADDING-LEFT: 20px; WIDTH: 98%; PADDING-TOP: 4px"><xsl:value-of   select="trk_name"   /></span>
		</DIV>
	</xsl:template>
 
</xsl:stylesheet>
{EndXsl}
                                                    XML
The code above will produce XML of this format: This SQL will produce the following XML:
<EventList>
<Event>
<evt_title>2008 ASTC Annual Technology Conference</evt_title>
<evt_key>3790A7C0-823C-4F09-89CE-109DF2C58282</evt_key>
<Session>
<ses_title>Awards Dinner</ses_title>
<ses_key>B601CE5A-2D6B-4282-ADAC-2D591367437D</ses_key>
<ses_evt_key>3790A7C0-823C-4F09-89CE-109DF2C58282</ses_evt_key>
</Session>
<Session>
<ses_title>Technology and the Association</ses_title>
<ses_key>97ADA72D-D81C-4947-B049-C3C443BFD338</ses_key>
<ses_evt_key>3790A7C0-823C-4F09-89CE-109DF2C58282</ses_evt_key>
<Speaker>
<cst_sort_name_dn>Harrell Irene</cst_sort_name_dn>
</Speaker>
<Speaker>
<cst_sort_name_dn>Thurston Scott</cst_sort_name_dn>
</Speaker>
</Session>
<Track>
<trk_name>Exam Track</trk_name>
</Track>
<Track>
<trk_name>Certification Track</trk_name>
</Track>
</Event>
<Event>
<evt_title>Partnership Conference</evt_title>
<evt_key>C677D959-3DA6-471F-BAB8-376CA55E4484</evt_key>
<Session>
<ses_title>Introduction</ses_title>
<ses_key>E11E16AF-FF02-451A-BD46-019DD917E363</ses_key>
<ses_evt_key>C677D959-3DA6-471F-BAB8-376CA55E4484</ses_evt_key>
<Speaker>
<cst_sort_name_dn>Miller Robert</cst_sort_name_dn>
</Speaker>
</Session>
</Event>
</EventList>