<?xml version="1.0" encoding="UTF-8" ?>
<klip>
   	<identity>
      		<title>
         		API: Engines.Data.applyStyle
      		</title>
      		<version>
         		1.0
      		</version>
      		<description>
			A very simple example using Engines.Data.applyStyle()
      		</description>
   	</identity>
   	<locations>
      		<defaultlink>
         		http://www.klipfolio.com/
      		</defaultlink>
      		<contentsource>
      			<![CDATA[
			<item>
				<apples>apple1</apples>
				<bananas>banana1</bananas>
				<oranges>orange1</oranges>
			</item>
			<item>
				<apples>apple2</apples>
				<bananas>banana2</bananas>
				<oranges>orange2</oranges>
			</item>
			<item>
				<apples>apple3</apples>
				<bananas>banana3</bananas>
				<oranges>orange3</oranges>
			</item>
			]]>
      		</contentsource>
	      <icon>
		 http://www.klipfolio.com/static/klips/klipfolio/sample_icon.png
	      </icon>
	      <banner>
		 http://www.klipfolio.com/static/klips/klipfolio/sample_banner.png   
	      </banner>
      		<kliplocation>
			http://www.serence.com/developer/api/klips/api_engines_data_applystyle.klip
      		</kliplocation>
   	</locations>
   	<content>
		<datastyle>
			item {
				type: item;
				definition: all;
			}
			apples {
				itemcol: 1;
			}
			oranges {
				itemcol: 2;
			}
			bananas {
				itemcol: 3;
			}
		</datastyle>
   	</content>
	<style>
		display {
			type: item;
		}
		description {
			itemcol: 1;
		}
	</style>
	<klipscript>
		<![CDATA[

		function onRefresh()
		{
			var dataArray = Engines.Data.applyStyle(Prefs.contentsource, Prefs.getContent("datastyle"));
			// or,
			// var dataArray = Engines.Data.applyStyle(Prefs.contentsource, 
			//		"item{ type: item;} apples { itemcol: 1;} oranges { itemcol: 2; } bananas { itemcol: 3;}");
			
			if(!dataArray)
			{
				// If the data processing fails for some reason, return false to dim the Klip
				return false;
			}
			// dataArray is structured in the order that the items appear in the source, 
			// not in the order they appear in the stylesheet:
			// [i][0] or [i].apples - apples
			// [i][1] or [i].bananas - bananas
			// [i][2] or [i].oranges - oranges
			// See the <datastyle> section in <content> above.

			var i;
			for(i = 0; i < dataArray.length; i++) {
				trace( "dataArray[" + i + "].apples = " + dataArray[i].apples + "\r\n" );
			}

			trace( "\r\n\r\n" );
			for(i = 0; i < dataArray.length; i++) {
				trace( "dataArray[" + i + "][1] = " + dataArray[i][1] + "\r\n" );
			}

			trace( "\r\n\r\n" );

			for(i = 0; i < dataArray.length; i++) {
				trace( "dataArray[" + i + "].oranges = " + dataArray[i].oranges + "\r\n" );
			}

			trace( "\r\n\r\n" );

			var xml = "<xml><display><description>" +
				"(See Debug Window for output)" +
				"</description></display></xml>";

			return Engines.Data.process( xml );

		}

		]]>
	</klipscript>
</klip>