MIME-Version: 1.0
Content-Type: multipart/related; boundary="----=_NextPart_01C8540B.8BA97090"

This document is a Single File Web Page, also known as a Web Archive file.  If you are seeing this message, your browser or editor doesn't support Web Archive files.  Please download a browser that supports Web Archive, such as Windows® Internet Explorer®.

------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="windows-1252"

<html xmlns:v=3D"urn:schemas-microsoft-com:vml"
xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:w=3D"urn:schemas-microsoft-com:office:word"
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml"
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-125=
2">
<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 12">
<meta name=3DOriginator content=3D"Microsoft Word 12">
<link rel=3DFile-List href=3D"DataConstructorTutorial_files/filelist.xml">
<title>Getting Started with DataConstructor</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Subject>A Tutorial for DataConstructor</o:Subject>
  <o:Author>Harbinger Software Corporation</o:Author>
  <o:Description>Copyright © 2007 Harbinger Software Corporation.  All righ=
ts reserved.&#10;Trademark 2007 Hexagon Software LLC. All rights reserved.<=
/o:Description>
  <o:LastAuthor> </o:LastAuthor>
  <o:Revision>2</o:Revision>
  <o:TotalTime>452</o:TotalTime>
  <o:Created>2008-01-11T12:36:00Z</o:Created>
  <o:LastSaved>2008-01-11T12:36:00Z</o:LastSaved>
  <o:Pages>3</o:Pages>
  <o:Words>7753</o:Words>
  <o:Characters>44198</o:Characters>
  <o:Company> </o:Company>
  <o:Lines>368</o:Lines>
  <o:Paragraphs>103</o:Paragraphs>
  <o:CharactersWithSpaces>51848</o:CharactersWithSpaces>
  <o:Version>12.00</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:RelyOnVML/>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
<link rel=3DdataStoreItem href=3D"DataConstructorTutorial_files/item0001.xm=
l"
target=3D"DataConstructorTutorial_files/props0002.xml">
<link rel=3DthemeData href=3D"DataConstructorTutorial_files/themedata.thmx">
<link rel=3DcolorSchemeMapping
href=3D"DataConstructorTutorial_files/colorschememapping.xml">
<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:TrackMoves>false</w:TrackMoves>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:DontVertAlignCellWithSp/>
   <w:DontBreakConstrainedForcedTables/>
   <w:DontVertAlignInTxbx/>
   <w:Word11KerningPairs/>
   <w:CachedColBalance/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val=3D"Cambria Math"/>
   <m:brkBin m:val=3D"before"/>
   <m:brkBinSub m:val=3D"--"/>
   <m:smallFrac m:val=3D"off"/>
   <m:dispDef/>
   <m:lMargin m:val=3D"0"/>
   <m:rMargin m:val=3D"0"/>
   <m:defJc m:val=3D"centerGroup"/>
   <m:wrapIndent m:val=3D"1440"/>
   <m:intLim m:val=3D"subSup"/>
   <m:naryLim m:val=3D"undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true"
  DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99"
  LatentStyleCount=3D"267">
  <w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 7"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 8"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 9"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/>
  <w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" Name=3D=
"caption"/>
  <w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/>
  <w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default Paragraph=
 Font"/>
  <w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/>
  <w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/>
  <w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/>
  <w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Table Grid"/>
  <w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Placeho=
lder Text"/>
  <w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/>
  <w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" Name=3D"Revisio=
n"/>
  <w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/>
  <w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/>
  <w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/>
  <w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/>
  <w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/>
  <w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Reference"/>
  <w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false"
   UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/>
  <w:LsdException Locked=3D"false" Priority=3D"37" Name=3D"Bibliography"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" Name=3D=
"TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
<link rel=3Dplchdr href=3D"DataConstructorTutorial_files/plchdr.htm">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Cambria;
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073741899 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:1627400839 -2147483648 8 0 66047 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
h1
	{mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Heading 1 Char";
	mso-style-next:Normal;
	margin-top:24.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan lines-together;
	page-break-after:avoid;
	mso-outline-level:1;
	font-size:14.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#365F91;
	mso-themecolor:accent1;
	mso-themeshade:191;
	mso-font-kerning:0pt;}
h2
	{mso-style-priority:9;
	mso-style-qformat:yes;
	mso-style-link:"Heading 2 Char";
	mso-style-next:Normal;
	margin-top:10.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan lines-together;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:13.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;}
h3
	{mso-style-priority:9;
	mso-style-qformat:yes;
	mso-style-link:"Heading 3 Char";
	mso-style-next:Normal;
	margin-top:10.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan lines-together;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:11.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;}
p.MsoToc1, li.MsoToc1, div.MsoToc1
	{mso-style-update:auto;
	mso-style-priority:39;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:5.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoToc2, li.MsoToc2, div.MsoToc2
	{mso-style-update:auto;
	mso-style-priority:39;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:5.0pt;
	margin-left:11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Comment Text Char";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Header Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 3.25in right 6.5in;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
	{mso-style-priority:99;
	mso-style-link:"Footer Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 3.25in right 6.5in;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoCaption, li.MsoCaption, div.MsoCaption
	{mso-style-priority:35;
	mso-style-qformat:yes;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	font-size:9.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;
	font-weight:bold;}
span.MsoCommentReference
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
	{mso-style-priority:10;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Title Char";
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:15.0pt;
	margin-left:0in;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-bottom-alt:solid #4F81BD 1.0pt;
	mso-border-bottom-themecolor:accent1;
	padding:0in;
	mso-padding-alt:0in 0in 4.0pt 0in;
	font-size:26.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#17365D;
	mso-themecolor:text2;
	mso-themeshade:191;
	letter-spacing:.25pt;
	mso-font-kerning:14.0pt;}
p.MsoTitleCxSpFirst, li.MsoTitleCxSpFirst, div.MsoTitleCxSpFirst
	{mso-style-priority:10;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Title Char";
	mso-style-next:Normal;
	mso-style-type:export-only;
	margin:0in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-bottom-alt:solid #4F81BD 1.0pt;
	mso-border-bottom-themecolor:accent1;
	padding:0in;
	mso-padding-alt:0in 0in 4.0pt 0in;
	font-size:26.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#17365D;
	mso-themecolor:text2;
	mso-themeshade:191;
	letter-spacing:.25pt;
	mso-font-kerning:14.0pt;}
p.MsoTitleCxSpMiddle, li.MsoTitleCxSpMiddle, div.MsoTitleCxSpMiddle
	{mso-style-priority:10;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Title Char";
	mso-style-next:Normal;
	mso-style-type:export-only;
	margin:0in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-bottom-alt:solid #4F81BD 1.0pt;
	mso-border-bottom-themecolor:accent1;
	padding:0in;
	mso-padding-alt:0in 0in 4.0pt 0in;
	font-size:26.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#17365D;
	mso-themecolor:text2;
	mso-themeshade:191;
	letter-spacing:.25pt;
	mso-font-kerning:14.0pt;}
p.MsoTitleCxSpLast, li.MsoTitleCxSpLast, div.MsoTitleCxSpLast
	{mso-style-priority:10;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Title Char";
	mso-style-next:Normal;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:15.0pt;
	margin-left:0in;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-bottom-alt:solid #4F81BD 1.0pt;
	mso-border-bottom-themecolor:accent1;
	padding:0in;
	mso-padding-alt:0in 0in 4.0pt 0in;
	font-size:26.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#17365D;
	mso-themecolor:text2;
	mso-themeshade:191;
	letter-spacing:.25pt;
	mso-font-kerning:14.0pt;}
p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
	{mso-style-priority:11;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Subtitle Char";
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;
	letter-spacing:.75pt;
	font-style:italic;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	mso-themecolor:hyperlink;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Document Map Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"Comment Text";
	mso-style-link:"Comment Subject Char";
	mso-style-next:"Comment Text";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	font-weight:bold;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"Balloon Text Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
span.MsoPlaceholderText
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	color:gray;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:.5in;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParag=
raphCxSpFirst
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListPar=
agraphCxSpMiddle
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagra=
phCxSpLast
	{mso-style-priority:34;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:.5in;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.MsoQuote, li.MsoQuote, div.MsoQuote
	{mso-style-priority:29;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Quote Char";
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	color:black;
	mso-themecolor:text1;
	font-style:italic;}
p.MsoIntenseQuote, li.MsoIntenseQuote, div.MsoIntenseQuote
	{mso-style-priority:30;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Intense Quote Char";
	mso-style-next:Normal;
	margin-top:10.0pt;
	margin-right:.65in;
	margin-bottom:14.0pt;
	margin-left:.65in;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-bottom-alt:solid #4F81BD .5pt;
	mso-border-bottom-themecolor:accent1;
	padding:0in;
	mso-padding-alt:0in 0in 4.0pt 0in;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;
	font-weight:bold;
	font-style:italic;}
span.MsoIntenseEmphasis
	{mso-style-priority:21;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	color:#4F81BD;
	mso-themecolor:accent1;
	font-weight:bold;
	font-style:italic;}
span.MsoSubtleReference
	{mso-style-priority:31;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	font-variant:small-caps;
	color:#C0504D;
	mso-themecolor:accent2;
	text-decoration:underline;
	text-underline:single;}
span.MsoIntenseReference
	{mso-style-priority:32;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	font-variant:small-caps;
	color:#C0504D;
	mso-themecolor:accent2;
	letter-spacing:.25pt;
	font-weight:bold;
	text-decoration:underline;
	text-underline:single;}
p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading
	{mso-style-priority:39;
	mso-style-qformat:yes;
	mso-style-parent:"Heading 1";
	mso-style-next:Normal;
	margin-top:24.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan lines-together;
	page-break-after:avoid;
	font-size:14.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#365F91;
	mso-themecolor:accent1;
	mso-themeshade:191;
	font-weight:bold;}
span.HeaderChar
	{mso-style-name:"Header Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Header;}
span.FooterChar
	{mso-style-name:"Footer Char";
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Footer;}
span.Heading1Char
	{mso-style-name:"Heading 1 Char";
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Heading 1";
	mso-ansi-font-size:14.0pt;
	mso-bidi-font-size:14.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#365F91;
	mso-themecolor:accent1;
	mso-themeshade:191;
	font-weight:bold;}
span.QuoteChar
	{mso-style-name:"Quote Char";
	mso-style-priority:29;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Quote;
	color:black;
	mso-themecolor:text1;
	font-style:italic;}
span.TitleChar
	{mso-style-name:"Title Char";
	mso-style-priority:10;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Title;
	mso-ansi-font-size:26.0pt;
	mso-bidi-font-size:26.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#17365D;
	mso-themecolor:text2;
	mso-themeshade:191;
	letter-spacing:.25pt;
	mso-font-kerning:14.0pt;}
span.BalloonTextChar
	{mso-style-name:"Balloon Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Balloon Text";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;}
span.IntenseQuoteChar
	{mso-style-name:"Intense Quote Char";
	mso-style-priority:30;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Intense Quote";
	color:#4F81BD;
	mso-themecolor:accent1;
	font-weight:bold;
	font-style:italic;}
span.SubtitleChar
	{mso-style-name:"Subtitle Char";
	mso-style-priority:11;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Subtitle;
	mso-ansi-font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;
	letter-spacing:.75pt;
	font-style:italic;}
span.Heading2Char
	{mso-style-name:"Heading 2 Char";
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Heading 2";
	mso-ansi-font-size:13.0pt;
	mso-bidi-font-size:13.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;
	font-weight:bold;}
p.Code, li.Code, div.Code
	{mso-style-name:Code;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Code Char";
	margin:0in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	tab-stops:.25in .5in .75in 1.0in 1.25in 1.5in 1.75in 2.0in;
	background:#EEECE1;
	mso-background-themecolor:background2;
	border:none;
	mso-border-alt:solid windowtext 1.0pt;
	padding:0in;
	mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
	mso-border-shadow:yes;
	font-size:8.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.CodeCxSpFirst, li.CodeCxSpFirst, div.CodeCxSpFirst
	{mso-style-name:CodeCxSpFirst;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Code Char";
	mso-style-type:export-only;
	margin:0in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	tab-stops:.25in .5in .75in 1.0in 1.25in 1.5in 1.75in 2.0in;
	background:#EEECE1;
	mso-background-themecolor:background2;
	border:none;
	mso-border-alt:solid windowtext 1.0pt;
	padding:0in;
	mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
	mso-border-shadow:yes;
	font-size:8.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.CodeCxSpMiddle, li.CodeCxSpMiddle, div.CodeCxSpMiddle
	{mso-style-name:CodeCxSpMiddle;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Code Char";
	mso-style-type:export-only;
	margin:0in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	tab-stops:.25in .5in .75in 1.0in 1.25in 1.5in 1.75in 2.0in;
	background:#EEECE1;
	mso-background-themecolor:background2;
	border:none;
	mso-border-alt:solid windowtext 1.0pt;
	padding:0in;
	mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
	mso-border-shadow:yes;
	font-size:8.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
p.CodeCxSpLast, li.CodeCxSpLast, div.CodeCxSpLast
	{mso-style-name:CodeCxSpLast;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Code Char";
	mso-style-type:export-only;
	margin:0in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	tab-stops:.25in .5in .75in 1.0in 1.25in 1.5in 1.75in 2.0in;
	background:#EEECE1;
	mso-background-themecolor:background2;
	border:none;
	mso-border-alt:solid windowtext 1.0pt;
	padding:0in;
	mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
	mso-border-shadow:yes;
	font-size:8.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
span.CodeChar
	{mso-style-name:"Code Char";
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:Code;
	mso-ansi-font-size:8.0pt;
	font-family:"Courier New";
	mso-ascii-font-family:"Courier New";
	mso-hansi-font-family:"Courier New";
	background:#EEECE1;
	mso-shading-themecolor:background2;}
span.Heading3Char
	{mso-style-name:"Heading 3 Char";
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Heading 3";
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	color:#4F81BD;
	mso-themecolor:accent1;
	font-weight:bold;}
span.DocumentMapChar
	{mso-style-name:"Document Map Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Document Map";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;}
span.CommentTextChar
	{mso-style-name:"Comment Text Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Comment Text";
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
span.CommentSubjectChar
	{mso-style-name:"Comment Subject Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-parent:"Comment Text Char";
	mso-style-link:"Comment Subject";
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	font-weight:bold;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-top:12.0pt;
	margin-right:0in;
	margin-bottom:12.0pt;
	margin-left:0in;}
 /* Page Definitions */
 @page
	{mso-footnote-separator:url("DataConstructorTutorial_files/header.htm") fs;
	mso-footnote-continuation-separator:url("DataConstructorTutorial_files/hea=
der.htm") fcs;
	mso-endnote-separator:url("DataConstructorTutorial_files/header.htm") es;
	mso-endnote-continuation-separator:url("DataConstructorTutorial_files/head=
er.htm") ecs;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-header:url("DataConstructorTutorial_files/header.htm") h1;
	mso-footer:url("DataConstructorTutorial_files/header.htm") f1;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:952205232;
	mso-list-type:hybrid;
	mso-list-template-ids:-1961850394 67698703 67698713 67698715 67698703 6769=
8713 67698715 67698703 67698713 67698715;}
@list l0:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l1
	{mso-list-id:1050804733;
	mso-list-type:hybrid;
	mso-list-template-ids:504415064 67698703 67698713 67698715 67698703 676987=
13 67698715 67698703 67698713 67698715;}
@list l1:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l2
	{mso-list-id:1325862387;
	mso-list-type:hybrid;
	mso-list-template-ids:1157265354 67698703 67698713 67698715 67698703 67698=
713 67698715 67698703 67698713 67698715;}
@list l2:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l3
	{mso-list-id:1493527358;
	mso-list-type:hybrid;
	mso-list-template-ids:-648894132 67698703 67698713 67698715 67698703 67698=
713 67698715 67698703 67698713 67698715;}
@list l3:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l4
	{mso-list-id:1568103003;
	mso-list-type:hybrid;
	mso-list-template-ids:819481416 67698703 67698713 67698715 67698703 676987=
13 67698715 67698703 67698713 67698715;}
@list l4:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;}
@list l5
	{mso-list-id:1958830608;
	mso-list-type:hybrid;
	mso-list-template-ids:-1245947218 67698689 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l5:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:12.0pt;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:12.0pt;
	mso-para-margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"12290"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1"/>
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple style=3D'tab-interval:.5in'>

<div class=3DSection1>

<div style=3D'mso-element:para-border-div;border:none;border-bottom:solid #=
4F81BD 1.0pt;
mso-border-bottom-themecolor:accent1;padding:0in 0in 4.0pt 0in'>

<p class=3DMsoTitle><w:Sdt
 PrefixMappings=3D"xmlns:ns0=3D'http://purl.org/dc/elements/1.1/' xmlns:ns1=
=3D'http://schemas.openxmlformats.org/package/2006/metadata/core-properties=
' "
 Xpath=3D"/ns1:coreProperties[1]/ns0:title[1]"
 DocPart=3D"6AB13750B8BB4C2DA3DF8E8A3C9BED80" Text=3D"t"
 StoreItemID=3D"X_6C3C8BC8-F283-45AE-878A-BAB7291924A1" Title=3D"Title"
 ID=3D"219466141">Getting Started with DataConstructor</w:Sdt></p>

</div>

<w:Sdt
 PrefixMappings=3D"xmlns:ns0=3D'http://purl.org/dc/elements/1.1/' xmlns:ns1=
=3D'http://schemas.openxmlformats.org/package/2006/metadata/core-properties=
' "
 Xpath=3D"/ns1:coreProperties[1]/ns0:subject[1]"
 DocPart=3D"912E3E2E14044C8B8B8984A19C2273D7" Text=3D"t"
 StoreItemID=3D"X_6C3C8BC8-F283-45AE-878A-BAB7291924A1" Title=3D"Subject"
 ID=3D"219739878">
 <p class=3DMsoSubtitle>A Tutorial for DataConstructor<w:sdtPr></w:sdtPr></=
p>
</w:Sdt>

<h1><a name=3D"_Toc187736469">Overview</a></h1>

<p class=3DMsoSubtitle>What is in this tutorial?</p>

<p class=3DMsoNormal>In this tutorial, you will learn the basics of using t=
he DataConstructor
component.<span style=3D'mso-spacerun:yes'>  </span>First you will learn ho=
w to
access DataConstructor programmatically.<span style=3D'mso-spacerun:yes'> 
</span>Then you will learn how to write XML scripts to configure DataConstr=
uctor.<span
style=3D'mso-spacerun:yes'>  </span>Finally, you will learn about some of t=
he
specific features of DataConstructor.</p>

<h1><a name=3D"_Toc187736470">Table of Contents</a></h1>

<p class=3DMsoSubtitle>Where is everything?</p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><!--[if support=
Fields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>TOC \o &quot;1-3&quot; \h \z \u <span
style=3D'mso-element:field-separator'></span><![endif]--><a href=3D"#_Toc18=
7736469"><span
style=3D'mso-no-proof:yes'>Overview</span><span style=3D'color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>.. </span></span><!--[if suppo=
rtFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736469 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>1<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400360039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736470"><span
style=3D'mso-no-proof:yes'>Table of Contents</span><span style=3D'color:win=
dowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736470 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>1<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736471"><span
style=3D'mso-no-proof:yes'>The Unique Problem</span><span style=3D'color:wi=
ndowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>.. </span></span><!--[if suppo=
rtFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736471 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>2<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370031000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736472"><span
style=3D'mso-no-proof:yes'>Code Evolves</span><span style=3D'color:windowte=
xt;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736472 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>3<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736473"><span
style=3D'mso-no-proof:yes'>Data Stores Metamorphose</span><span style=3D'co=
lor:
windowtext;display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:no=
ne;
text-underline:none'><span style=3D'mso-tab-count:1 dotted'>. </span></span=
><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736473 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>3<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370033000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736474"><span
style=3D'mso-no-proof:yes'>Modifying Data is Risky</span><span style=3D'col=
or:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736474 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>3<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370034000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736475"><span
style=3D'mso-no-proof:yes'>The Known Path</span><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736475 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>3<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370035000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736476"><span
style=3D'mso-no-proof:yes'>Key Players</span><span style=3D'color:windowtex=
t;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736476 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>4<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736477"><span
style=3D'mso-no-proof:yes'>Factory</span><span style=3D'color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736477 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>4<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370037000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736478"><span
style=3D'mso-no-proof:yes'>StructureBuilder</span><span style=3D'color:wind=
owtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736478 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>4<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736479"><span
style=3D'mso-no-proof:yes'>Structure</span><span style=3D'color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736479 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>4<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400370039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736480"><span
style=3D'mso-no-proof:yes'>FeatureBuilder</span><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736480 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>4<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736481"><span
style=3D'mso-no-proof:yes'>Getting Started</span><span style=3D'color:windo=
wtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736481 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>4<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380031000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736482"><span
style=3D'mso-no-proof:yes'>Getting an Instance of Factory</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736482 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>5<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736483"><span
style=3D'mso-no-proof:yes'>Getting an Instance of StructureBuilder</span><s=
pan
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736483 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>5<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380033000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736484"><span
style=3D'mso-no-proof:yes'>Preparing your StructureBuilder</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736484 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>5<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380034000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736485"><span
style=3D'mso-no-proof:yes'>Configuring your StructureBuilder</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736485 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>5<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380035000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736486"><span
style=3D'mso-no-proof:yes'>Getting an Instance of Structure</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736486 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>6<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736487"><span
style=3D'mso-no-proof:yes'>Upgrading your Data Store</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736487 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>7<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380037000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736488"><span
style=3D'mso-no-proof:yes'>Encapsulate Everything</span><span style=3D'colo=
r:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736488 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>7<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736489"><span
style=3D'mso-no-proof:yes'>An Example</span><span style=3D'color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736489 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>7<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400380039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736490"><span
style=3D'mso-no-proof:yes'>Using XML to Define a Database</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736490 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>8<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736491"><span
style=3D'mso-no-proof:yes'>Basic Database XML</span><span style=3D'color:wi=
ndowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736491 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>9<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390031000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736492"><span
style=3D'mso-no-proof:yes'>Getting a StructureBuilder Using a Factory and X=
ML</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736492 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>9<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736493"><span
style=3D'mso-no-proof:yes'>Using Versions</span><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736493 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>9<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390033000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736494"><span
style=3D'mso-no-proof:yes'>Adding Multiple SQL Statements to Versions</span=
><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736494 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>11<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390034000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736495"><span
style=3D'mso-no-proof:yes'>Using Versioning</span><span style=3D'color:wind=
owtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736495 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>12<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390035000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736496"><span
style=3D'mso-no-proof:yes'>Another Simple Example</span><span style=3D'colo=
r:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736496 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>12<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736497"><span
style=3D'mso-no-proof:yes'>Advanced XML</span><span style=3D'color:windowte=
xt;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736497 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>13<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390037000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736498"><span
style=3D'mso-no-proof:yes'>Parameterization</span><span style=3D'color:wind=
owtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736498 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>13<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736499"><span
style=3D'mso-no-proof:yes'>Variables are for Deferring Commitment</span><sp=
an
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736499 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>14<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003400390039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736500"><span
style=3D'mso-no-proof:yes'>Using Variables in XML</span><span style=3D'colo=
r:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736500 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>14<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736501"><span
style=3D'mso-no-proof:yes'>Binding Values to Variables</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736501 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>15<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300031000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736502"><span
style=3D'mso-no-proof:yes'>Variables are Transient</span><span style=3D'col=
or:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736502 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>16<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736503"><span
style=3D'mso-no-proof:yes'>Placeholders</span><span style=3D'color:windowte=
xt;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736503 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>16<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300033000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736504"><span
style=3D'mso-no-proof:yes'>Defining a Placeholder in XML</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736504 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>16<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300034000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736505"><span
style=3D'mso-no-proof:yes'>Binding Behavior to a Placeholder</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736505 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>16<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300035000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736506"><span
style=3D'mso-no-proof:yes'>The Catch: Working with Transactions</span><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-tab-count:1 do=
tted'>. </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736506 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>17<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc2 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736507"><span
style=3D'mso-no-proof:yes'>The Other Catch: Flexibility with a Chance of
Flimsiness</span><span style=3D'color:windowtext;display:none;mso-hide:scre=
en;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span
style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><sp=
an
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736507 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>18<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300037000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736508"><span
style=3D'mso-no-proof:yes'>Conclusion</span><span style=3D'color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-tab-count:1 dotted'>. </span></span><!--[if suppor=
tFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736508 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>18<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DMsoToc1 style=3D'tab-stops:right dotted 467.5pt'><a href=3D"#_To=
c187736509"><span
style=3D'mso-no-proof:yes'>Legal</span><span style=3D'color:windowtext;disp=
lay:
none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:n=
one'><span
style=3D'mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style=3D'mso-element:field-=
begin'></span>
PAGEREF _Toc187736509 \h <span style=3D'mso-element:field-separator'></span=
></span><![endif]--><span
style=3D'color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'>19<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005400=
6F0063003100380037003700330036003500300039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'color:window=
text;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-und=
erline:
none'><span style=3D'mso-element:field-end'></span></span><![endif]--></a><=
span
style=3D'mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:m=
inor-fareast;
mso-no-proof:yes'><o:p></o:p></span></p>

<h1><!--[if supportFields]><span style=3D'mso-element:field-end'></span><![=
endif]--><a
name=3D"_Toc187736471">The Unique Problem</a></h1>

<p class=3DMsoSubtitle>Why do I need DataConstructor?</p>

<p class=3DMsoNormal>The problem, simply put, is that data stores – databas=
es,
read/write XML data and the like – are resistant to change.<span
style=3D'mso-spacerun:yes'>  </span>It is not the programmers, it is the me=
dia
themselves.<span style=3D'mso-spacerun:yes'>  </span>As a consequence, it’s=
 been
difficult to bring Agility to the data storage world.<span
style=3D'mso-spacerun:yes'>  </span>The root cause of the problem appears t=
o be a
difference in what is valued: it is easy to simply replace old binaries with
newer ones, or to install an upgrade but it would be unthinkable to drop a
deployed database with any significant amount of data then roll out a new o=
ne.</p>

<p class=3DMsoNormal>…so we try to apply changes to a live database.<span
style=3D'mso-spacerun:yes'>  </span>These changes are often risky and the
database world becomes a sort of “Wild West,” wherein workers must stay lat=
e to
ensure that a database deployment runs smoothly.<span
style=3D'mso-spacerun:yes'>  </span>In the case of XML data stores (as migh=
t be
used by an application), there is a lot of after-the-fact testing done by
hand.<span style=3D'mso-spacerun:yes'>  </span>Upgrades from version to ver=
sion
are often poorly tested and only certain migration paths are considered.</p>

<p class=3DMsoNormal>DataConstructor brings to the live data world the same=
 kind
of certainty that compilers brought to the application world.<span
style=3D'mso-spacerun:yes'>  </span>It gives you a repeatable, testable, an=
d well
defined means of building and growing your database or XML file.</p>

<h2><a name=3D"_Toc187736472">Code Evolves</a></h2>

<p class=3DMsoNormal>In an Agile environment, when you install new code, you
rarely go to great lengths to respect the old code.<span
style=3D'mso-spacerun:yes'>  </span>The version two binaries of an applicat=
ion
usually replace the version one binaries.<span style=3D'mso-spacerun:yes'> 
</span>There’s a good chance you would even make your customer uninstall
previous versions of your product before installing the latest and
greatest.<span style=3D'mso-spacerun:yes'>  </span>Of course, there are some
exceptions like public interfaces and web services but, by and large, the <i
style=3D'mso-bidi-font-style:normal'>modus operandi</i> is “out with the ol=
d, in
with the new.”</p>

<p class=3DMsoNormal>So why are we so willing to throw away what we have in=
 favor
of the next big thing?<span style=3D'mso-spacerun:yes'>  </span>The answer =
seems
pretty obvious: because the value of what is sitting on our hard-drives is
pretty low.<span style=3D'mso-spacerun:yes'>  </span>The value provided by =
the
application may be high, but the value of an installation is low.<span
style=3D'mso-spacerun:yes'>  </span>The easiest way to demonstrate this is =
to
think about the last time you had a problem with a corrupted install?<span
style=3D'mso-spacerun:yes'>  </span>What did you do?<span
style=3D'mso-spacerun:yes'>  </span>You probably uninstalled – maybe even g=
oing
through the registry and file system to ensure everything was gone – and th=
en
reinstalled?</p>

<p class=3DMsoNormal>…so code and binaries <i style=3D'mso-bidi-font-style:=
normal'>evolve</i>.<span
style=3D'mso-spacerun:yes'>  </span>When a superior solution is introduced =
into
the environment, the inferior versions are slowly driven to extinction.</p>

<h2><a name=3D"_Toc187736473">Data Stores Metamorphose</a></h2>

<p class=3DMsoNormal>The data world works a little differently.<span
style=3D'mso-spacerun:yes'>  </span>Odds are, the bits sitting on hard driv=
es, tapes,
or optical platters which have been entered by your customers are pretty
valuable.<span style=3D'mso-spacerun:yes'>  </span>Those data are probably =
a lot
more valuable to your customer than a new feature.<span
style=3D'mso-spacerun:yes'>  </span>In fact, depending on the amount of inf=
ormation
involved, your customers’ existing data may be more valuable than any numbe=
r of
new features.<span style=3D'mso-spacerun:yes'>  </span>The more data they h=
ave
(and hence the more value there is in their data) the harder it becomes to
switch from an old format to a new format.</p>

<p class=3DMsoNormal>The reality is that where code can simply evolve, data=
 sets
have to metamorphose.<span style=3D'mso-spacerun:yes'>  </span>Evolution pr=
oceeds
by the death of one generation and the birth of another (individuals don’t
evolve, species do). <span style=3D'mso-spacerun:yes'> </span>In contrast: =
metamorphosis
can occur within a single living organism (butterflies, for instance).<span
style=3D'mso-spacerun:yes'>  </span>A data store can change but continuity =
must
be maintained; it cannot simply be replaced.<span style=3D'mso-spacerun:yes=
'> 
</span>Thus: an Agile data store must undergo metamorphosis rather than
evolution.</p>

<h2><a name=3D"_Toc187736474">Modifying Data is Risky</a></h2>

<p class=3DMsoNormal>Our solution has been to try and “confine” a waterfall
process and/or thinking to the database world and then, when we are faced w=
ith
change, we use “cowboy” tactics such as staying late to make sure things “go
smoothly,” in order to mitigate the inherent risks involved in upgrading da=
ta.<span
style=3D'mso-spacerun:yes'>  </span>It’s nobody’s fault.<span
style=3D'mso-spacerun:yes'>  </span>We’ve all done it… there just wasn’t re=
ally a
better option.</p>

<h2><a name=3D"_Toc187736475">The Known Path</a></h2>

<p class=3DMsoNormal>DataConstructor introduces the concept of a known upgr=
ade
path.<span style=3D'mso-spacerun:yes'>  </span>Using this, the structure of=
 every
data store will grow in exactly the same way.<span style=3D'mso-spacerun:ye=
s'> 
</span>The migration from one version to the next can be thoroughly tested.=
<span
style=3D'mso-spacerun:yes'>  </span>If some part of the path does need to v=
ary,
you will be afforded strict control over when and where that variance is
introduced and what effect it can have.</p>

<p class=3DMsoNormal>If you use DataConstructor in a test-first development
environment – and it’s highly recommended that you do so– it brings certain=
ty
into play by letting you define all of the behavior and know when you’re
done.<span style=3D'mso-spacerun:yes'>  </span>Thus DataConstructor gives y=
ou
confidence that your data upgrade scripts will actually do what it’s suppos=
ed
to do.<span style=3D'mso-spacerun:yes'>  </span>If you go one step further,=
 and
use a test-driven development technique, it will also help you keep the qua=
lity
of your database high.</p>

<h1><a name=3D"_Toc187736476">Key Players</a></h1>

<p class=3DMsoSubtitle>What are the fundamental types in DataConstructor?</=
p>

<p class=3DMsoNormal>There are four types in the DataConstructor component =
with
which you must be familiar in order to use the product effectively.<span
style=3D'mso-spacerun:yes'>  </span>Those three types are Factory, Platform=
, StructureBuilder,
and Structure.<span style=3D'mso-spacerun:yes'>  </span>In addition there is
another type that is so central to the operation of DataConstructor that it
will be difficult for you to avoid: FeatureBuilder.<span
style=3D'mso-spacerun:yes'>  </span>All of these types are in the HexagonSo=
ftware.DataConstructor.Contracts
namespace.</p>

<h2><a name=3D"_Toc187736477">Factory</a></h2>

<p class=3DMsoNormal>As with virtually all Hexagon Software components, the=
re is
a <a href=3D"http://www.netobjectivesrepository.com/TheAbstractFactoryPatte=
rn">Factory</a>
object which must be used in order to access the component.<span
style=3D'mso-spacerun:yes'>  </span>This particular factory offers the abil=
ity to
instantiate a large variety of objects and we will only discuss a small sub=
set
of those in this tutorial (primarily: the four other types called out in th=
is
section).</p>

<h2><a name=3D"_Toc187736478">StructureBuilder</a></h2>

<p class=3DMsoNormal>Implementers of the StructureBuilder interface are <a
href=3D"http://www.netobjectivesrepository.com/TheBuilderPattern">Builders<=
/a>
that know how construct instances of the Structure type.<span
style=3D'mso-spacerun:yes'>  </span>The construction process for most
implementations of Structure is very complex so it is highly recommended th=
at
you use an implementation of StructureBuilder rather than trying to do so u=
sing
only the Factory class described above.<span style=3D'mso-spacerun:yes'> 
</span>To be clear: StructureBuilder is not required but constructing insta=
nces
of Structure is a complex task that should be encapsulated.<span
style=3D'mso-spacerun:yes'>  </span>If StructureBuilder does not meet your =
needs,
please consider writing your own equivalent.</p>

<h2><a name=3D"_Toc187736479">Structure</a></h2>

<p class=3DMsoNormal>An implementation of Structure is, essentially, a
description of how a database should look as of a certain version.<span
style=3D'mso-spacerun:yes'>  </span>It can be treated as a <a
href=3D"http://www.netobjectivesrepository.com/TheStrategyPattern">Strategy=
</a>
for safely upgrading a database from some version to a target version.</p>

<h2><a name=3D"_Toc187736480">FeatureBuilder</a></h2>

<p class=3DMsoNormal>Implementations of the FeatureBuilder type are crucial=
 to
the construction of a Structure object.<span style=3D'mso-spacerun:yes'>  <=
/span>StructureBuilder
objects use FeatureBuilder objects to describe the Structure object they wi=
ll
eventually produce.</p>

<h1><a name=3D"_Toc187736481"></a><a name=3D"_Ref177856426"><span style=3D'=
mso-bookmark:
_Toc187736481'>Getting Started</span></a></h1>

<p class=3DMsoSubtitle>How do I access DataConstructor?</p>

<p class=3DMsoNormal>The first thing you have to do is get an instance of
Factory.<span style=3D'mso-spacerun:yes'>  </span>Once you have a factory, =
you
will use it to get an instance of StructureBuilder.<span
style=3D'mso-spacerun:yes'>  </span>You will then add an instance of Featur=
eBuilder
to that StructureBuilder object describing some change you want made to a
database.<span style=3D'mso-spacerun:yes'>  </span>Next, you will use the S=
tructureBuilder
to get an instance of Structure.<span style=3D'mso-spacerun:yes'>  </span>T=
he Structure
object can, in turn, be used to upgrade a database into a target state.<span
style=3D'mso-spacerun:yes'>  </span>Ideally, you will have encapsulated
everything you’ve done.</p>

<h2><a name=3D"_Toc187736482">Getting an Instance of Factory</a></h2>

<p class=3DMsoNormal>The first thing you need to do is get an instance of
Factory.<span style=3D'mso-spacerun:yes'>  </span>This can be done using the
FactoryLocator class (again: in the HexagonSoftware.DataConstructor.Contrac=
ts
namespace).<span style=3D'mso-spacerun:yes'>  </span>The FactoryLocator cla=
ss has
a static method named “GetFactory” which accepts one argument: your license
key.</p>

<p class=3DMsoNormal style=3D'page-break-after:avoid'>So to get a factory, =
you’ll
want to do something like this:</p>

<p class=3DMsoCaption><a name=3D"_Ref177764358">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177764358'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177764358'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177764358'><span style=3D'mso-no-proof:yes'>1</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177764358'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177764358'></span> – Getting an instance of Facto=
ry
using FactoryLocator</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>string</spa=
n><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> licenseXml =3D <span style=3D'color:#2B91AF'>LicenseUtilities</span>.=
GetLicenseText();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>Factory<=
/span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> factory =3D <span style=3D'color:#2B91AF'>FactoryLocator</span>.GetFa=
ctory(licenseXml);<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal>Now you have a factory that can be used to instantiate=
 DataConstructor
objects.</p>

<h2><a name=3D"_Toc187736483">Getting an Instance of StructureBuilder</a></=
h2>

<p class=3DMsoNormal>Once you have your Factory, you’ll want to use it to g=
et an
instance of StructureBuilder.<span style=3D'mso-spacerun:yes'>  </span>This=
 can
be accomplished using the “CreateStructureBuilder” method.<span
style=3D'mso-spacerun:yes'>  </span>One of the overloads for CreateStructur=
eBuilder
takes no parameters and returns an un-configured instance of StructureBuild=
er.<span
style=3D'mso-spacerun:yes'>  </span>To get your StructureBuilder, you’ll wa=
nt to
do something like this:</p>

<p class=3DMsoCaption><a name=3D"_Ref177855805">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177855805'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177855805'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177855805'><span style=3D'mso-no-proof:yes'>2</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177855805'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177855805'></span> – Using your Factory to instan=
tiate StructureBuilder<span
style=3D'mso-no-proof:yes'><o:p></o:p></span></p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'color:#2B91AF;mso-n=
o-proof:
yes'>StructureBuilder</span><span style=3D'mso-no-proof:yes'> structureBuil=
der =3D
factory.CreateStructureBuilder();<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal><span style=3D'mso-no-proof:yes'>Having done this, you=
 should
have an instance of StructureBuilder which can be used to instantiate
implementations of the Structure interface.<o:p></o:p></span></p>

<h2><a name=3D"_Toc187736484">Preparing your StructureBuilder</a></h2>

<p class=3DMsoNormal>StructureBuilder objects are, initially, completely
unconfigured.<span style=3D'mso-spacerun:yes'>  </span>When they are born, =
they
cannot even produce a Null strategy.<span style=3D'mso-spacerun:yes'> 
</span>This is because every StructureBuilder must have a Platform.<span
style=3D'mso-spacerun:yes'>  </span>There are two pre-defined platforms:
Databases and XML.<span style=3D'mso-spacerun:yes'>  </span>For the purpose=
 of this
tutorial, we will choose the Database platform.</p>

<p class=3DMsoCaption>Listing <!--[if supportFields]><span style=3D'mso-ele=
ment:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>SEQ Listing \*
ARABIC <span style=3D'mso-element:field-separator'></span><![endif]--><span
style=3D'mso-no-proof:yes'>3</span><!--[if supportFields]><span style=3D'ms=
o-element:
field-end'></span><![endif]--> – Setting a StructureBuilder’s Platform</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>structureBuilder.Platf=
orm
=3D factory.Platforms.Database();<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<h2><a name=3D"_Toc187736485">Configuring your StructureBuilder</a></h2>

<p class=3DMsoNormal>Now you’ve got a StructureBuilder.<span
style=3D'mso-spacerun:yes'>  </span>The next step is to configure it.<span
style=3D'mso-spacerun:yes'>  </span>We do this by adding “features” to our =
StructureBuilder.<span
style=3D'mso-spacerun:yes'>  </span>“Features” are described by implementat=
ions
of FeatureBuilder, the most common form of which also implements the Script=
FeatureBuilder
interface.<span style=3D'mso-spacerun:yes'>  </span>The first step is to us=
e our
factory to get an instance of ScriptFeatureBuilder as shown in <!--[if supp=
ortFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177764367 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>4</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360034003300360037000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177764367">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177764367'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177764367'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177764367'><span style=3D'mso-no-proof:yes'>4</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177764367'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177764367'></span> – Using your factory to instan=
tiate
SqlScriptFeatureBuilder</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>ScriptFe=
atureBuilder</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> featureBuilder =3D factory.FeatureBuilders.Script();<o:p></o:p></span=
></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal>Once you have your feature builder, the next thing to =
do is
to assign its identity as in <!--[if supportFields]><span style=3D'mso-elem=
ent:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>REF _Ref177764=
472 \h
<span style=3D'mso-element:field-separator'></span><![endif]-->Listing <span
style=3D'mso-no-proof:yes'>5</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360034003400370032000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177764472">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177764472'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177764472'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177764472'><span style=3D'mso-no-proof:yes'>5</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177764472'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177764472'></span> – Assigning an identity to a F=
eatureBuilder</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'>f=
eatureBuilder.Identity
=3D <span style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>Ver=
sion</span>(1,
0);<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal>In order to impact a database, a Feature must ultimate=
ly
resolve down to SQL commands which can be executed against a database if th=
ey
need to be implemented.<span style=3D'mso-spacerun:yes'>  </span>Therefore,=
 you
will need to add at least one SQL command to our FeatureBuilder.<span
style=3D'mso-spacerun:yes'>  </span>We accomplish this by building an insta=
nce of
SqlCommand and adding it to our ScriptFeatureBuilder object’s list of comma=
nds
as demonstrated in <!--[if supportFields]><span style=3D'mso-element:field-=
begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177764741 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>6</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360034003700340031000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177764741">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177764741'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177764741'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177764741'><span style=3D'mso-no-proof:yes'>6</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177764741'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177764741'></span> – Using “AddSqlStatement” to a=
dd a
simple SQL statement to a SqlScriptFeatureBuilder</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>const</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> <span style=3D'color:blue'>string</span> SQL =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>@&quot;C=
REATE
TABLE CUSTOMERS(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Id] UNIQUEIDENTIFIER,<o:p></o:p></span=
></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[FirstName] NVARCHAR(254),<o:p></o:p></=
span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[LastName] NVARCHAR(254))&quot;</span><=
span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>SqlComma=
ndBuilder</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> sqlCommand =3D factory.SqlCommands.CreateSqlCommandBuilder();<o:p></o=
:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>sqlCommand.Sql =3D SQL=
;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>featureBuilder.AddComm=
and(sqlCommand);<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal>Of course, the FeatureBuilder object does you little g=
ood
when it’s just drifting through the Ether.<span style=3D'mso-spacerun:yes'> 
</span>You need to connect it to your StructureBuilder object and to do so =
you
should use the “AddFeatureBuilder” method.<span style=3D'mso-spacerun:yes'> 
</span>This is demonstrated in <!--[if supportFields]><span style=3D'mso-el=
ement:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>REF _Ref177765=
229 \h
<span style=3D'mso-element:field-separator'></span><![endif]-->Listing <span
style=3D'mso-no-proof:yes'>7</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360035003200320039000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177765229">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177765229'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177765229'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177765229'><span style=3D'mso-no-proof:yes'>7</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177765229'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177765229'></span> – Programmatically adding a Fe=
atureBuilder
to a StructureBuilder</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>structureBuilder.AddFe=
atureBuilder(featureBuilder);</span><span
style=3D'mso-no-proof:yes'><o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal>Now you have an instance of StructureBuilder which has=
 been
configured to construct a meaningful Structure object.</p>

<h2><a name=3D"_Toc187736486">Getting an Instance of Structure</a></h2>

<p class=3DMsoNormal>As previously mentioned, implementations of the Struct=
ureBuilder
interface are just Builders… abstractions of the complex creation process f=
or instances
of Structure.<span style=3D'mso-spacerun:yes'>  </span>It is objects that
implement the Structure interface which do the actual work to upgrade a data
store.<span style=3D'mso-spacerun:yes'>  </span>To get an instance of Struc=
ture,
use the “GetStructure” method.<span style=3D'mso-spacerun:yes'>  </span>The=
 “GetStructure”
method takes an array of arguments each of which must be the identity of one
target Feature.<span style=3D'mso-spacerun:yes'>  </span>In other words, yo=
u need
to tell the StructureBuilder which parts of the database you want to see in=
 the
finished product.<span style=3D'mso-spacerun:yes'>  </span>There is an exam=
ple of
this in <!--[if supportFields]><span style=3D'mso-element:field-begin'></sp=
an><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177765638 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>8</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360035003600330038000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177765638">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177765638'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177765638'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177765638'><span style=3D'mso-no-proof:yes'>8</sp=
an></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177765638'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177765638'></span> – Using a StructureBuilder to =
get an
instance of Structure</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>Structur=
e</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> Structure =3D StructureBuilder.GetStructure(<span style=3D'color:blue=
'>new</span>
<span style=3D'color:#2B91AF'>Version</span>(1, 0));<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-f=
ont-family:
"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=3DMsoNormal>You should, now, have an instance of Structure that kn=
ows
how to upgrade a database to “Version 1.0.”</p>

<h2><a name=3D"_Toc187736487">Upgrading your Data Store</a></h2>

<p class=3DMsoNormal>Now it’s time to execute any required upgrades on your
database.<span style=3D'mso-spacerun:yes'>  </span>Naturally, you will need=
 a
database connection; it’s assumed that you know how to get one of these.<sp=
an
style=3D'mso-spacerun:yes'>  </span>Once you have an instance of
System.Data.IDbConnection in the “Open” state, you can upgrade the database=
 on
the other end of the connection to version 1.0 by using your Structure obje=
ct’s
“Build” method as shown in .</p>

<p class=3DMsoCaption>Listing <!--[if supportFields]><span style=3D'mso-ele=
ment:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>SEQ Listing \*
ARABIC <span style=3D'mso-element:field-separator'></span><![endif]--><span
style=3D'mso-no-proof:yes'>9</span><!--[if supportFields]><span style=3D'ms=
o-element:
field-end'></span><![endif]--> – Using a Structure to upgrade a database to
Version 1.0</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>IDbConne=
ction</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> connection =3D <span style=3D'color:blue'>new</span> <span style=3D'c=
olor:#2B91AF'>SqlConnection</span>(<span
style=3D'color:#A31515'>&quot;...&quot;</span>);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>connection.Open();<o:p=
></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>Structure.Build(connec=
tion);<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-f=
ont-family:
"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=3DMsoNormal>You should now have a database that has been upgraded =
to
version 1.0.<span style=3D'mso-spacerun:yes'>  </span>Note that if you were=
 to
call “Build” again on the same database, nothing would happen – the database
already has version 1.0 implemented.</p>

<h2><a name=3D"_Toc187736488">Encapsulate Everything</a></h2>

<p class=3DMsoNormal>We recommend that you encapsulate everything, includin=
g our
own products.<span style=3D'mso-spacerun:yes'>  </span>While we feel that o=
ur
interfaces are a simple enough point of encapsulation that, should you choo=
se
to, you could easily replace our product by writing your own implementation=
s of
those interfaces, there are extra benefits to adding your own layer of
insulation.<span style=3D'mso-spacerun:yes'>  </span>It is unlikely that yo=
u need
all of the features provided by DataConstructor in any one situation. <span
style=3D'mso-spacerun:yes'> </span>By creating a <a
href=3D"http://www.netobjectivesrepository.com/TheFacadePattern">Façade</a>=
 over
our products you can both ensure that you minimize the coupling to an outsi=
de
product (which is always a must) <i style=3D'mso-bidi-font-style:normal'>an=
d</i>
simplify the interface upon which you depend.</p>

<h2><a name=3D"_Toc187736489">An Example</a></h2>

<p class=3DMsoNormal>Here is an example of a very simple Façade built on to=
p of DataConstructor.<span
style=3D'mso-spacerun:yes'>  </span>It encapsulates the structure of a data=
base
with a Customers table.</p>

<p class=3DMsoCaption><a name=3D"_Ref178690151"></a><a name=3D"_Ref17869017=
1"><span
style=3D'mso-bookmark:_Ref178690151'>Listing </span></a><!--[if supportFiel=
ds]><span
style=3D'mso-bookmark:_Ref178690171'><span style=3D'mso-bookmark:_Ref178690=
151'></span></span><span
style=3D'mso-element:field-begin'></span><span style=3D'mso-bookmark:_Ref17=
8690171'><span
style=3D'mso-bookmark:_Ref178690151'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
></span><![endif]--><span
style=3D'mso-bookmark:_Ref178690171'><span style=3D'mso-bookmark:_Ref178690=
151'><span
style=3D'mso-no-proof:yes'>10</span></span></span><!--[if supportFields]><s=
pan
style=3D'mso-bookmark:_Ref178690171'><span style=3D'mso-bookmark:_Ref178690=
151'></span></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Ref178690171'><span style=3D'mso-bookmark:_Ref178690151'></span></span><sp=
an
style=3D'mso-bookmark:_Ref178690151'> – A very simple example of how to use=
 the DataConstructor
component</span></p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System.Collections.Generic;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System.Data;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System.Xml;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> HexagonSoftware.DataConstructor.Contracts;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>namespace</=
span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> HexagonSoftware.DataConstructor.Examples.Tutorial<o:p></o:p></span></=
p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span><span style=3D'color:blue'>public</span> <span style=3D'color:=
blue'>class</span>
<span style=3D'color:#2B91AF'>BasicDatabaseStructure<o:p></o:p></span></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span><span style=3D'color:blue'>public</span> <span style=3D'co=
lor:
blue'>static</span> <span style=3D'color:blue'>void</span> UpgradeDatabase(=
<span
style=3D'color:#2B91AF'>IDbConnection</span> connection, <span style=3D'col=
or:#2B91AF'>Version</span>
identity)<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:blue'>string</span> licenseXml =3D=
 <span
style=3D'color:#2B91AF'>LicenseUtilities</span>.GetLicenseText();<o:p></o:p=
></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>Factory</span> factory =
=3D <span
style=3D'color:#2B91AF'>FactoryLocator</span>.GetFactory(licenseXml);<o:p><=
/o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>StructureBuilder</span>
structureBuilder =3D factory.CreateStructureBuilder();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>structureBuilder.Platform =3D factory.Platforms.Databas=
e();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>ScriptFeatureBuilder</spa=
n>
featureBuilder =3D factory.FeatureBuilders.Script();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>featureBuilder.Identity =3D <span style=3D'color:blue'>=
new</span>
<span style=3D'color:#2B91AF'>Version</span>(1, 0);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:blue'>const</span> <span
style=3D'color:blue'>string</span> SQL =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>@&quot;C=
REATE
TABLE CUSTOMERS(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Id] UNIQUEIDENTIFIER,<o:p></o:p></span=
></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[FirstName] NVARCHAR(254),<o:p></o:p></=
span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[LastName] NVARCHAR(254))&quot;</span><=
span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>SqlCommandBuilder</span>
sqlCommand =3D factory.SqlCommands.CreateSqlCommandBuilder();<o:p></o:p></s=
pan></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>sqlCommand.Sql =3D SQL;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>featureBuilder.AddCommand(sqlCommand);<o:p></o:p></span=
></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>structureBuilder.AddFeatureBuilder(featureBuilder);<o:p=
></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>Structure</span>
databaseStructure =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
4'>              </span>structureBuilder.GetStructure(identity);<o:p></o:p>=
</span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>databaseStructure.Build(connection);<o:p></o:p></span><=
/p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>}<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>Using this, you could start building on an interface b=
ehind
which you can extend the database, as needed.</p>

<h1><a name=3D"_Toc187736490">Using XML to Define a Database</a></h1>

<p class=3DMsoSubtitle>Is there an easier way to define my database?</p>

<p class=3DMsoNormal><!--[if supportFields]><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref178690171 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>10</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370038003600390030003100370031000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
demonstrates the most basic way of using DataConstructor.<span
style=3D'mso-spacerun:yes'>  </span>By “most basic” we mean “easiest to dig=
est.”<span
style=3D'mso-spacerun:yes'>  </span>Programmatic definition often requires =
an
over-articulation of your needs and, therefore, imposes upon you an unneces=
sary
burden.<span style=3D'mso-spacerun:yes'>  </span>There is a simpler way: Da=
taConstructor
supports a number of XML formats that provide a more compact and readable
format with which you can define your database.<span style=3D'mso-spacerun:=
yes'> 
</span>The format we will focus on in this section of the tutorial is called
“versions,” it is the simplest and best loved of the schemas supported by D=
ataConstructor.</p>

<h2><a name=3D"_Toc187736491">Basic Database XML</a></h2>

<p class=3DMsoNormal>The simplest database definition would be one that does
absolutely nothing.<span style=3D'mso-spacerun:yes'>  </span>It’s not very =
useful
to us but, for demonstration purposes, it would look something like <!--[if=
 supportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177855037 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>11</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003800350035003000330037000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177855037">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177855037'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177855037'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177855037'><span style=3D'mso-no-proof:yes'>11</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177855037'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177855037'></span> – A minimal Database Structure
script</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;?</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";color:blue;mso-no-proof:yes'> </span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>versio=
n</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";mso-no-proof:yes'>&quot;<span style=3D'color:blue'>1.0</span>=
&quot;<span
style=3D'color:blue'> </span><span style=3D'color:red'>encoding</span><span
style=3D'color:blue'>=3D</span>&quot;<span style=3D'color:blue'>utf-8</span=
>&quot;<span
style=3D'color:blue'> ?&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </sp=
an><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>xmlns</span><span style=3D'mso-bidi-font-size:8.0pt;mso-b=
idi-font-family:
"Courier New";color:blue;mso-no-proof:yes'>=3D</span><span style=3D'mso-bid=
i-font-size:
8.0pt;mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<span
style=3D'color:blue'> /&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>We now have the minimum amount of XML required to
instantiate a StructureBuilder object.</p>

<h2><a name=3D"_Toc187736492">Getting a StructureBuilder Using a Factory an=
d XML</a></h2>

<p class=3DMsoNormal>Now that we have our database defined as XML, we need =
a way
to make it into an instance of StructureBuilder.<span
style=3D'mso-spacerun:yes'>  </span>This can be accomplished with a factory=
.<span
style=3D'mso-spacerun:yes'>  </span>The Factory interface has two methods n=
amed
“CreateStructureBuilder.”<span style=3D'mso-spacerun:yes'>  </span>One of t=
hem,
we’ve already been introduced to: the overload which takes no parameters.<s=
pan
style=3D'mso-spacerun:yes'>  </span>The other method with that name takes o=
ne
argument: an instance of System.Xml.XmlElement containing a description of =
our
database’s structure.</p>

<p class=3DMsoNormal>You’ll probably find that it is easiest to embed your =
XML
script in the same assembly that houses your abstraction over the DataConst=
ructor
component.<span style=3D'mso-spacerun:yes'>  </span>Assuming that you’ve ma=
de
your XML file available as a resource named “DatabaseBuild” in a resource f=
ile
named “Scripts,” all you need to do is change how you construct your Struct=
ureBuilder
from what is delineated in <!--[if supportFields]><span style=3D'mso-elemen=
t:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>REF _Ref177855=
805 \h
<span style=3D'mso-element:field-separator'></span><![endif]-->Listing <span
style=3D'mso-no-proof:yes'>2</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003800350035003800300035000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
to something more like the following.</p>

<p class=3DMsoCaption>Listing <!--[if supportFields]><span style=3D'mso-ele=
ment:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>SEQ Listing \*
ARABIC <span style=3D'mso-element:field-separator'></span><![endif]--><span
style=3D'mso-no-proof:yes'>12</span><!--[if supportFields]><span
style=3D'mso-element:field-end'></span><![endif]--> – Loading an XML resour=
ce and
using it to create a StructureBuilder object</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'color:#2B91AF;mso-n=
o-proof:
yes'>XmlDocument</span><span style=3D'mso-no-proof:yes'> document =3D <span
style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>XmlDocument</=
span>();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'>d=
ocument.LoadXml(<span
style=3D'color:#2B91AF'>Scripts</span>.DatabaseBuild);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'color:#2B91AF;mso-n=
o-proof:
yes'>StructureBuilder</span><span style=3D'mso-no-proof:yes'> StructureBuil=
der =3D <o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>factory.CreateStructureBuilder(document=
.DocumentElement);<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><o:p>&nbsp;</o:p>=
</span></p>

</div>

<p class=3DMsoNormal>Now you should have the means to produce an instance o=
f StructureBuilder
which is a reflection of an XML file defining your database.</p>

<h2><a name=3D"_Toc187736493">Using Versions</a></h2>

<p class=3DMsoNormal>Now it’s time to add some meat to our XML.<span
style=3D'mso-spacerun:yes'>  </span>The easiest way to define a database us=
ing DataConstructor
is using versioning.<span style=3D'mso-spacerun:yes'>  </span>Versioning is=
 a
simplified form of the “feature-driven” mechanism we saw in the previous
section (<!--[if supportFields]><span style=3D'mso-element:field-begin'></s=
pan>
REF _Ref177856426 \h <span style=3D'mso-element:field-separator'></span><![=
endif]-->Getting
Started<!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003800350036003400320036000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->).</p>

<p class=3DMsoNormal>Version-driven DataConstructors are more linear and,
therefore, more predictable than feature-driven ones.<span
style=3D'mso-spacerun:yes'>  </span>When you are defining your database in =
terms
of features, you have the option of setting up your dependencies however you
like.<span style=3D'mso-spacerun:yes'>  </span>This means that you have more
control over how your database evolves and, with that control, comes added =
risk
and responsibility.<span style=3D'mso-spacerun:yes'>  </span>When you defin=
e a
database in terms of versions, each version builds on its predecessor.<span
style=3D'mso-spacerun:yes'>  </span>In essence, it’s like each version is a
feature that with one dependency: its predecessor.</p>

<p class=3DMsoNormal>The XML expression of Database Versions is very simple=
.<span
style=3D'mso-spacerun:yes'>  </span>The first thing you do is let DataConst=
ructor
know that your XML contains versions.<span style=3D'mso-spacerun:yes'>  </s=
pan>This
is done using the DatabaseWithVersions element.</p>

<p class=3DMsoCaption>Listing <!--[if supportFields]><span style=3D'mso-ele=
ment:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>SEQ Listing \*
ARABIC <span style=3D'mso-element:field-separator'></span><![endif]--><span
style=3D'mso-no-proof:yes'>13</span><!--[if supportFields]><span
style=3D'mso-element:field-end'></span><![endif]--> – A database XML file t=
hat
operates in versioned mode</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;?</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";color:blue;mso-no-proof:yes'> </span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>versio=
n</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";mso-no-proof:yes'>&quot;<span style=3D'color:blue'>1.0</span>=
&quot;<span
style=3D'color:blue'> </span><span style=3D'color:red'>encoding</span><span
style=3D'color:blue'>=3D</span>&quot;<span style=3D'color:blue'>utf-8</span=
>&quot;<span
style=3D'color:blue'> ?&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </sp=
an><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>xmlns</span><span style=3D'mso-bidi-font-size:8.0pt;mso-b=
idi-font-family:
"Courier New";color:blue;mso-no-proof:yes'>=3D</span><span style=3D'mso-bid=
i-font-size:
8.0pt;mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<span
style=3D'color:blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><o:p>&nbsp;=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;/</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<=
o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-f=
ont-family:
"Courier New";color:blue;mso-no-proof:yes'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=3DMsoNormal>Now you have an XML file that DataConstructor knows wi=
ll
contain “versions” and not “features.”<span style=3D'mso-spacerun:yes'> 
</span>Next, let’s translate the example spread out between <!--[if support=
Fields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177764367 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>4</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360034003300360037000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
through <!--[if supportFields]><span style=3D'mso-element:field-begin'></sp=
an><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177765638 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>8</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003700360035003600330038000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
into our new XML.<span style=3D'mso-spacerun:yes'>  </span>The first thing =
you do
is add a Version element to your document.<span style=3D'mso-spacerun:yes'> 
</span>Version has one required attribute named “Id” which is must contain a
valid .Net version (<i style=3D'mso-bidi-font-style:normal'>major</i>.<i
style=3D'mso-bidi-font-style:normal'>minor</i>[.<i style=3D'mso-bidi-font-s=
tyle:
normal'>build</i>[.<i style=3D'mso-bidi-font-style:normal'>revision</i>]]).=
<span
style=3D'mso-spacerun:yes'>  </span>In order for a version to do anything i=
t’s
also going to need a Sql element, which will contain the SQL command that
implements that version.<span style=3D'mso-spacerun:yes'>  </span><!--[if s=
upportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177857660 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>14</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003800350037003600360030000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
shows what your XML file will probably look like when you are done.<span
style=3D'mso-spacerun:yes'>  </span>NOTE: the CDATA section is not necessar=
y but
it keeps Microsoft® Visual Studio® from messing with your formatting, so it=
’s
recommended for readability’s sake.</p>

<p class=3DMsoCaption><a name=3D"_Ref177857660">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177857660'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177857660'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177857660'><span style=3D'mso-no-proof:yes'>14</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177857660'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177857660'></span> – XML that defines version 1.0=
 of a
database as having a Customers table</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;?</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";color:blue;mso-no-proof:yes'> </span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>versio=
n</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";mso-no-proof:yes'>&quot;<span style=3D'color:blue'>1.0</span>=
&quot;<span
style=3D'color:blue'> </span><span style=3D'color:red'>encoding</span><span
style=3D'color:blue'>=3D</span>&quot;<span style=3D'color:blue'>utf-8</span=
>&quot;<span
style=3D'color:blue'> ?&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </sp=
an><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>xmlns</span><span style=3D'mso-bidi-font-size:8.0pt;mso-b=
idi-font-family:
"Courier New";color:blue;mso-no-proof:yes'>=3D</span><span style=3D'mso-bid=
i-font-size:
8.0pt;mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<span
style=3D'color:blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Ve=
rsion</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'> </span><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-=
font-family:
"Courier New";color:red;mso-no-proof:yes'>Id</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</=
span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>&quot;<span style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:=
blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:3'>          </span>&lt;![CDATA[<o:p></o:p></span></=
p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>CREATE TABLE
CUSTOMERS(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Id] UNIQUEIDENTIFIER PRIMARY KEY,<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[FirstName] NVARCHAR(254),<o:p></o:p></=
span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[LastName] NVARCHAR(254))</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>]]&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;/</span><span style=3D'mso-bidi=
-font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Ve=
rsion</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;/</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<=
o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-f=
ont-family:
"Courier New";color:blue;mso-no-proof:yes'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=3DMsoNormal>With that, you can drop the programmatic definition of=
 your
Database.Structure in favor of a mechanism that is completely driven by your
XML.<span style=3D'mso-spacerun:yes'>  </span>When you are done, it should =
look
something along the lines of the code in <!--[if supportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177857986 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>15</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003800350037003900380036000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177857986">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177857986'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177857986'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177857986'><span style=3D'mso-no-proof:yes'>15</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177857986'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177857986'></span> – A resource-driven encapsulat=
ion of
the DataConstructor component</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> HexagonSoftware.DataConstructor.Contracts;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System.Data;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System.Xml;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>using</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> System.Collections.Generic;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>namespace</=
span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> HexagonSoftware.DataConstructor.Examples.Tutorial<o:p></o:p></span></=
p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span><span style=3D'color:blue'>public</span> <span style=3D'color:=
blue'>class</span>
<span style=3D'color:#2B91AF'>ResourceDrivenDatabaseStructure<o:p></o:p></s=
pan></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span><span style=3D'color:blue'>public</span> <span style=3D'co=
lor:
blue'>static</span> <span style=3D'color:blue'>void</span> UpgradeDatabase(=
<span
style=3D'color:#2B91AF'>IDbConnection</span> connection, <span style=3D'col=
or:#2B91AF'>Version</span>
identity)<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:blue'>string</span> licenseXml =3D=
 <span
style=3D'color:#2B91AF'>LicenseUtilities</span>.GetLicenseText();<o:p></o:p=
></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>Factory</span> factory =
=3D <span
style=3D'color:#2B91AF'>FactoryLocator</span>.GetFactory(licenseXml);<o:p><=
/o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>XmlDocument</span> docume=
nt =3D <span
style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>XmlDocument</=
span>();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>document.LoadXml(<span style=3D'color:#2B91AF'>Scripts<=
/span>.DatabaseBuild);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>StructureBuilder</span>
databaseStructureBuilder =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
4'>              </span>factory.CreateStructureBuilder(document.DocumentEle=
ment);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span><span style=3D'color:#2B91AF'>Structure</span>
databaseStructure =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
4'>              </span>databaseStructureBuilder.GetStructure(identity);<o:=
p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>databaseStructure.Build(dbConnection);<o:p></o:p></span=
></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>}<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>Note how much smaller it is… and it’s a little more te=
stable,
too.<span style=3D'mso-spacerun:yes'>  </span>We now have a small programma=
tic
driver for our XML database definition.</p>

<h2><a name=3D"_Toc187736494">Adding Multiple SQL Statements to Versions</a=
></h2>

<p class=3DMsoNormal>Certain platforms, such as Microsoft’s “Jet” database
engine, prohibit batches from containing more than one SQL statement.<span
style=3D'mso-spacerun:yes'>  </span>Even on industrial strength platforms s=
uch as
Microsoft’s SQL Server, you’ll find certain restrictions on which statement=
s can
be bundled into a batch.<span style=3D'mso-spacerun:yes'>  </span>DataConst=
ructor
allows you to define versions that run multiple batches in a prescribed
sequence.<span style=3D'mso-spacerun:yes'>  </span>We do this by simply add=
ing
another Sql element to our version.</p>

<p class=3DMsoNormal>For example, let’s say you want to create a table and =
then
add a column to another table that is a foreign key into the new table.<span
style=3D'mso-spacerun:yes'>  </span>You might want to do that in multiple S=
QL
statements, even if only for clarity.<span style=3D'mso-spacerun:yes'>  </s=
pan><!--[if supportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177939021 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>16</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900330039003000320031000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
shows how this might be done.</p>

<p class=3DMsoCaption><a name=3D"_Ref177939021">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177939021'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177939021'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177939021'><span style=3D'mso-no-proof:yes'>16</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177939021'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177939021'></span> – A database version that requ=
ires
multiple SQL statements to be executed</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Version</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span><sp=
an
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>Id</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi=
-font-family:
"Courier New";color:blue;mso-no-proof:yes'>=3D</span><span style=3D'mso-bid=
i-font-size:
8.0pt;mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>1.1</span>&quot;<span style=3D'color:blue'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;![CDATA[<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>CREATE TABLE
Orders(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Id] UNIQUEIDENTIFIER PRIMARY KEY,<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[CustomerId] UNIQUEIDENTIFIER NOT NULL
FOREIGN KEY REFERENCES [Customers]([Id]),<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[OrderDescription] TEXT)</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>]]&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;![CDATA[<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>ALTER TABLE
Customers ADD<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>LastOrderId UNIQUEIDENTIFIER NULL FOREI=
GN KEY
REFERENCES [Orders]([Id])</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>]]&gt;<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;/</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Version</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>We now have a version that executes multiple SQL
statements.<span style=3D'mso-spacerun:yes'>  </span>Please note that DataC=
onstructor
does not impose any rules as to how you batch your SQL statements.<span
style=3D'mso-spacerun:yes'>  </span>Only the underlying database technology=
 will
enforce any such rules.<span style=3D'mso-spacerun:yes'>  </span>That said,=
 we <i
style=3D'mso-bidi-font-style:normal'>recommend</i> splitting your versions =
up
into multiple SQL statements for the sake of readability and portability. <=
/p>

<h2><a name=3D"_Toc187736495">Versioning</a></h2>

<p class=3DMsoNormal>Versioning is the primary vehicle by which DataConstru=
ctor
delivers value.<span style=3D'mso-spacerun:yes'>  </span>It lets you have
confidence in your database upgrade path; because each version depends upon=
 its
predecessor, you know that <i style=3D'mso-bidi-font-style:normal'>all inst=
ances</i>
of your database – test and production alike – follow the exact same upgrade
path.</p>

<p class=3DMsoNormal>Most users incorporate DataConstructor into their acce=
ptance
tests so that they know that the database in production will be built or
upgraded exactly the same way as it was when it was tested.<span
style=3D'mso-spacerun:yes'>  </span>Some go as far as to specifically write
business-visible acceptance tests specifically covering a database transiti=
on –
probably not necessary every time but it certainly won’t hurt.<span
style=3D'mso-spacerun:yes'>  </span>As an aside: such a practice can lead t=
o good
conversations regarding any potential changes to your domain model.</p>

<p class=3DMsoNormal>Because you have the ability to upgrade a database to =
any
version you like, and know that you’re moving along the exact same path, ev=
ery
time, you can easily write tests that specifically target the riskiest part=
 of
database development: the transition from one version to the next.<span
style=3D'mso-spacerun:yes'>  </span>This is in addition to, rather than ins=
tead
of, the sorts of tests you would ordinarily write to ensure proper
functionality and design.<span style=3D'mso-spacerun:yes'>  </span>Targetin=
g the
quality of a transition to a version, in addition to the quality of that
version itself, gives you the same kind of control over how your database
design emerges as you are probably accustomed to having over how your code
evolves.</p>

<p class=3DMsoNormal>There is one caveat: you have to play by the rules.<sp=
an
style=3D'mso-spacerun:yes'>  </span>This probably goes without saying but o=
nce a
transition has gone to production, that’s it.<span style=3D'mso-spacerun:ye=
s'> 
</span>It is forever a part of that database’s history and should be left
intact.<span style=3D'mso-spacerun:yes'>  </span>If you need to change the =
nature
of the database it is best to add a new version that transitions away from =
that
point to another point.<span style=3D'mso-spacerun:yes'>  </span>The same i=
s true
of “injecting” versions between two versions that have already been applied=
 to
a production system: don’t.<i style=3D'mso-bidi-font-style:normal'><o:p></o=
:p></i></p>

<h2><a name=3D"_Toc187736496">Another Simple Example</a></h2>

<p class=3DMsoNormal>Now it’s time to put it all together.<span
style=3D'mso-spacerun:yes'>  </span>Take version 1.1 (as shown in <!--[if s=
upportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177939021 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>16</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900330039003000320031000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->)
and add it to your database script.<span style=3D'mso-spacerun:yes'>  </spa=
n>The
end-result should look something like <!--[if supportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177939009 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>17</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900330039003000300039000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->.</p>

<p class=3DMsoCaption><a name=3D"_Ref177939009">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177939009'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177939009'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177939009'><span style=3D'mso-no-proof:yes'>17</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177939009'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177939009'></span> – A database script with more =
than
one version</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;?</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";color:blue;mso-no-proof:yes'> </span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>versio=
n</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bid=
i-font-family:
"Courier New";mso-no-proof:yes'>&quot;<span style=3D'color:blue'>1.0</span>=
&quot;<span
style=3D'color:blue'> </span><span style=3D'color:red'>encoding</span><span
style=3D'color:blue'>=3D</span>&quot;<span style=3D'color:blue'>utf-8</span=
>&quot;<span
style=3D'color:blue'> ?&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </sp=
an><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>xmlns</span><span style=3D'mso-bidi-font-size:8.0pt;mso-b=
idi-font-family:
"Courier New";color:blue;mso-no-proof:yes'>=3D</span><span style=3D'mso-bid=
i-font-size:
8.0pt;mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<span
style=3D'color:blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Ve=
rsion</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'> </span><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-=
font-family:
"Courier New";color:red;mso-no-proof:yes'>Id</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</=
span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>&quot;<span style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:=
blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:3'>          </span>&lt;![CDATA[<o:p></o:p></span></=
p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>CREATE TABLE
CUSTOMERS(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Id] UNIQUEIDENTIFIER PRIMARY KEY,<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[FirstName] NVARCHAR(254),<o:p></o:p></=
span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[LastName] NVARCHAR(254))</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>]]&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;/</span><span style=3D'mso-bidi=
-font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Ve=
rsion</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Ve=
rsion</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'> </span><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-=
font-family:
"Courier New";color:red;mso-no-proof:yes'>Id</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</=
span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>&quot;<span style=3D'color:blue'>1.1</span>&quot;<span style=3D'color:=
blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:3'>          </span>&lt;![CDATA[<o:p></o:p></span></=
p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>CREATE TABLE
Orders(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Id] UNIQUEIDENTIFIER PRIMARY KEY,<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[CustomerId] UNIQUEIDENTIFIER NOT NULL
FOREIGN KEY REFERENCES [Customers]([Id]),<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[OrderDescription] TEXT)</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>]]&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;/</span><span style=3D'mso-bidi=
-font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:3'>          </span>&lt;![CDATA[<o:p></o:p></span></=
p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>ALTER TABLE
Customers ADD<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>LastOrderId UNIQUEIDENTIFIER NULL FOREI=
GN KEY
REFERENCES [Orders]([Id])</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>]]&gt;<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;/</span><span style=3D'mso-bidi=
-font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Ve=
rsion</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;/</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>DatabaseWithVersions</span><span style=3D'mso-bidi-font-s=
ize:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<=
o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>We now have a database definition that can do three th=
ings:</p>

<p class=3DMsoListParagraphCxSpFirst style=3D'text-indent:-.25in;mso-list:l=
0 level1 lfo1'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Upgrade an empty database to Version 1.0</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l0 level1 lfo1'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>2.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Upgrade an empty database to Version 1.1 (via
1.0)</p>

<p class=3DMsoListParagraphCxSpLast style=3D'text-indent:-.25in;mso-list:l0=
 level1 lfo1'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>3.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Upgrade a database that is already at Version
1.0 to Version 1.1</p>

<p class=3DMsoNormal>Again, please note how the database upgrade path is
linear.<span style=3D'mso-spacerun:yes'>  </span>You can choose to move for=
ward
to any point on the “timeline” (the sequence of versions) from any prior po=
int
but you must pass through all of the intermediary points to get there.</p>

<h1><a name=3D"_Toc187736497">Advanced XML</a></h1>

<p class=3DMsoSubtitle>Is there a way to embed custom behavior in an XML-de=
fined
database?</p>

<p class=3DMsoNormal>So far, you’ve developed a relatively simple database.=
<span
style=3D'mso-spacerun:yes'>  </span>Nothing has varied from one database bu=
ild to
the next (aside from the target database, itself) and there are no features
which require complex operations to which SQL is not well suited.<span
style=3D'mso-spacerun:yes'>  </span>In this section we explore two features=
 that
help you handle more complicated problems.<span style=3D'mso-spacerun:yes'> 
</span>The first is parameterization, which lets you handle the case where =
<i
style=3D'mso-bidi-font-style:normal'>data</i> varies from one build to the
next.<span style=3D'mso-spacerun:yes'>  </span>The second is placeholders, =
which
allow you to plug custom behavior in where SQL just won’t cut it.<span
style=3D'mso-spacerun:yes'>  </span>Both features still operate within the
harness of DataConstructor and their use can be tested to the point of
confidence.<span style=3D'mso-spacerun:yes'>  </span>Both of these features=
 are
delineated in the following two sections.</p>

<h2><a name=3D"_Toc187736498">Parameterization</a></h2>

<p class=3DMsoSubtitle style=3D'page-break-after:avoid'>Is there a way to a=
void
hard-coding values?</p>

<p class=3DMsoNormal>Sometimes there are parts of your database upgrade pat=
h that
you specifically <i style=3D'mso-bidi-font-style:normal'>want</i> to vary.<=
span
style=3D'mso-spacerun:yes'>  </span>Often this has to do with domain data.<=
span
style=3D'mso-spacerun:yes'>  </span>For instance, you may want to be able to
decide the starting value for a counter in a database right when you build =
that
database.<span style=3D'mso-spacerun:yes'>  </span>Another example would be=
 if a
database needs to contain some self-identifying data that cannot safely be
assumed until the moment that data needs to be inserted.<span
style=3D'mso-spacerun:yes'>  </span>These are cases for using the Variables
feature.</p>

<p class=3DMsoNormal>Variables allow certain data in your database to fluct=
uate
at upgrade-time in a controlled way.<span style=3D'mso-spacerun:yes'>  </sp=
an>In
some cases, it’s fine to hard-code domain data.<span style=3D'mso-spacerun:=
yes'> 
</span>On the other hand, there are cases, such as when you are preparing an
existing database to accept data from a company you just purchased, hard-co=
ding
won’t do.<span style=3D'mso-spacerun:yes'>  </span>One might argue that no =
values
should be hard-coded.<span style=3D'mso-spacerun:yes'>  </span>It’s your
prerogative: there are costs and benefits to be weighed whenever you make
something parameterized.</p>

<p class=3DMsoNormal>There are 3 steps required to parameterize your databa=
se
upgrade script.</p>

<p class=3DMsoListParagraphCxSpFirst style=3D'text-indent:-.25in;mso-list:l=
3 level1 lfo4'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Declare a parameter in one of your SQL comma=
nds
and bind it to a Variable.</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l3 level1 lfo4'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>2.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Use the declared parameter in that command.<=
/p>

<p class=3DMsoListParagraphCxSpLast style=3D'text-indent:-.25in;mso-list:l3=
 level1 lfo4'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>3.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>“Punch a hole” in your encapsulation of your
build script so that a value can be specified for the Variable mentioned in
step 1.</p>

<p class=3DMsoNormal>Step 1 may be a little confusing to you.<span
style=3D'mso-spacerun:yes'>  </span>That’s okay.<span style=3D'mso-spacerun=
:yes'> 
</span>The distinction between a variable and a parameter is not obvious.<s=
pan
style=3D'mso-spacerun:yes'>  </span>Variables are global to a database
build.<span style=3D'mso-spacerun:yes'>  </span>They are defined when you u=
pgrade
your database and evaporate as soon as the process is complete.<span
style=3D'mso-spacerun:yes'>  </span>Parameters have a much, much, shorter
lifespan.<span style=3D'mso-spacerun:yes'>  </span>They are only relevant w=
hen a
command is being executed.<span style=3D'mso-spacerun:yes'>  </span>If a ve=
rsion
has been applied or will not be applied then they never get used.</p>

<h3><a name=3D"_Toc187736499">Variables are for Deferring Commitment</a></h=
3>

<p class=3DMsoNormal>Since Variables were designed with time-sensitive, vol=
atile,
initial values in mind, they only apply at the moment they are used, so onc=
e a
parameterized version has been applied to a database, the arguments used are
lost forever.<span style=3D'mso-spacerun:yes'>  </span>DataConstructor make=
s no
effort to track the values you specified; the only traces will be the impact
your variables had on the database itself.<span style=3D'mso-spacerun:yes'> 
</span>Variables are not considered to be part of the identity of a version=
.<span
style=3D'mso-spacerun:yes'>  </span>That is: you cannot cause a version tha=
t has
already been imposed on a database to be reapplied by specifying a different
value for one of the variables that version uses.</p>

<h3><a name=3D"_Toc187736500">Using Variables in XML</a></h3>

<p class=3DMsoNormal>In order to leverage a variable you will first need to=
 use
an element named “Command,” in one of your Versions.<span
style=3D'mso-spacerun:yes'>  </span>The Sql element is actually a simplifie=
d form
of Command which cannot have any parameters.<span style=3D'mso-spacerun:yes=
'> 
</span>The Command element has a required child named “Sql” which contains =
the
SQL script to be applied.<span style=3D'mso-spacerun:yes'>  </span><!--[if =
supportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177941560 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>18</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900340031003500360030000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
shows an example Command which does not use any parameters.</p>

<p class=3DMsoCaption><a name=3D"_Ref177941560">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177941560'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177941560'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177941560'><span style=3D'mso-no-proof:yes'>18</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177941560'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177941560'></span> – A Command element with no
parameters</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Command</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;![CDATA[<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>INSERT INTO=
 [Counters]([Name],
[Value]) VALUES('Global.MyCounter', 100000) </span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>]]&gt=
;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;/</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Command</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:8.0pt;mso-bidi-f=
ont-family:
"Courier New";color:blue;mso-no-proof:yes'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=3DMsoNormal>This will certainly populate a table with a counter va=
lue
but does not meet the requirement of allowing that starting value to vary.<=
span
style=3D'mso-spacerun:yes'>  </span>In order to be able to adjust part of y=
our
SQL statement, you’ll need to introduce a Parameter element to your
command.<span style=3D'mso-spacerun:yes'>  </span><!--[if supportFields]><s=
pan
style=3D'mso-element:field-begin'></span><span style=3D'mso-spacerun:yes'> =
</span>REF
_Ref177942495 \h <span style=3D'mso-element:field-separator'></span><![endi=
f]-->Listing
<span style=3D'mso-no-proof:yes'>19</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900340032003400390035000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
shows an example of binding a parameter to a command using this element.</p>

<p class=3DMsoCaption><a name=3D"_Ref177942495">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177942495'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177942495'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177942495'><span style=3D'mso-no-proof:yes'>19</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177942495'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177942495'></span> – A Command element with one
parameter (SQL Server’s “T-SQL” Syntax)</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Command</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Pa=
rameter</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Na=
me</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bi=
di-font-family:
"Courier New";mso-no-proof:yes'>@CounterValue<span style=3D'color:blue'>&lt=
;/</span><span
style=3D'color:#A31515'>Name</span><span style=3D'color:blue'>&gt;<o:p></o:=
p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;</span><span style=3D'mso-bidi-=
font-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Va=
riable</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;</span><span style=3D'mso-bidi-font-size:8.0pt;mso-bi=
di-font-family:
"Courier New";mso-no-proof:yes'>Global.MyCounter.StartValue<span
style=3D'color:blue'>&lt;/</span><span style=3D'color:#A31515'>Variable</sp=
an><span
style=3D'color:blue'>&gt;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Pa=
rameter</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;</span><span style=3D'mso-bidi-font=
-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:2'>       </span>&lt;![CDATA[<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:gray;mso-no-proof:yes'>INSERT INTO
[Counters]([Name], [Value]) VALUES('Global.MyCounter', @CounterValue) </spa=
n><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>]]&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>&lt;/</span><span style=3D'mso-bidi-fon=
t-size:
8.0pt;mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Sq=
l</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&gt;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;/</span=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Command</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>Now you should have a database upgrade script capable =
of
inserting an initial counter-value into your database but that allows you t=
o commit
to a specific value at the last responsible moment.<span
style=3D'mso-spacerun:yes'>  </span>You may have noticed that, while your
database build script knows about this variable, nothing else in your progr=
am
does.<span style=3D'mso-spacerun:yes'>  </span>There is no way to actually
specify a value for this variable in anything we’ve written, thus far.<span
style=3D'mso-spacerun:yes'>  </span>That’s the next step.</p>

<h3><a name=3D"_Toc187736501">Binding Values to Variables</a></h3>

<p class=3DMsoNormal>Earlier you built an abstraction that passes an instan=
ce of
System.Data.IDbConnection into the Structure.Build() method.<span
style=3D'mso-spacerun:yes'>  </span>That overload is just a simplified wrap=
per
for the real “Build” method, which accepts an instance of DataConstructor’s=
 DataBuildParameters
interface.<span style=3D'mso-spacerun:yes'>  </span>The DataBuildParameters
interface has two properties: “Connection,” which holds a reference to the
target database, and “Arguments,” which stores any variables you require.</=
p>

<p class=3DMsoNormal>To start using the more comprehensive overload of Stru=
cture.Build,
you’ll need to take six steps:</p>

<p class=3DMsoListParagraphCxSpFirst style=3D'text-indent:-.25in;mso-list:l=
4 level1 lfo2'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Use factory.CreateDataBuildParameters, to
instantiate the parameters object</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l4 level1 lfo2'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>2.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Use factory.CreateDatabaseConnection, to
instantiate an instance of DatabaseConnection</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l4 level1 lfo2'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>3.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Bind your DatabaseConnection into the
DataBuildParameters object created in step 1</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l4 level1 lfo2'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>4.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Bind your ADO.NET connection into the
DatabaseConnection object created in step 2</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l4 level1 lfo2'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>5.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Apply any parameter-bindings to the DataBuil=
dParameters.Arguments
property</p>

<p class=3DMsoListParagraphCxSpLast style=3D'text-indent:-.25in;mso-list:l4=
 level1 lfo2'><![if !supportLists]><span
style=3D'mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin'><span
style=3D'mso-list:Ignore'>6.<span style=3D'font:7.0pt "Times New Roman"'>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Call Structure.Build(DataBuildParameters)
instead of Structure.Build(IDbConnection)</p>

<p class=3DMsoNormal><!--[if supportFields]><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177943378 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>20</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900340033003300370038000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
demonstrates how you might do this.</p>

<p class=3DMsoCaption><a name=3D"_Ref177943378">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177943378'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177943378'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177943378'><span style=3D'mso-no-proof:yes'>20</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177943378'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177943378'></span> – Binding a value to a paramet=
er</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>DataBuil=
dParameters</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> buildParameters =3D factory.CreateDataBuildParameters();<o:p></o:p></=
span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>Database=
Connection</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> dbConnection =3D factory.CreateDatabaseConnection();<o:p></o:p></span=
></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>dbConnection.DatabaseC=
onnection
=3D connection;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>buildParameters.Connec=
tion
=3D dbConnection;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>buildParameters.Variab=
les[<span
style=3D'color:#A31515'>&quot;Global.MyCounter.StartValue&quot;</span>] =3D=
 25000;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>databaseStructure.Buil=
d(buildParameters);<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal>Doubtless, you will probably derive a more elegant sol=
ution
than hard-coding the value of the variable in your encapsulation of DataCon=
structor
but this conveys the basic mechanism.</p>

<h3><a name=3D"_Toc187736502">Variables are Transient</a></h3>

<p class=3DMsoNormal>Please remember that variables have a very short lifes=
pan;
if you want to capture what variable was used to implement a certain versio=
n,
you will need to devise a mechanism to do this yourself.<span
style=3D'mso-spacerun:yes'>  </span>Variables are also completely unconstra=
ined.<span
style=3D'mso-spacerun:yes'>  </span>It is assumed that the value you bind i=
n to DataConstructor
is acceptable.<span style=3D'mso-spacerun:yes'>  </span>If you need additio=
nal
validation, such as ensuring that a counter value is non-negative, you will
need to either do that in your database XML as part of the version that use=
s a
variable, in your encapsulation of DataConstructor, or both.</p>

<h2><a name=3D"_Toc187736503">Placeholders</a></h2>

<p class=3DMsoSubtitle>Is there a way to plug in custom bits of behavior?</=
p>

<p class=3DMsoNormal>Not everything can be expressed as SQL.<span
style=3D'mso-spacerun:yes'>  </span>Certain database upgrade behaviors are =
going
to need to be defined in terms of code.<span style=3D'mso-spacerun:yes'> 
</span>This is where the Placeholders feature can come in handy.<span
style=3D'mso-spacerun:yes'>  </span>In a DataConstructor XML script you can=
 leave
an “empty spot” wherever a Version or a Command should be, in the form of a
Placeholder.<span style=3D'mso-spacerun:yes'>  </span>The placeholders pres=
ent
themselves as actual commands but their behavior can be defined dynamically,
after a StructureBuilder has been instantiated but before it produces a Str=
ucture
object.</p>

<h3><a name=3D"_Toc187736504">Defining a Placeholder in XML</a></h3>

<p class=3DMsoNormal>Placeholder versions will not be covered in this docum=
ent
because you can simulate them by wrapping a similar Placeholder statement i=
n a
version and using placeholder statements is both safer and more
straightforward.<span style=3D'mso-spacerun:yes'>  </span>To define a place=
holder
statement within a version, you simply use the Placeholder element where you
would have put a Sql or Command element.<span style=3D'mso-spacerun:yes'> 
</span>The content of the Placeholder element is treated as the name of the
placeholder, which will come in handy once it’s time to bind in behavior.</=
p>

<p class=3DMsoCaption>Listing <!--[if supportFields]><span style=3D'mso-ele=
ment:
field-begin'></span><span style=3D'mso-spacerun:yes'> </span>SEQ Listing \*
ARABIC <span style=3D'mso-element:field-separator'></span><![endif]--><span
style=3D'mso-no-proof:yes'>21</span><!--[if supportFields]><span
style=3D'mso-element:field-end'></span><![endif]--> – XML defining a placeh=
older</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&lt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>Placeholder</span><span style=3D'mso-bidi-font-size:8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;</span>=
<span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>ConfirmThatItIsDone<span style=3D'color:blue'>&lt;/</span><span
style=3D'color:#A31515'>Placeholder</span><span style=3D'color:blue'>&gt;<o=
:p></o:p></span></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<h3><a name=3D"_Toc187736505">Binding Behavior to a Placeholder</a></h3>

<p class=3DMsoNormal>Once you obtain a StructureBuilder object, it’s time t=
o bind
behaviors in to the placeholders.<span style=3D'mso-spacerun:yes'>  </span>=
To do
this you need to obtain the Version hosting the placeholder, use that to ob=
tain
the placeholder, and bind a “command builder” to the placeholder.<span
style=3D'mso-spacerun:yes'>  </span>The “command builder” must, in turn, be=
 able
to produce an instance of “Command,” which is what will perform the custom
action, if needed.<span style=3D'mso-spacerun:yes'>  </span>That probably s=
ounds
like a lot of work but <!--[if supportFields]><span style=3D'mso-element:fi=
eld-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref181348256 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>22</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100380031003300340038003200350036000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
shows that it is not that bad.</p>

<p class=3DMsoCaption><a name=3D"_Ref181348256">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref181348256'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref181348256'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref181348256'><span style=3D'mso-no-proof:yes'>22</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref181348256'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref181348256'></span> – Binding a placeholder “Comma=
ndBuilder”
into an incomplete version</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>ScriptFe=
atureBuilder</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> incompleteFeatureBuilder =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>(<span style=3D'color:#2B91AF'>ScriptFeatureBuilder</span>)dat=
abaseStructureBuilder.GetFeatureBuilder(<span
style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>Version</span=
>(1,
2));<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>Placehol=
derCommandBuilder</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> placeholderCommandBuilder =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>incompleteFeatureBuilder.GetPlaceholder(<span style=3D'color:#=
A31515'>&quot;ConfirmThatItIsDone&quot;</span>);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>placeholderCommandBuil=
der.ActualCommandBuilder
=3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span><span style=3D'color:#2B91AF'>ConfirmCompletionCommandBuilder<=
/span>.GetInstance();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:green;mso-no-proof:yes'><o:p>&nbsp=
;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:green;mso-no-proof:yes'>// ...<o:p=
></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'color:blue;mso-no-p=
roof:
yes'>internal</span><span style=3D'mso-no-proof:yes'> <span style=3D'color:=
blue'>class</span>
<span style=3D'color:#2B91AF'>ConfirmCompletionCommandBuilder</span> <o:p><=
/o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>: <span style=3D'color:#2B91AF'>Command=
Builder<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'>{=
<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span><span style=3D'color:blue'>public</span=
> <span
style=3D'color:#2B91AF'>Command</span> GetCommand()<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:2'>       </span><span style=3D'color:blue'>return</=
span> <span
style=3D'color:#2B91AF'>ConfirmCompletionCommand</span>.GetInstance();<o:p>=
</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span><span style=3D'color:blue'>public</span=
> <span
style=3D'color:#2B91AF'>IEnumerable</span>&lt;<span style=3D'color:#2B91AF'=
>RuleBuilder</span>&gt;
ImpliedRules<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:2'>       </span><span style=3D'color:blue'>get</spa=
n> { <span
style=3D'color:blue'>return</span> <span style=3D'color:blue'>new</span> <s=
pan
style=3D'color:#2B91AF'>RuleBuilder</span>[0]; }<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span><span style=3D'color:blue'>public</span=
> <span
style=3D'color:blue'>static</span> <span style=3D'color:#2B91AF'>ConfirmCom=
pletionCommandBuilder</span>
GetInstance()<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:2'>       </span><span style=3D'color:blue'>return</=
span> <span
style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>ConfirmComple=
tionCommandBuilder</span>();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'>}=
<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'color:blue;mso-no-p=
roof:
yes'>internal</span><span style=3D'mso-no-proof:yes'> <span style=3D'color:=
blue'>class</span>
<span style=3D'color:#2B91AF'>ConfirmCompletionCommand</span> : <span
style=3D'color:#2B91AF'>Command<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'>{=
<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span><span style=3D'color:blue'>public</span=
> <span
style=3D'color:blue'>void</span> Execute(<span style=3D'color:#2B91AF'>Data=
BuildParameters</span>
parameters)<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:2'>       </span><span style=3D'color:#2B91AF'>Conso=
le</span>.WriteLine(<span
style=3D'color:#A31515'>&quot;Completed&quot;</span>);<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span><span style=3D'color:blue'>public</span=
> <span
style=3D'color:blue'>static</span> <span style=3D'color:#2B91AF'>ConfirmCom=
pletionCommand</span>
GetInstance()<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:2'>       </span><span style=3D'color:blue'>return</=
span> <span
style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>ConfirmComple=
tionCommand</span>();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'><=
span
style=3D'mso-tab-count:1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-no-proof:yes'>}=
<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<h3><a name=3D"_Toc187736506">The Catch: Working with Transactions</a></h3>

<p class=3DMsoNormal>There’s a catch, here.<span style=3D'mso-spacerun:yes'=
> 
</span>DataConstructor uses the System.Transactions namespace to take advan=
tage
of things such as implicit promotion to Enterprise transactions and .Net “a=
mbient”
transactions (transactions created using the
System.Transactions.TransactionScope class).<span style=3D'mso-spacerun:yes=
'> 
</span>The problem is that not all ADO.Net providers support
System.Transactions – at least, not in .Net 2.0.<span
style=3D'mso-spacerun:yes'>  </span>So DataConstructor uses an adapter that=
 promotes
ADO.Net transactions into the ambient transaction obtained through
System.Transactions.Transaction.Current.<span style=3D'mso-spacerun:yes'> 
</span>There are a number of hoops through which DataConstructor must jump =
to
accomplish this.</p>

<p class=3DMsoNormal>Rather than expose the solution DataConstructor uses a=
nd
force you to jump through those hoops, we’ve exposed a method on the Databa=
seConnection
interface (which can be found in the DataBuildParameters object passed in to
all instances of Command) that handles it all for you.<span
style=3D'mso-spacerun:yes'>  </span>The method is called
“ExecuteActionAgainstCommandInTransaction.”<span style=3D'mso-spacerun:yes'=
> 
</span>It accepts an instance of
System.Action&lt;System.Data.IDbCommand&gt;.<span style=3D'mso-spacerun:yes=
'> 
</span>The action you pass in should be responsible for everything having t=
o do
with the command except for construction and disposal.<span
style=3D'mso-spacerun:yes'>  </span><!--[if supportFields]><span
style=3D'mso-element:field-begin'></span><span
style=3D'mso-spacerun:yes'> </span>REF _Ref177947257 \h <span style=3D'mso-=
element:
field-separator'></span><![endif]-->Listing <span style=3D'mso-no-proof:yes=
'>23</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100370037003900340037003200350037000000</w:data>
</xml><![endif]--><!--[if supportFields]><span style=3D'mso-element:field-e=
nd'></span><![endif]-->
demonstrates how this is used in a whimsical implementation of Command.</p>

<p class=3DMsoCaption><a name=3D"_Ref177947257">Listing </a><!--[if support=
Fields]><span
style=3D'mso-bookmark:_Ref177947257'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Ref177947257'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
><![endif]--><span
style=3D'mso-bookmark:_Ref177947257'><span style=3D'mso-no-proof:yes'>23</s=
pan></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Ref177947257'></span><span style=3D'mso-element:fiel=
d-end'></span><![endif]--><span
style=3D'mso-bookmark:_Ref177947257'></span> – Filling a table with random =
values
using a placeholder</p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>internal</s=
pan><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'> <span style=3D'color:blue'>class</span> <span style=3D'color:#2B91AF'=
>FillWithRandomNumbersCommand</span>
: <span style=3D'color:#2B91AF'>Command<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span><span style=3D'color:green'>// ...<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:green;mso-no-proof:yes'><o:p>&nbsp=
;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span><span style=3D'color:blue'>public</span> <span style=3D'color:=
blue'>void</span>
Execute(<span style=3D'color:#2B91AF'>DataBuildParameters</span> parameters=
)<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span><span style=3D'color:#2B91AF'>DatabaseConnection</span>
dbConnection =3D (<span style=3D'color:#2B91AF'>DatabaseConnection</span>)p=
arameters.Connection;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span><span style=3D'color:#2B91AF'>Random</span> random =3D <sp=
an
style=3D'color:blue'>new</span> <span style=3D'color:#2B91AF'>Random</span>=
();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span><span style=3D'color:blue'>for</span> (<span style=3D'colo=
r:blue'>int</span>
i =3D 0; i &lt; 1000; ++i)<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
2'>       </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
3'>          </span>dbConnection.ExecuteActionAgainstCommandInTransaction(<=
o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
4'>              </span><span style=3D'color:blue'>delegate</span>(<span
style=3D'color:#2B91AF'>IDbCommand</span> obj)<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
4'>              </span>{<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>obj.CommandText =3D<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>@&quot;I=
NSERT
INTO SecurityRows(<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>[Order], [Value])<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>VALUES(<=
o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'><span
style=3D'mso-tab-count:1'>   </span>@Order, @Value)&quot;</span><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span><span style=3D'color:#2B91AF'>IDbDataParameter</=
span>
parameter =3D obj.CreateParameter();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>parameter.ParameterName =3D <span style=3D'color=
:#A31515'>&quot;@Order&quot;</span>;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>parameter.Value =3D i;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>obj.Parameters.Add(parameter);<o:p></o:p></span>=
</p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span><o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>parameter =3D obj.CreateParameter();<o:p></o:p><=
/span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>parameter.ParameterName =3D <span style=3D'color=
:#A31515'>&quot;@Value&quot;</span>;<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>parameter.Value =3D random.Next();<o:p></o:p></s=
pan></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><o:p>&nbsp;</o:p></spa=
n></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
5'>                 </span>obj.ExecuteNonQuery();<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
4'>              </span>});<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span><span style=3D'mso-tab-count:1'>   </span>}<o:p></o:p></span><=
/p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'><span style=3D'mso-tab=
-count:
1'>   </span>}<o:p></o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bidi-font-size:=
8.0pt;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>}<o:p></o:p></span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><o:p>&nbsp;</o:p></p>

</div>

<h3><a name=3D"_Toc187736507">The Other Catch: Flexibility with a Chance of
Flimsiness</a></h3>

<p class=3DMsoNormal>Using Placeholders could potentially introduce weaknes=
ses in
to your design.<span style=3D'mso-spacerun:yes'>  </span>They don’t have to=
 and,
if you use them right, they won’t… but they <i style=3D'mso-bidi-font-style=
:normal'>could</i>.<span
style=3D'mso-spacerun:yes'>  </span>Really this is true of all DataConstruc=
tor’s
features but it’s highly evident in the case of placeholders because they g=
ive
you the opportunity to plug a strategy in to your database build process.<s=
pan
style=3D'mso-spacerun:yes'>  </span>The rule of thumb should be “encapsulat=
e your
StructureBuilder and test that encapsulation to death.”<span
style=3D'mso-spacerun:yes'>  </span>If nobody has access to the StructureBu=
ilder,
then no gremlins can sneak in and cause trouble.<span
style=3D'mso-spacerun:yes'>  </span>If the StructureBuilder is accessible, =
some
well intentioned programmer can accidentally introduce unwanted variance in=
 the
resulting Structure’s behavior.</p>

<h1><a name=3D"_Toc187736508">The XML Platform</a></h1>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>As of versi=
on 1.4,
DataConstructor can target more than just databases.<span
style=3D'mso-spacerun:yes'>  </span>You now can directly target an XML file=
.<span
style=3D'mso-spacerun:yes'>  </span>This is, largely, an extension of the s=
ame
technology that DataConstructor uses to build databases.<span
style=3D'mso-spacerun:yes'>  </span>Aside from the kinds of CommandBuilder
objects involved, the players are all the same.<span style=3D'mso-spacerun:=
yes'> 
</span>A complete example is included in the examples which accompany
DataConstructor.</span></p>

<h2><span style=3D'mso-bookmark:_Toc187736508'>Only Versioning Supported</s=
pan></h2>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>We have not=
hing
against Features in their raw form.<span style=3D'mso-spacerun:yes'>  </spa=
n>When
we first developed Database Builder (DataConstructor’s predecessor), it <i
style=3D'mso-bidi-font-style:normal'>only</i> supported Features with decla=
rative
dependencies.<span style=3D'mso-spacerun:yes'>  </span>That mode will never=
 go
away for two reasons:</span></p>

<p class=3DMsoListParagraphCxSpFirst style=3D'text-indent:-.25in;mso-list:l=
2 level1 lfo5'><span
style=3D'mso-bookmark:_Toc187736508'><![if !supportLists]><span style=3D'ms=
o-bidi-font-family:
Calibri;mso-bidi-theme-font:minor-latin'><span style=3D'mso-list:Ignore'>1.=
<span
style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 </span></span></span><![endif]>It
is the engine that drives the versioned modes.</span></p>

<p class=3DMsoListParagraphCxSpLast style=3D'text-indent:-.25in;mso-list:l2=
 level1 lfo5'><span
style=3D'mso-bookmark:_Toc187736508'><![if !supportLists]><span style=3D'ms=
o-bidi-font-family:
Calibri;mso-bidi-theme-font:minor-latin'><span style=3D'mso-list:Ignore'>2.=
<span
style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 </span></span></span><![endif]>Certain
features, such as the registry table in a database, do not fit into the lin=
ear
structure required by versioning. </span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>However, th=
ere does
not appear to be any interest in our customer base regarding the ability to
define a database in the more free-form style.<span style=3D'mso-spacerun:y=
es'> 
</span>Generally, Versioning provides a more stable and testable migration
path.<span style=3D'mso-spacerun:yes'>  </span>If you care about this featu=
re,
let us know and we’ll put it on our backlog.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>In order to=
 create
an upgrade script for an XML data store, we start out with something like <=
/span><!--[if supportFields]><span
style=3D'mso-bookmark:_Toc187736508'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-spacerun:yes'> </sp=
an>REF
_Ref187781414 \h <span style=3D'mso-element:field-separator'></span></span>=
<![endif]--><span
style=3D'mso-bookmark:_Toc187736508'>Listing <span style=3D'mso-no-proof:ye=
s'>24</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100380037003700380031003400310034000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'mso-bookmark=
:_Toc187736508'></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Toc187736508'>.</span></p>

<p class=3DMsoCaption><span style=3D'mso-bookmark:_Toc187736508'><a
name=3D"_Ref187781414">Listing </a></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187781=
414'></span></span><span
style=3D'mso-element:field-begin'></span><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bookmark:_Ref187781414'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
></span><![endif]--><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187781=
414'><span
style=3D'mso-no-proof:yes'>24</span></span></span><!--[if supportFields]><s=
pan
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187781=
414'></span></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Toc187736508'><span style=3D'mso-bookmark:_Ref187781414'></span> – Upgrade
script to initialize an XML Data Store</span></p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;?</span></span><span style=3D'mso-bookmark:_Toc187736=
508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span></span><span style=3D'mso-bookmark:_Toc18773650=
8'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'> </span></span><span style=3D'mso-bookmark:_Toc187736508'=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>version</span></span><span style=3D'mso-bookmark:_Toc1877=
36508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span></span><span style=3D'mso-bookmark:_Toc18773650=
8'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>&quot;<span style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:=
blue'> </span><span
style=3D'color:red'>encoding</span><span style=3D'color:blue'>=3D</span>&qu=
ot;<span
style=3D'color:blue'>utf-8</span>&quot;<span style=3D'color:blue'> ?&gt;<o:=
p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;</span></span><span style=3D'mso-bookmark:_Toc1877365=
08'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>dc:XmlDataStoreWithVersions<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>xmlns:dc</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>xmlns:xslt</=
span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://www.w3.org/1999/XSL/Transform</span>&quot;<o:p>=
</o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Create</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>true</span>&quot;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Severability=
</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Atomic</span>&quot;<span style=3D'color:blue'>&gt;<o:p=
></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;/</span></span><span style=3D'mso-bookmark:_Toc187736=
508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>dc:XmlDataStoreWithVersions</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;</span>=
</span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc187736508'><o:p>&n=
bsp;</o:p></span></p>

</div>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>This will d=
efine a
StructureBuilder that does, literally, nothing.<span style=3D'mso-spacerun:=
yes'> 
</span>Unlike Databases, there is no such thing as an empty XML document: y=
ou
need a root element.</span></p>

<h2><span style=3D'mso-bookmark:_Toc187736508'>InsertXml</span></h2>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>When you cr=
eate a
new XML document, it will not have a root element.<span
style=3D'mso-spacerun:yes'>  </span>Thus: it will not be valid and cannot be
saved.<span style=3D'mso-spacerun:yes'>  </span>Likewise, XSLT cannot be ap=
plied
to bootstrap the document.<span style=3D'mso-spacerun:yes'>  </span>The Ins=
ertXml
command addresses this problem by letting you define some initial data.</sp=
an></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>Most of the=
 time,
this will just be a single, root element (the Document Element).<span
style=3D'mso-spacerun:yes'>  </span>Sometimes you will need more.<span
style=3D'mso-spacerun:yes'>  </span>You may define the initial structure of=
 an
XML as you please.<span style=3D'mso-spacerun:yes'>  </span>Again: a good, =
solid
frame of tests will help you determine what that actually should be.</span>=
</p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>The InsertX=
ml
command, currently, only appends the element as a child element of the targ=
et
document.<span style=3D'mso-spacerun:yes'>  </span>This means that it can <i
style=3D'mso-bidi-font-style:normal'>only</i> create an entire document and
cannot inject data into an existing document.<span style=3D'mso-spacerun:ye=
s'> 
</span>It is meant to support creating an XML file from scratch so it will =
do
nothing if there is already a Document Element.<span style=3D'mso-spacerun:=
yes'> 
</span>This allows you to start using Data Constructor on XML that is alrea=
dy
live.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>Below (</sp=
an><!--[if supportFields]><span
style=3D'mso-bookmark:_Toc187736508'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Toc187736508'> REF _Ref187782056 \h <span
style=3D'mso-element:field-separator'></span></span><![endif]--><span
style=3D'mso-bookmark:_Toc187736508'>Listing <span style=3D'mso-no-proof:ye=
s'>25</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100380037003700380032003000350036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'mso-bookmark=
:_Toc187736508'></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Toc187736508'>) is an example of how to use this command.<span
style=3D'mso-spacerun:yes'>  </span>In Version 1.0 o four file format, we j=
ust
place a “Data” node at the root of our document (if it does not exist).</sp=
an></p>

<p class=3DMsoCaption><span style=3D'mso-bookmark:_Toc187736508'><a
name=3D"_Ref187782056">Listing </a></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187782=
056'></span></span><span
style=3D'mso-element:field-begin'></span><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bookmark:_Ref187782056'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
></span><![endif]--><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187782=
056'><span
style=3D'mso-no-proof:yes'>25</span></span></span><!--[if supportFields]><s=
pan
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187782=
056'></span></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Toc187736508'><span style=3D'mso-bookmark:_Ref187782056'></span> – InsertX=
ml
command in version 1.0</span></p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;?</span></span><span style=3D'mso-bookmark:_Toc187736=
508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span></span><span style=3D'mso-bookmark:_Toc18773650=
8'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'> </span></span><span style=3D'mso-bookmark:_Toc187736508'=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>version</span></span><span style=3D'mso-bookmark:_Toc1877=
36508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span></span><span style=3D'mso-bookmark:_Toc18773650=
8'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>&quot;<span style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:=
blue'> </span><span
style=3D'color:red'>encoding</span><span style=3D'color:blue'>=3D</span>&qu=
ot;<span
style=3D'color:blue'>utf-8</span>&quot;<span style=3D'color:blue'> ?&gt;<o:=
p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;</span></span><span style=3D'mso-bookmark:_Toc1877365=
08'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>dc:XmlDataStoreWithVersions<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>xmlns:dc</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>xmlns:xslt</=
span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://www.w3.org/1999/XSL/Transform</span>&quot;<o:p>=
</o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Create</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>true</span>&quot;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Severability=
</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Atomic</span>&quot;<span style=3D'color:blue'>&gt;<o:p=
></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span>&lt;</span></sp=
an><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Versi=
on<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span></span></sp=
an><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Id</span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:blue'>&gt;<o:p></=
o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span>&lt;</span>=
</span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Inser=
tXml<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:3'>          </span></span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>IntoRoot</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>true</span>&quot;<span style=3D'color:blue'>&gt;<o:p><=
/o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:3'>          </span>&lt;</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Data</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> /&gt;<o:p>=
</o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span>&lt;/</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Inser=
tXml</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span>&lt;/</span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Versi=
on</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;/</span></span><span style=3D'mso-bookmark:_Toc187736=
508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>dc:XmlDataStoreWithVersions</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;</span>=
</span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc187736508'><o:p>&n=
bsp;</o:p></span></p>

</div>

<h2><span style=3D'mso-bookmark:_Toc187736508'>ApplyXslt</span></h2>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>Like the Sq=
l and
Command elements for database structures, ApplyXslt is the primary Vehicle =
for
metamorphosing an XML file.<span style=3D'mso-spacerun:yes'>  </span>This
command, as the name implies, applies an XSLT stylesheet to the document in
order to transform its content.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>Unlike the =
Sql and
Command elements, we did not define a shorthand (non-parameterized) form (e=
.g.:
the Sql element).<span style=3D'mso-spacerun:yes'>  </span>XSLT is an old
standard and there are no good XSDs for it.<span style=3D'mso-spacerun:yes'=
> 
</span>In fact, it uses DTD instead of XSD.<span style=3D'mso-spacerun:yes'=
> 
</span>A consequence of this is that there is no distinction between XML
element name and underlying type.<span style=3D'mso-spacerun:yes'>  </span>=
The
element is the type and the type is the element, every time.<span
style=3D'mso-spacerun:yes'>  </span>What does that mean?<span
style=3D'mso-spacerun:yes'>  </span>It means we had to have an “xslt:styles=
heet”
element, somewhere.<span style=3D'mso-spacerun:yes'>  </span>It would not d=
o to
just have them floating freely inside a Version and, once we’d wrapped them=
 in
the ApplyXslt element there was really no point in trying to offer a
shorter-form: if you don’t want parameters, just don’t use them.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>If you want=
 to copy
everything (attributes and elements alike), you have two options:</span></p>

<p class=3DMsoListParagraphCxSpFirst style=3D'text-indent:-.25in;mso-list:l=
1 level1 lfo6'><span
style=3D'mso-bookmark:_Toc187736508'><![if !supportLists]><span style=3D'ms=
o-bidi-font-family:
Calibri;mso-bidi-theme-font:minor-latin'><span style=3D'mso-list:Ignore'>1.=
<span
style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 </span></span></span><![endif]>Use
“apply-templates” and be careful to set the “select” attribute appropriatel=
y.</span></p>

<p class=3DMsoListParagraphCxSpLast style=3D'text-indent:-.25in;mso-list:l1=
 level1 lfo6'><span
style=3D'mso-bookmark:_Toc187736508'><![if !supportLists]><span style=3D'ms=
o-bidi-font-family:
Calibri;mso-bidi-theme-font:minor-latin'><span style=3D'mso-list:Ignore'>2.=
<span
style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 </span></span></span><![endif]>Call
a template we provide for you named “dc_CopyAll.”</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>If you don’=
t want
to have to define identity mappings for the data you want to leave as-is, u=
se the
CopyUnmatchedNodes attribute to put your stylesheet in “surgical” mode – it
will leave unmolested any nodes that are not matched by templates in your
stylesheet.<span style=3D'mso-spacerun:yes'>  </span>This only works for no=
des
that have templates applied to them.<span style=3D'mso-spacerun:yes'> 
</span>Unfortunately, at least for the Microsoft implementation of XSLT,
attributes are not included in the default selection set for “apply-templat=
es,”
so we provide a template you can call named “dc_CopyAll” that addresses this
problem.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>ApplyXslt a=
lso
supports parameter binding, the same way that the Command element does for
databases.<span style=3D'mso-spacerun:yes'>  </span>Just declare the parame=
ters
in your stylesheet then add parameter bindings to the end of your ApplyXslt
element.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'></span><!--=
[if supportFields]><span
style=3D'mso-bookmark:_Toc187736508'></span><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-spacerun:yes'> </sp=
an>REF
_Ref187786708 \h <span style=3D'mso-element:field-separator'></span></span>=
<![endif]--><span
style=3D'mso-bookmark:_Toc187736508'>Listing <span style=3D'mso-no-proof:ye=
s'>26</span><!--[if gte mso 9]><xml>
 <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200=
650066003100380037003700380036003700300038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style=3D'mso-bookmark=
:_Toc187736508'></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Toc187736508'> demonstrates the use of the ApplyXslt command.</span></p>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'><o:p>&nbsp;=
</o:p></span></p>

<p class=3DMsoCaption><span style=3D'mso-bookmark:_Toc187736508'><a
name=3D"_Ref187786708">Listing </a></span><!--[if supportFields]><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187786=
708'></span></span><span
style=3D'mso-element:field-begin'></span><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bookmark:_Ref187786708'><span style=3D'mso-spacerun:yes'> </sp=
an>SEQ
Listing \* ARABIC <span style=3D'mso-element:field-separator'></span></span=
></span><![endif]--><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187786=
708'><span
style=3D'mso-no-proof:yes'>26</span></span></span><!--[if supportFields]><s=
pan
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bookmark:_Ref187786=
708'></span></span><span
style=3D'mso-element:field-end'></span><![endif]--><span style=3D'mso-bookm=
ark:
_Toc187736508'><span style=3D'mso-bookmark:_Ref187786708'></span> – Using
ApplyXslt to transform from v1.0 to v1.1</span></p>

<div style=3D'mso-element:para-border-div;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#EEECE1;mso-background-themecolor:background2'>

<p class=3DCodeCxSpFirst style=3D'background:#EEECE1;mso-background-themeco=
lor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><o:p>&nbsp;</o:p></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;?</span></span><span style=3D'mso-bookmark:_Toc187736=
508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>xml</span></span><span style=3D'mso-bookmark:_Toc18773650=
8'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'> </span></span><span style=3D'mso-bookmark:_Toc187736508'=
><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
red;
mso-no-proof:yes'>version</span></span><span style=3D'mso-bookmark:_Toc1877=
36508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>=3D</span></span><span style=3D'mso-bookmark:_Toc18773650=
8'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";mso-no=
-proof:
yes'>&quot;<span style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:=
blue'> </span><span
style=3D'color:red'>encoding</span><span style=3D'color:blue'>=3D</span>&qu=
ot;<span
style=3D'color:blue'>utf-8</span>&quot;<span style=3D'color:blue'> ?&gt;<o:=
p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;</span></span><span style=3D'mso-bookmark:_Toc1877365=
08'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>dc:XmlDataStoreWithVersions<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>xmlns:dc</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://schemas.hexsw.com/Components/DataConstructor.xs=
d</span>&quot;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>xmlns:xslt</=
span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>http://www.w3.org/1999/XSL/Transform</span>&quot;<o:p>=
</o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Create</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>true</span>&quot;<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span></span></span><=
span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Severability=
</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Atomic</span>&quot;<span style=3D'color:blue'>&gt;<o:p=
></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span>&lt;</span></sp=
an><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Versi=
on<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span></span></sp=
an><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Id</span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:blue'>&gt;<o:p></=
o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span>&lt;</span>=
</span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Inser=
tXml<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:3'>          </span></span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>IntoRoot</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>true</span>&quot;<span style=3D'color:blue'>&gt;<o:p><=
/o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:3'>          </span>&lt;</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>Data</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> /&gt;<o:p>=
</o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span>&lt;/</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Inser=
tXml</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span>&lt;/</span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Versi=
on</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span>&lt;</span></sp=
an><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Versi=
on<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span></span></sp=
an><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>Id</span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>1.1</span>&quot;<span style=3D'color:blue'>&gt;<o:p></=
o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span>&lt;</span>=
</span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Apply=
Xslt</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>CopyUnmatche=
dNodes</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>true</span>&quot;<span style=3D'color:blue'>&gt;<o:p><=
/o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:3'>          </span>&lt;</sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:sty=
lesheet<o:p></o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:4'>              </span></sp=
an></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>version</spa=
n></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>1.0</span>&quot;<span style=3D'color:blue'>&gt;<o:p></=
o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:4'>              </span>&lt;=
</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:tem=
plate</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> <o:p></o:p=
></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:7'>                        <=
/span></span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>match</span>=
</span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>/Data/Products/Product/@PriceUSD</span>&quot;<span
style=3D'color:blue'> /&gt;<o:p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:4'>              </span>&lt;=
</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:tem=
plate</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> <o:p></o:p=
></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:7'>                        <=
/span></span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>match</span>=
</span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>/Data/Products/Product</span>&quot;<span style=3D'colo=
r:blue'>&gt;<o:p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:5'>                 </span>&=
lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:ele=
ment</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>name</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Product</span>&quot;<span style=3D'color:blue'>&gt;<o:=
p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:6'>                     </sp=
an>&lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:cal=
l-template</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>name</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>dc_CopyAll</span>&quot;<span style=3D'color:blue'> /&g=
t;<o:p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:6'>                     </sp=
an>&lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:ele=
ment</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>name</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Price</span>&quot;<span style=3D'color:blue'>&gt;<o:p>=
</o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:7'>                        <=
/span>&lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:att=
ribute</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>name</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Currency</span>&quot;<span style=3D'color:blue'>&gt;<o=
:p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:8'>                         =
  </span>&lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:val=
ue-of</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>select</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>'USD'</span>&quot;<span style=3D'color:blue'> /&gt;<o:=
p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:7'>                        <=
/span>&lt;/</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:att=
ribute</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:7'>                        <=
/span>&lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:att=
ribute</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>name</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>Amount</span>&quot;<span style=3D'color:blue'>&gt;<o:p=
></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:8'>                         =
  </span>&lt;</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:val=
ue-of</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'> </span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:red;mso-no-proof:yes'>select</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>=3D</span><=
/span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";mso-no-proof:yes'>&quot;<span
style=3D'color:blue'>@PriceUSD</span>&quot;<span style=3D'color:blue'> /&gt=
;<o:p></o:p></span></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:7'>                        <=
/span>&lt;/</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:att=
ribute</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:6'>                     </sp=
an>&lt;/</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:ele=
ment</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:5'>                 </span>&=
lt;/</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:ele=
ment</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:4'>              </span>&lt;=
/</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:tem=
plate</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:3'>          </span>&lt;/</s=
pan></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#2B91AF;mso-no-proof:yes'>xslt:sty=
lesheet</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:2'>       </span>&lt;/</span=
></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Apply=
Xslt</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'><span style=3D'mso-tab-count:1'>   </span>&lt;/</span></s=
pan><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:#A31515;mso-no-proof:yes'>dc:Versi=
on</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;<o:p></=
o:p></span></span></p>

<p class=3DCodeCxSpMiddle style=3D'background:#EEECE1;mso-background-themec=
olor:
background2;border:none;mso-border-alt:solid windowtext .5pt;padding:0in;
mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc18=
7736508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
blue;
mso-no-proof:yes'>&lt;/</span></span><span style=3D'mso-bookmark:_Toc187736=
508'><span
style=3D'mso-bidi-font-size:8.0pt;mso-bidi-font-family:"Courier New";color:=
#A31515;
mso-no-proof:yes'>dc:XmlDataStoreWithVersions</span></span><span
style=3D'mso-bookmark:_Toc187736508'><span style=3D'mso-bidi-font-size:8.0p=
t;
mso-bidi-font-family:"Courier New";color:blue;mso-no-proof:yes'>&gt;</span>=
</span></p>

<p class=3DCodeCxSpLast style=3D'background:#EEECE1;mso-background-themecol=
or:background2;
border:none;mso-border-alt:solid windowtext .5pt;padding:0in;mso-padding-al=
t:
1.0pt 4.0pt 1.0pt 4.0pt'><span style=3D'mso-bookmark:_Toc187736508'><o:p>&n=
bsp;</o:p></span></p>

</div>

<h2><span style=3D'mso-bookmark:_Toc187736508'>Placeholder Versions, Placeh=
older
Commands, &amp; Variables</span></h2>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>Placeholder=
s and
Variables are generic concepts.<span style=3D'mso-spacerun:yes'>  </span>Th=
e way
they work has does not change for the XML platform.<span
style=3D'mso-spacerun:yes'>  </span>You use them the exact same way in your=
 XML
Data Store upgrade scripts as you would in a Database upgrade script.<span
style=3D'mso-spacerun:yes'>  </span>In fact: the exact same structures are =
used
under the hood.</span></p>

<h2><span style=3D'mso-bookmark:_Toc187736508'>IMPORTANT: A Word to the Wis=
e</span></h2>

<p class=3DMsoNormal><span style=3D'mso-bookmark:_Toc187736508'>There is no=
 back
up.<span style=3D'mso-spacerun:yes'>  </span>Unlike most databases, there i=
s no
transaction log for XML – at least not one that’s built in.<span
style=3D'mso-spacerun:yes'>  </span>Just like the quality of a transition f=
rom
one version to the next is your responsibility, so is the recoverability fr=
om
error.<span style=3D'mso-spacerun:yes'>  </span>We have implemented no back=
up
mechanism and take no responsibility for what happens to XML files upgraded
using our tool.<span style=3D'mso-spacerun:yes'>  </span>Make <i
style=3D'mso-bidi-font-style:normal'>sure</i> you implement a backup mechan=
ism
that makes sense for your situation.<i style=3D'mso-bidi-font-style:normal'=
><o:p></o:p></i></span></p>

<h1><span style=3D'mso-bookmark:_Toc187736508'>Conclusion</span></h1>

<p class=3DMsoNormal>In this tutorial you should have learned the basics
principles of use for the DataConstructor component.<span
style=3D'mso-spacerun:yes'>  </span>You should, now, have an understanding =
of:</p>

<p class=3DMsoListParagraphCxSpFirst style=3D'text-indent:-.25in;mso-list:l=
5 level1 lfo3'><![if !supportLists]><span
style=3D'font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-fa=
mily:
Symbol'><span style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times N=
ew Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>How to instantiate a StructureBuilder</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l5 level1 lfo3'><![if !supportLists]><span
style=3D'font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-fa=
mily:
Symbol'><span style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times N=
ew Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>How to configure it programmatically</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l5 level1 lfo3'><![if !supportLists]><span
style=3D'font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-fa=
mily:
Symbol'><span style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times N=
ew Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>How to instantiate a StructureBuilder using =
XML</p>

<p class=3DMsoListParagraphCxSpMiddle style=3D'text-indent:-.25in;mso-list:=
l5 level1 lfo3'><![if !supportLists]><span
style=3D'font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-fa=
mily:
Symbol'><span style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times N=
ew Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>How to use Variables</p>

<p class=3DMsoListParagraphCxSpLast style=3D'text-indent:-.25in;mso-list:l5=
 level1 lfo3'><![if !supportLists]><span
style=3D'font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-fa=
mily:
Symbol'><span style=3D'mso-list:Ignore'>·<span style=3D'font:7.0pt "Times N=
ew Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>How to use Placeholders</p>

<h1><a name=3D"_Toc187736509">Legal</a></h1>

<p class=3DMsoNormal>Hexagon Software LLC markets DataConstructor under lic=
ense
from Harbinger Software Corporation.</p>

</div>

</body>

</html>

------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/item0001.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml

<b:Sources SelectedStyle=3D"\APA.XSL" StyleName=3D"APA" xmlns:b=3D"http://s=
chemas.openxmlformats.org/officeDocument/2006/bibliography" xmlns=3D"http:/=
/schemas.openxmlformats.org/officeDocument/2006/bibliography"></b:Sources>
------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/props0002.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml

<?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"no"?>
<ds:datastoreItem ds:itemID=3D"{09320072-3BD0-4F5C-A3AE-D7C090BC7BC3}" xmln=
s:ds=3D"http://schemas.openxmlformats.org/officeDocument/2006/customXml"><d=
s:schemaRefs><ds:schemaRef ds:uri=3D"http://schemas.openxmlformats.org/offi=
ceDocument/2006/bibliography"/></ds:schemaRefs></ds:datastoreItem>
------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/themedata.thmx
Content-Transfer-Encoding: base64
Content-Type: application/vnd.ms-officetheme

UEsDBBQABgAIAAAAIQCCirwT+gAAABwCAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbKyRy2rDMBBF
94X+g9C22HK6KKXYzqJJd30s0g8Y5LEtao+ENAnJ33fsuFC6CC10IxBizpl7Va6P46AOGJPzVOlV
XmiFZH3jqKv0++4pu9cqMVADgyes9AmTXtfXV+XuFDApmaZU6Z45PBiTbI8jpNwHJHlpfRyB5Ro7
E8B+QIfmtijujPXESJzxxNB1+SoLRNegeoPILzCKx7Cg8Pv5DCSAmAtYq8czYVqi0hDC4CywRDAH
an7oM9+2zmLj7X4UaT6DF9jNBDO/XGD1P+ov5wZb2A+stkfp4lx/xCH9LdtSay6Tc/7Uu5AuGC6X
t7Rh5r+tPwEAAP//AwBQSwMEFAAGAAgAAAAhAKXWp+fAAAAANgEAAAsAAABfcmVscy8ucmVsc4SP
z2rDMAyH74W9g9F9UdLDGCV2L6WQQy+jfQDhKH9oIhvbG+vbT8cGCrsIhKTv96k9/q6L+eGU5yAW
mqoGw+JDP8to4XY9v3+CyYWkpyUIW3hwhqN727VfvFDRozzNMRulSLYwlRIPiNlPvFKuQmTRyRDS
SkXbNGIkf6eRcV/XH5ieGeA2TNP1FlLXN2Cuj6jJ/7PDMMyeT8F/ryzlRQRuN5RMaeRioagv41O9
kKhlqtQe0LW4+db9AQAA//8DAFBLAwQUAAYACAAAACEAa3mWFoMAAACKAAAAHAAAAHRoZW1lL3Ro
ZW1lL3RoZW1lTWFuYWdlci54bWwMzE0KwyAQQOF9oXeQ2TdjuyhFYrLLrrv2AEOcGkHHoNKf29fl
44M3zt8U1ZtLDVksnAcNimXNLoi38Hwspxuo2kgcxSxs4ccV5ul4GMm0jRPfSchzUX0j1ZCFrbXd
INa1K9Uh7yzdXrkkaj2LR1fo0/cp4kXrKyYKAjj9AQAA//8DAFBLAwQUAAYACAAAACEAlrWt4pYG
AABQGwAAFgAAAHRoZW1lL3RoZW1lL3RoZW1lMS54bWzsWU9v2zYUvw/YdyB0b2MndhoHdYrYsZst
TRvEboceaYmW2FCiQNJJfRva44ABw7phhxXYbYdhW4EW2KX7NNk6bB3Qr7BHUpLFWF6SNtiKrT4k
Evnj+/8eH6mr1+7HDB0SISlP2l79cs1DJPF5QJOw7d0e9i+teUgqnASY8YS0vSmR3rWN99+7itdV
RGKCYH0i13Hbi5RK15eWpA/DWF7mKUlgbsxFjBW8inApEPgI6MZsablWW12KMU08lOAYyN4aj6lP
0FCT9DZy4j0Gr4mSesBnYqBJE2eFwQYHdY2QU9llAh1i1vaAT8CPhuS+8hDDUsFE26uZn7e0cXUJ
r2eLmFqwtrSub37ZumxBcLBseIpwVDCt9xutK1sFfQNgah7X6/W6vXpBzwCw74OmVpYyzUZ/rd7J
aZZA9nGedrfWrDVcfIn+ypzMrU6n02xlsliiBmQfG3P4tdpqY3PZwRuQxTfn8I3OZre76uANyOJX
5/D9K63Vhos3oIjR5GAOrR3a72fUC8iYs+1K+BrA12oZfIaCaCiiS7MY80QtirUY3+OiDwANZFjR
BKlpSsbYhyju4ngkKNYM8DrBpRk75Mu5Ic0LSV/QVLW9D1MMGTGj9+r596+eP0XHD54dP/jp+OHD
4wc/WkLOqm2chOVVL7/97M/HH6M/nn7z8tEX1XhZxv/6wye//Px5NRDSZybOiy+f/PbsyYuvPv39
u0cV8E2BR2X4kMZEopvkCO3zGBQzVnElJyNxvhXDCNPyis0klDjBmksF/Z6KHPTNKWaZdxw5OsS1
4B0B5aMKeH1yzxF4EImJohWcd6LYAe5yzjpcVFphR/MqmXk4ScJq5mJSxu1jfFjFu4sTx7+9SQp1
Mw9LR/FuRBwx9xhOFA5JQhTSc/yAkArt7lLq2HWX+oJLPlboLkUdTCtNMqQjJ5pmi7ZpDH6ZVukM
/nZss3sHdTir0nqLHLpIyArMKoQfEuaY8TqeKBxXkRzimJUNfgOrqErIwVT4ZVxPKvB0SBhHvYBI
WbXmlgB9S07fwVCxKt2+y6axixSKHlTRvIE5LyO3+EE3wnFahR3QJCpjP5AHEKIY7XFVBd/lbobo
d/ADTha6+w4ljrtPrwa3aeiINAsQPTMR2pdQqp0KHNPk78oxo1CPbQxcXDmGAvji68cVkfW2FuJN
2JOqMmH7RPldhDtZdLtcBPTtr7lbeJLsEQjz+Y3nXcl9V3K9/3zJXZTPZy20s9oKZVf3DbYpNi1y
vLBDHlPGBmrKyA1pmmQJ+0TQh0G9zpwOSXFiSiN4zOq6gwsFNmuQ4OojqqJBhFNosOueJhLKjHQo
UcolHOzMcCVtjYcmXdljYVMfGGw9kFjt8sAOr+jh/FxQkDG7TWgOnzmjFU3grMxWrmREQe3XYVbX
Qp2ZW92IZkqdw61QGXw4rxoMFtaEBgRB2wJWXoXzuWYNBxPMSKDtbvfe3C3GCxfpIhnhgGQ+0nrP
+6hunJTHirkJgNip8JE+5J1itRK3lib7BtzO4qQyu8YCdrn33sRLeQTPvKTz9kQ6sqScnCxBR22v
1VxuesjHadsbw5kWHuMUvC51z4dZCBdDvhI27E9NZpPlM2+2csXcJKjDNYW1+5zCTh1IhVRbWEY2
NMxUFgIs0Zys/MtNMOtFKWAj/TWkWFmDYPjXpAA7uq4l4zHxVdnZpRFtO/ualVI+UUQMouAIjdhE
7GNwvw5V0CegEq4mTEXQL3CPpq1tptzinCVd+fbK4Ow4ZmmEs3KrUzTPZAs3eVzIYN5K4oFulbIb
5c6vikn5C1KlHMb/M1X0fgI3BSuB9oAP17gCI52vbY8LFXGoQmlE/b6AxsHUDogWuIuFaQgquEw2
/wU51P9tzlkaJq3hwKf2aYgEhf1IRYKQPShLJvpOIVbP9i5LkmWETESVxJWpFXtEDgkb6hq4qvd2
D0UQ6qaaZGXA4E7Gn/ueZdAo1E1OOd+cGlLsvTYH/unOxyYzKOXWYdPQ5PYvRKzYVe16szzfe8uK
6IlZm9XIswKYlbaCVpb2rynCObdaW7HmNF5u5sKBF+c1hsGiIUrhvgfpP7D/UeEz+2VCb6hDvg+1
FcGHBk0Mwgai+pJtPJAukHZwBI2THbTBpElZ02atk7ZavllfcKdb8D1hbC3ZWfx9TmMXzZnLzsnF
izR2ZmHH1nZsoanBsydTFIbG+UHGOMZ80ip/deKje+DoLbjfnzAlTTDBNyWBofUcmDyA5LcczdKN
vwAAAP//AwBQSwMEFAAGAAgAAAAhAA3RkJ+2AAAAGwEAACcAAAB0aGVtZS90aGVtZS9fcmVscy90
aGVtZU1hbmFnZXIueG1sLnJlbHOEj00KwjAUhPeCdwhvb9O6EJEm3YjQrdQDhOQ1DTY/JFHs7Q2u
LAguh2G+mWm7l53JE2My3jFoqhoIOumVcZrBbbjsjkBSFk6J2TtksGCCjm837RVnkUsoTSYkUigu
MZhyDidKk5zQilT5gK44o49W5CKjpkHIu9BI93V9oPGbAXzFJL1iEHvVABmWUJr/s/04GolnLx8W
Xf5RQXPZhQUoosbM4CObqkwEylu6usTfAAAA//8DAFBLAQItABQABgAIAAAAIQCCirwT+gAAABwC
AAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhAKXW
p+fAAAAANgEAAAsAAAAAAAAAAAAAAAAAKwEAAF9yZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhAGt5
lhaDAAAAigAAABwAAAAAAAAAAAAAAAAAFAIAAHRoZW1lL3RoZW1lL3RoZW1lTWFuYWdlci54bWxQ
SwECLQAUAAYACAAAACEAlrWt4pYGAABQGwAAFgAAAAAAAAAAAAAAAADRAgAAdGhlbWUvdGhlbWUv
dGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQAN0ZCftgAAABsBAAAnAAAAAAAAAAAAAAAAAJsJAAB0
aGVtZS90aGVtZS9fcmVscy90aGVtZU1hbmFnZXIueG1sLnJlbHNQSwUGAAAAAAUABQBdAQAAlgoA
AAAA

------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/colorschememapping.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml

<?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"yes"?>
<a:clrMap xmlns:a=3D"http://schemas.openxmlformats.org/drawingml/2006/main"=
 bg1=3D"lt1" tx1=3D"dk1" bg2=3D"lt2" tx2=3D"dk2" accent1=3D"accent1" accent=
2=3D"accent2" accent3=3D"accent3" accent4=3D"accent4" accent5=3D"accent5" a=
ccent6=3D"accent6" hlink=3D"hlink" folHlink=3D"folHlink"/>
------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/plchdr.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="windows-1252"

<html xmlns:v=3D"urn:schemas-microsoft-com:vml"
xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:w=3D"urn:schemas-microsoft-com:office:word"
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml"
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-125=
2">
<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 12">
<meta name=3DOriginator content=3D"Microsoft Word 12">
<link id=3DMain-File rel=3DMain-File href=3D"../DataConstructorTutorial.htm=
">
<![if IE]>
<base href=3D"file:///C:\2F2AB08C\DataConstructorTutorial_files\plchdr.htm"
id=3D"webarch_temp_base_tag">
<![endif]>
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div style=3D'mso-element:placeholder-text' id=3D6AB13750B8BB4C2DA3DF8E8A3C=
9BED80><span
class=3DMsoPlaceholderText><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-far=
east-font-family:
"Times New Roman";mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:mino=
r-bidi;
mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'=
>[Title]</span></span></div>

<div style=3D'mso-element:placeholder-text' id=3D6A235F0AC61D42B582D367EE95=
ED4A2E><span
class=3DMsoPlaceholderText><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-far=
east-font-family:
"Times New Roman";mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:mino=
r-bidi;
mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'=
>[Title]</span></span></div>

<div style=3D'mso-element:placeholder-text' id=3D912E3E2E14044C8B8B8984A19C=
2273D7><span
class=3DMsoPlaceholderText><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-far=
east-font-family:
"Times New Roman";mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:mino=
r-bidi;
mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'=
>[Subject]</span></span></div>

</body>

</html>

------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/header.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="windows-1252"

<html xmlns:v=3D"urn:schemas-microsoft-com:vml"
xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:w=3D"urn:schemas-microsoft-com:office:word"
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml"
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-125=
2">
<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 12">
<meta name=3DOriginator content=3D"Microsoft Word 12">
<link id=3DMain-File rel=3DMain-File href=3D"../DataConstructorTutorial.htm=
">
<![if IE]>
<base href=3D"file:///C:\2F2AB08C\DataConstructorTutorial_files\header.htm"
id=3D"webarch_temp_base_tag">
<![endif]>
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div style=3D'mso-element:footnote-separator' id=3Dfs>

<p class=3DMsoNormal style=3D'margin-bottom:0in;margin-bottom:.0001pt'><span
style=3D'mso-special-character:footnote-separator'><![if !supportFootnotes]>

<hr align=3Dleft size=3D1 width=3D"33%">

<![endif]></span></p>

</div>

<div style=3D'mso-element:footnote-continuation-separator' id=3Dfcs>

<p class=3DMsoNormal style=3D'margin-bottom:0in;margin-bottom:.0001pt'><span
style=3D'mso-special-character:footnote-continuation-separator'><![if !supp=
ortFootnotes]>

<hr align=3Dleft size=3D1>

<![endif]></span></p>

</div>

<div style=3D'mso-element:endnote-separator' id=3Des>

<p class=3DMsoNormal style=3D'margin-bottom:0in;margin-bottom:.0001pt'><span
style=3D'mso-special-character:footnote-separator'><![if !supportFootnotes]>

<hr align=3Dleft size=3D1 width=3D"33%">

<![endif]></span></p>

</div>

<div style=3D'mso-element:endnote-continuation-separator' id=3Decs>

<p class=3DMsoNormal style=3D'margin-bottom:0in;margin-bottom:.0001pt'><span
style=3D'mso-special-character:footnote-continuation-separator'><![if !supp=
ortFootnotes]>

<hr align=3Dleft size=3D1>

<![endif]></span></p>

</div>

<div style=3D'mso-element:header' id=3Dh1>

<p class=3DMsoHeader><w:Sdt
 PrefixMappings=3D"xmlns:ns0=3D'http://purl.org/dc/elements/1.1/' xmlns:ns1=
=3D'http://schemas.openxmlformats.org/package/2006/metadata/core-properties=
' "
 Xpath=3D"/ns1:coreProperties[1]/ns0:title[1]"
 DocPart=3D"6A235F0AC61D42B582D367EE95ED4A2E" Text=3D"t"
 StoreItemID=3D"X_6C3C8BC8-F283-45AE-878A-BAB7291924A1" Title=3D"Title"
 ID=3D"219739876">Getting Started with DataConstructor</w:Sdt><span
style=3D'mso-tab-count:2'>                                                 =
                                                                       </sp=
an>v1.4.0</p>

</div>

<div style=3D'mso-element:footer' id=3Df1>

<p class=3DMsoFooter><span style=3D'mso-tab-count:1'>                      =
                                                                       </sp=
an><span
style=3D'color:#7F7F7F;mso-themecolor:background1;mso-themeshade:127;letter=
-spacing:
3.0pt'>Page</span> | <!--[if supportFields]><span style=3D'mso-element:fiel=
d-begin'></span><span
style=3D'mso-spacerun:yes'> </span>PAGE<span style=3D'mso-spacerun:yes'>  
</span>\* MERGEFORMAT <span style=3D'mso-element:field-separator'></span><!=
[endif]--><b
style=3D'mso-bidi-font-weight:normal'><span style=3D'mso-no-proof:yes'>1</s=
pan></b><!--[if supportFields]><span
style=3D'mso-element:field-end'></span><![endif]--></p>

<p class=3DMsoFooter><span style=3D'font-size:8.0pt'><span style=3D'mso-tab=
-count:
1'>                                                                        =
                                                                           =
         </span><o:p></o:p></span></p>

<p class=3DMsoFooter><span style=3D'font-size:8.0pt'><span style=3D'mso-tab=
-count:
1'>                                                                        =
                                                               </span>©
Copyright 2007<o:p></o:p></span></p>

<p class=3DMsoFooter><span style=3D'font-size:8.0pt'><span style=3D'mso-tab=
-count:
1'>                                                                        =
                                               </span>Harbinger
Software Corporation<o:p></o:p></span></p>

<p class=3DMsoFooter><span style=3D'font-size:8.0pt'><span style=3D'mso-tab=
-count:
1'>                                                                        =
                                                               </span>All
rights reserved<o:p></o:p></span></p>

</div>

</body>

</html>

------=_NextPart_01C8540B.8BA97090
Content-Location: file:///C:/2F2AB08C/DataConstructorTutorial_files/filelist.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml; charset="utf-8"

<xml xmlns:o=3D"urn:schemas-microsoft-com:office:office">
 <o:MainFile HRef=3D"../DataConstructorTutorial.htm"/>
 <o:File HRef=3D"item0001.xml"/>
 <o:File HRef=3D"props0002.xml"/>
 <o:File HRef=3D"themedata.thmx"/>
 <o:File HRef=3D"colorschememapping.xml"/>
 <o:File HRef=3D"plchdr.htm"/>
 <o:File HRef=3D"header.htm"/>
 <o:File HRef=3D"filelist.xml"/>
</xml>
------=_NextPart_01C8540B.8BA97090--
