blob: 720afab3017d28b094448b26d65b7834778bfca9 [file] [log] [blame]
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 15 (filtered)">
<title>Data Format Description Language (DFDL) v1.0 Specification</title>
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Courier;
panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
{font-family:"Tms Rmn";
panose-1:2 2 6 3 4 5 5 2 3 4;}
@font-face
{font-family:Helv;
panose-1:2 11 6 4 2 2 2 3 2 4;}
@font-face
{font-family:"New York";
panose-1:2 4 5 3 6 5 6 2 3 4;}
@font-face
{font-family:System;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
{font-family:Batang;
panose-1:2 3 6 0 0 1 1 1 1 1;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:PMingLiU;
panose-1:2 1 6 1 0 1 1 1 1 1;}
@font-face
{font-family:"MS Gothic";
panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
{font-family:Dotum;
panose-1:2 11 6 0 0 1 1 1 1 1;}
@font-face
{font-family:SimHei;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:MingLiU;
panose-1:2 1 6 9 0 1 1 1 1 1;}
@font-face
{font-family:Mincho;
panose-1:2 2 6 9 4 3 5 8 3 5;}
@font-face
{font-family:Gulim;
panose-1:2 11 6 0 0 1 1 1 1 1;}
@font-face
{font-family:Century;
panose-1:2 4 6 4 5 5 5 2 3 4;}
@font-face
{font-family:"Angsana New";
panose-1:2 2 6 3 5 4 5 2 3 4;}
@font-face
{font-family:"Cordia New";
panose-1:2 11 3 4 2 2 2 2 2 4;}
@font-face
{font-family:Mangal;
panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
{font-family:Latha;
panose-1:2 0 4 0 0 0 0 0 0 0;}
@font-face
{font-family:Sylfaen;
panose-1:1 10 5 2 5 3 6 3 3 3;}
@font-face
{font-family:Vrinda;
panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
{font-family:Raavi;
panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:Shruti;
panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:Sendnya;
panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
{font-family:Gautami;
panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:Tunga;
panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
{font-family:"Estrangelo Edessa";
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:"Yu Gothic";
panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
{font-family:DengXian;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Calibri Light";
panose-1:2 15 3 2 2 2 4 3 2 4;}
@font-face
{font-family:"Palatino Linotype";
panose-1:2 4 5 2 5 5 5 3 3 4;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"Arial Unicode MS";
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:"Segoe UI Emoji";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Comic Sans MS";
panose-1:3 15 7 2 3 3 2 2 2 4;}
@font-face
{font-family:"Lohit Hindi";
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Liberation Mono";}
@font-face
{font-family:"MS PGothic";
panose-1:2 11 6 0 7 2 5 8 2 4;}
@font-face
{font-family:Marlett;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Arial Black";
panose-1:2 11 10 4 2 1 2 2 2 4;}
@font-face
{font-family:"Bahnschrift Light";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiLight";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Bahnschrift;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiBold";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift Light SemiCondensed";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiLight SemiConde";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiCondensed";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiBold SemiConden";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift Light Condensed";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiLight Condensed";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift Condensed";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Bahnschrift SemiBold Condensed";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Candara;
panose-1:2 14 5 2 3 3 3 2 2 4;}
@font-face
{font-family:"Candara Light";
panose-1:2 14 5 2 3 3 3 2 2 4;}
@font-face
{font-family:Constantia;
panose-1:2 3 6 2 5 3 6 3 3 3;}
@font-face
{font-family:Corbel;
panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
{font-family:"Corbel Light";
panose-1:2 11 3 3 2 2 4 2 2 4;}
@font-face
{font-family:Ebrima;
panose-1:2 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Franklin Gothic Medium";
panose-1:2 11 6 3 2 1 2 2 2 4;}
@font-face
{font-family:Gabriola;
panose-1:4 4 6 5 5 16 2 2 13 2;}
@font-face
{font-family:Gadugi;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:Georgia;
panose-1:2 4 5 2 5 4 5 2 3 3;}
@font-face
{font-family:Impact;
panose-1:2 11 8 6 3 9 2 5 2 4;}
@font-face
{font-family:"Ink Free";
panose-1:3 8 4 2 0 5 0 0 0 0;}
@font-face
{font-family:"Javanese Text";
panose-1:2 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Leelawadee UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Leelawadee UI Semilight";
panose-1:2 11 4 2 4 2 4 2 2 3;}
@font-face
{font-family:"Lucida Console";
panose-1:2 11 6 9 4 5 4 2 2 4;}
@font-face
{font-family:"Lucida Sans Unicode";
panose-1:2 11 6 2 3 5 4 2 2 4;}
@font-face
{font-family:"Malgun Gothic";
panose-1:2 11 5 3 2 0 0 2 0 4;}
@font-face
{font-family:"\@Malgun Gothic";
panose-1:2 11 5 3 2 0 0 2 0 4;}
@font-face
{font-family:"Malgun Gothic Semilight";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"\@Malgun Gothic Semilight";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Microsoft Himalaya";
panose-1:1 1 1 0 1 1 1 1 1 1;}
@font-face
{font-family:"Microsoft JhengHei";
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"\@Microsoft JhengHei";
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"Microsoft JhengHei UI";
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"\@Microsoft JhengHei UI";
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"Microsoft JhengHei Light";
panose-1:2 11 3 4 3 5 4 4 2 4;}
@font-face
{font-family:"\@Microsoft JhengHei Light";
panose-1:2 11 3 4 3 5 4 4 2 4;}
@font-face
{font-family:"Microsoft JhengHei UI Light";
panose-1:2 11 3 4 3 5 4 4 2 4;}
@font-face
{font-family:"\@Microsoft JhengHei UI Light";
panose-1:2 11 3 4 3 5 4 4 2 4;}
@font-face
{font-family:"Microsoft New Tai Lue";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Microsoft PhagsPa";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Microsoft Sans Serif";
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:"Microsoft Tai Le";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Microsoft YaHei";
panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
{font-family:"\@Microsoft YaHei";
panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
{font-family:"Microsoft YaHei UI";
panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
{font-family:"\@Microsoft YaHei UI";
panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
{font-family:"Microsoft YaHei Light";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"\@Microsoft YaHei Light";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Microsoft YaHei UI Light";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"\@Microsoft YaHei UI Light";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Microsoft Yi Baiti";
panose-1:3 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:MingLiU-ExtB;
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@MingLiU-ExtB";
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:PMingLiU-ExtB;
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@PMingLiU-ExtB";
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:MingLiU_HKSCS-ExtB;
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@MingLiU_HKSCS-ExtB";
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Mongolian Baiti";
panose-1:3 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@MS Gothic";
panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
{font-family:"MS UI Gothic";
panose-1:2 11 6 0 7 2 5 8 2 4;}
@font-face
{font-family:"\@MS UI Gothic";
panose-1:2 11 6 0 7 2 5 8 2 4;}
@font-face
{font-family:"\@MS PGothic";
panose-1:2 11 6 0 7 2 5 8 2 4;}
@font-face
{font-family:"MV Boli";
panose-1:2 0 5 0 3 2 0 9 0 0;}
@font-face
{font-family:"Myanmar Text";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Nirmala UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Nirmala UI Semilight";
panose-1:2 11 4 2 4 2 4 2 2 3;}
@font-face
{font-family:"Segoe MDL2 Assets";
panose-1:5 10 1 2 1 1 1 1 1 1;}
@font-face
{font-family:"Segoe Print";
panose-1:2 0 6 0 0 0 0 0 0 0;}
@font-face
{font-family:"Segoe Script";
panose-1:3 11 5 4 2 0 0 0 0 3;}
@font-face
{font-family:"Segoe UI Black";
panose-1:2 11 10 2 4 2 4 2 2 3;}
@font-face
{font-family:"Segoe UI Historic";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Segoe UI Light";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Segoe UI Semibold";
panose-1:2 11 7 2 4 2 4 2 2 3;}
@font-face
{font-family:"Segoe UI Semilight";
panose-1:2 11 4 2 4 2 4 2 2 3;}
@font-face
{font-family:"Segoe UI Symbol";
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:NSimSun;
panose-1:2 1 6 9 3 1 1 1 1 1;}
@font-face
{font-family:"\@NSimSun";
panose-1:2 1 6 9 3 1 1 1 1 1;}
@font-face
{font-family:SimSun-ExtB;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
{font-family:"\@SimSun-ExtB";
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
{font-family:"Sitka Small";
panose-1:2 0 5 5 0 0 0 2 0 4;}
@font-face
{font-family:"Sitka Text";
panose-1:2 0 5 5 0 0 0 2 0 4;}
@font-face
{font-family:"Sitka Subheading";
panose-1:2 0 5 5 0 0 0 2 0 4;}
@font-face
{font-family:"Sitka Heading";
panose-1:2 0 5 5 0 0 0 2 0 4;}
@font-face
{font-family:"Sitka Display";
panose-1:2 0 5 5 0 0 0 2 0 4;}
@font-face
{font-family:"Sitka Banner";
panose-1:2 0 5 5 0 0 0 2 0 4;}
@font-face
{font-family:"Trebuchet MS";
panose-1:2 11 6 3 2 2 2 2 2 4;}
@font-face
{font-family:Webdings;
panose-1:5 3 1 2 1 5 9 6 7 3;}
@font-face
{font-family:"\@Yu Gothic";
panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
{font-family:"Yu Gothic UI";
panose-1:2 11 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@Yu Gothic UI";
panose-1:2 11 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Yu Gothic UI Semibold";
panose-1:2 11 7 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@Yu Gothic UI Semibold";
panose-1:2 11 7 0 0 0 0 0 0 0;}
@font-face
{font-family:"Yu Gothic Light";
panose-1:2 11 3 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@Yu Gothic Light";
panose-1:2 11 3 0 0 0 0 0 0 0;}
@font-face
{font-family:"Yu Gothic UI Light";
panose-1:2 11 3 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@Yu Gothic UI Light";
panose-1:2 11 3 0 0 0 0 0 0 0;}
@font-face
{font-family:"Yu Gothic Medium";
panose-1:2 11 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@Yu Gothic Medium";
panose-1:2 11 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Yu Gothic UI Semilight";
panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
{font-family:"\@Yu Gothic UI Semilight";
panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
{font-family:"HoloLens MDL2 Assets";
panose-1:5 10 1 2 1 1 1 1 1 1;}
@font-face
{font-family:"\@Arial Unicode MS";
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:"Wingdings 2";
panose-1:5 2 1 2 1 5 7 7 7 7;}
@font-face
{font-family:"Wingdings 3";
panose-1:5 4 1 2 1 8 7 7 7 7;}
@font-face
{font-family:Algerian;
panose-1:4 2 7 5 4 10 2 6 7 2;}
@font-face
{font-family:"Baskerville Old Face";
panose-1:2 2 6 2 8 5 5 2 3 3;}
@font-face
{font-family:"Bauhaus 93";
panose-1:4 3 9 5 2 11 2 2 12 2;}
@font-face
{font-family:"Bell MT";
panose-1:2 2 5 3 6 3 5 2 3 3;}
@font-face
{font-family:"Berlin Sans FB";
panose-1:2 14 6 2 2 5 2 2 3 6;}
@font-face
{font-family:"Bernard MT Condensed";
panose-1:2 5 8 6 6 9 5 2 4 4;}
@font-face
{font-family:"Bodoni MT Poster Compressed";
panose-1:2 7 7 6 8 6 1 5 2 4;}
@font-face
{font-family:"Britannic Bold";
panose-1:2 11 9 3 6 7 3 2 2 4;}
@font-face
{font-family:Broadway;
panose-1:4 4 9 5 8 11 2 2 5 2;}
@font-face
{font-family:"Brush Script MT";
panose-1:3 6 8 2 4 4 6 7 3 4;}
@font-face
{font-family:"Californian FB";
panose-1:2 7 4 3 6 8 11 3 2 4;}
@font-face
{font-family:Centaur;
panose-1:2 3 5 4 5 2 5 2 3 4;}
@font-face
{font-family:"Century Gothic";
panose-1:2 11 5 2 2 2 2 2 2 4;}
@font-face
{font-family:Chiller;
panose-1:4 2 4 4 3 16 7 2 6 2;}
@font-face
{font-family:"Colonna MT";
panose-1:4 2 8 5 6 2 2 3 2 3;}
@font-face
{font-family:"Cooper Black";
panose-1:2 8 9 4 4 3 11 2 4 4;}
@font-face
{font-family:"Footlight MT Light";
panose-1:2 4 6 2 6 3 10 2 3 4;}
@font-face
{font-family:"Freestyle Script";
panose-1:3 8 4 2 3 2 5 11 4 4;}
@font-face
{font-family:"Harlow Solid Italic";
panose-1:4 3 6 4 2 15 2 2 13 2;}
@font-face
{font-family:Harrington;
panose-1:4 4 5 5 5 10 2 2 7 2;}
@font-face
{font-family:"High Tower Text";
panose-1:2 4 5 2 5 5 6 3 3 3;}
@font-face
{font-family:Jokerman;
panose-1:4 9 6 5 6 13 6 2 7 2;}
@font-face
{font-family:"Juice ITC";
panose-1:4 4 4 3 4 10 2 2 2 2;}
@font-face
{font-family:"Kristen ITC";
panose-1:3 5 5 2 4 2 2 3 2 2;}
@font-face
{font-family:"Kunstler Script";
panose-1:3 3 4 2 2 6 7 13 13 6;}
@font-face
{font-family:"Lucida Bright";
panose-1:2 4 6 2 5 5 5 2 3 4;}
@font-face
{font-family:"Lucida Calligraphy";
panose-1:3 1 1 1 1 1 1 1 1 1;}
@font-face
{font-family:"Lucida Fax";
panose-1:2 6 6 2 5 5 5 2 2 4;}
@font-face
{font-family:"Lucida Handwriting";
panose-1:3 1 1 1 1 1 1 1 1 1;}
@font-face
{font-family:Magneto;
panose-1:4 3 8 5 5 8 2 2 13 2;}
@font-face
{font-family:"Matura MT Script Capitals";
panose-1:3 2 8 2 6 6 2 7 2 2;}
@font-face
{font-family:Mistral;
panose-1:3 9 7 2 3 4 7 2 4 3;}
@font-face
{font-family:"Modern No\. 20";
panose-1:2 7 7 4 7 5 5 2 3 3;}
@font-face
{font-family:"Monotype Corsiva";
panose-1:3 1 1 1 1 2 1 1 1 1;}
@font-face
{font-family:"Niagara Engraved";
panose-1:4 2 5 2 7 7 3 3 2 2;}
@font-face
{font-family:"Niagara Solid";
panose-1:4 2 5 2 7 7 2 2 2 2;}
@font-face
{font-family:"Old English Text MT";
panose-1:3 4 9 2 4 5 8 3 8 6;}
@font-face
{font-family:Onyx;
panose-1:4 5 6 2 8 7 2 2 2 3;}
@font-face
{font-family:Parchment;
panose-1:3 4 6 2 4 7 8 4 8 4;}
@font-face
{font-family:Playbill;
panose-1:4 5 6 3 10 6 2 2 2 2;}
@font-face
{font-family:"Poor Richard";
panose-1:2 8 5 2 5 5 5 2 7 2;}
@font-face
{font-family:Ravie;
panose-1:4 4 8 5 5 8 9 2 6 2;}
@font-face
{font-family:"Informal Roman";
panose-1:3 6 4 2 3 4 6 11 2 4;}
@font-face
{font-family:"Showcard Gothic";
panose-1:4 2 9 4 2 1 2 2 6 4;}
@font-face
{font-family:"Snap ITC";
panose-1:4 4 10 7 6 10 2 2 2 2;}
@font-face
{font-family:Stencil;
panose-1:4 4 9 5 13 8 2 2 4 4;}
@font-face
{font-family:"Tempus Sans ITC";
panose-1:4 2 4 4 3 13 7 2 2 2;}
@font-face
{font-family:"Viner Hand ITC";
panose-1:3 7 5 2 3 5 2 2 2 3;}
@font-face
{font-family:Vivaldi;
panose-1:3 2 6 2 5 5 6 9 8 4;}
@font-face
{font-family:"Vladimir Script";
panose-1:3 5 4 2 4 4 7 7 3 5;}
@font-face
{font-family:"Wide Latin";
panose-1:2 10 10 7 5 5 5 2 4 4;}
@font-face
{font-family:"Tw Cen MT";
panose-1:2 11 6 2 2 1 4 2 6 3;}
@font-face
{font-family:"Tw Cen MT Condensed";
panose-1:2 11 6 6 2 1 4 2 2 3;}
@font-face
{font-family:"Script MT Bold";
panose-1:3 4 6 2 4 6 7 8 9 4;}
@font-face
{font-family:"Rockwell Extra Bold";
panose-1:2 6 9 3 4 5 5 2 4 3;}
@font-face
{font-family:"Rockwell Condensed";
panose-1:2 6 6 3 5 4 5 2 1 4;}
@font-face
{font-family:Rockwell;
panose-1:2 6 6 3 2 2 5 2 4 3;}
@font-face
{font-family:"Rage Italic";
panose-1:3 7 5 2 4 5 7 7 3 4;}
@font-face
{font-family:Pristina;
panose-1:3 6 4 2 4 4 6 8 2 4;}
@font-face
{font-family:"Perpetua Titling MT";
panose-1:2 2 5 2 6 5 5 2 8 4;}
@font-face
{font-family:Perpetua;
panose-1:2 2 5 2 6 4 1 2 3 3;}
@font-face
{font-family:Papyrus;
panose-1:3 7 5 2 6 5 2 3 2 5;}
@font-face
{font-family:"Palace Script MT";
panose-1:3 3 3 2 2 6 7 12 11 5;}
@font-face
{font-family:"OCR A Extended";
panose-1:2 1 5 9 2 1 2 1 3 3;}
@font-face
{font-family:"Maiandra GD";
panose-1:2 14 5 2 3 3 8 2 2 4;}
@font-face
{font-family:"Lucida Sans Typewriter";
panose-1:2 11 5 9 3 5 4 3 2 4;}
@font-face
{font-family:"Lucida Sans";
panose-1:2 11 6 2 3 5 4 2 2 4;}
@font-face
{font-family:"Imprint MT Shadow";
panose-1:4 2 6 5 6 3 3 3 2 2;}
@font-face
{font-family:Haettenschweiler;
panose-1:2 11 7 6 4 9 2 6 2 4;}
@font-face
{font-family:"Goudy Stout";
panose-1:2 2 9 4 7 3 11 2 4 1;}
@font-face
{font-family:"Goudy Old Style";
panose-1:2 2 5 2 5 3 5 2 3 3;}
@font-face
{font-family:"Gloucester MT Extra Condensed";
panose-1:2 3 8 8 2 6 1 1 1 1;}
@font-face
{font-family:"Gill Sans Ultra Bold Condensed";
panose-1:2 11 10 6 2 1 4 2 2 3;}
@font-face
{font-family:"Gill Sans Ultra Bold";
panose-1:2 11 10 2 2 1 4 2 2 3;}
@font-face
{font-family:"Gill Sans MT Condensed";
panose-1:2 11 5 6 2 1 4 2 2 3;}
@font-face
{font-family:"Gill Sans MT";
panose-1:2 11 5 2 2 1 4 2 2 3;}
@font-face
{font-family:"Gill Sans MT Ext Condensed Bold";
panose-1:2 11 9 2 2 1 4 2 2 3;}
@font-face
{font-family:Gigi;
panose-1:4 4 5 4 6 16 7 2 13 2;}
@font-face
{font-family:Garamond;
panose-1:2 2 4 4 3 3 1 1 8 3;}
@font-face
{font-family:"French Script MT";
panose-1:3 2 4 2 4 6 7 4 6 5;}
@font-face
{font-family:"Franklin Gothic Medium Cond";
panose-1:2 11 6 6 3 4 2 2 2 4;}
@font-face
{font-family:"Franklin Gothic Heavy";
panose-1:2 11 9 3 2 1 2 2 2 4;}
@font-face
{font-family:"Franklin Gothic Demi Cond";
panose-1:2 11 7 6 3 4 2 2 2 4;}
@font-face
{font-family:"Franklin Gothic Demi";
panose-1:2 11 7 3 2 1 2 2 2 4;}
@font-face
{font-family:"Franklin Gothic Book";
panose-1:2 11 5 3 2 1 2 2 2 4;}
@font-face
{font-family:Forte;
panose-1:3 6 9 2 4 5 2 7 2 3;}
@font-face
{font-family:"Felix Titling";
panose-1:4 6 5 5 6 2 2 2 10 4;}
@font-face
{font-family:"Eras Medium ITC";
panose-1:2 11 6 2 3 5 4 2 8 4;}
@font-face
{font-family:"Eras Light ITC";
panose-1:2 11 4 2 3 5 4 2 8 4;}
@font-face
{font-family:"Eras Demi ITC";
panose-1:2 11 8 5 3 5 4 2 8 4;}
@font-face
{font-family:"Eras Bold ITC";
panose-1:2 11 9 7 3 5 4 2 2 4;}
@font-face
{font-family:"Engravers MT";
panose-1:2 9 7 7 8 5 5 2 3 4;}
@font-face
{font-family:Elephant;
panose-1:2 2 9 4 9 5 5 2 3 3;}
@font-face
{font-family:"Edwardian Script ITC";
panose-1:3 3 3 2 4 7 7 13 8 4;}
@font-face
{font-family:"Curlz MT";
panose-1:4 4 4 4 5 7 2 2 2 2;}
@font-face
{font-family:"Copperplate Gothic Light";
panose-1:2 14 5 7 2 2 6 2 4 4;}
@font-face
{font-family:"Copperplate Gothic Bold";
panose-1:2 14 7 5 2 2 6 2 4 4;}
@font-face
{font-family:"Century Schoolbook";
panose-1:2 4 6 4 5 5 5 2 3 4;}
@font-face
{font-family:Castellar;
panose-1:2 10 4 2 6 4 6 1 3 1;}
@font-face
{font-family:"Calisto MT";
panose-1:2 4 6 3 5 5 5 3 3 4;}
@font-face
{font-family:"Bradley Hand ITC";
panose-1:3 7 4 2 5 3 2 3 2 3;}
@font-face
{font-family:"Bookman Old Style";
panose-1:2 5 6 4 5 5 5 2 2 4;}
@font-face
{font-family:"Book Antiqua";
panose-1:2 4 6 2 5 3 5 3 3 4;}
@font-face
{font-family:"Bodoni MT Condensed";
panose-1:2 7 6 6 8 6 6 2 2 3;}
@font-face
{font-family:"Bodoni MT Black";
panose-1:2 7 10 3 8 6 6 2 2 3;}
@font-face
{font-family:"Bodoni MT";
panose-1:2 7 6 3 8 6 6 2 2 3;}
@font-face
{font-family:"Blackadder ITC";
panose-1:4 2 5 5 5 16 7 2 13 2;}
@font-face
{font-family:"Arial Rounded MT Bold";
panose-1:2 15 7 4 3 5 4 3 2 4;}
@font-face
{font-family:"Arial Narrow";
panose-1:2 11 6 6 2 2 2 3 2 4;}
@font-face
{font-family:"Agency FB";
panose-1:2 11 5 3 2 2 2 2 2 4;}
@font-face
{font-family:"Berlin Sans FB Demi";
panose-1:2 14 8 2 2 5 2 2 3 6;}
@font-face
{font-family:"Tw Cen MT Condensed Extra Bold";
panose-1:2 11 8 3 2 2 2 2 2 4;}
@font-face
{font-family:"Noto Emoji";
panose-1:2 11 5 9 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Kufi Arabic";
panose-1:2 11 5 6 3 8 4 2 2 4;}
@font-face
{font-family:"Noto Mono";
panose-1:2 11 6 9 3 8 4 2 2 4;}
@font-face
{font-family:"Noto Naskh Arabic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Naskh Arabic UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Nastaliq Urdu";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Armenian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Avestan";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Balinese";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Bamum";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Batak";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Bengali";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Bengali UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Brahmi";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Buginese";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Buhid";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Canadian Aboriginal";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Carian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Cham";
panose-1:2 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Noto Sans Cherokee";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Coptic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"\@Noto Sans Coptic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Cuneiform";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Cypriot";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Deseret";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Devanagari";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Devanagari UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Egyptian Hieroglyphs";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Ethiopic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Georgian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Glagolitic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Gothic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Gujarati";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Gujarati UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Gurmukhi";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Gurmukhi UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Hanunoo";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Hebrew";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Imperial Aramaic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Inscriptional Pahlavi";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Inscriptional Parthia";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Javanese";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Kaithi";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Kannada";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Kannada UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Kayah Li";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Kharoshthi";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Khmer";
panose-1:2 11 6 6 3 8 4 2 2 4;}
@font-face
{font-family:"Noto Sans Khmer UI";
panose-1:2 11 6 6 3 8 4 2 2 4;}
@font-face
{font-family:"Noto Sans Lao";
panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Noto Sans Lao UI";
panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Noto Sans Lepcha";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Limbu";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Linear B";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Lisu";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Lycian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Lydian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Malayalam";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Malayalam UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Mandaic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Meetei Mayek";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Mongolian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Myanmar";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Myanmar UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans New Tai Lue";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans NKo";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Ogham";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Ol Chiki";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Old Italic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Old Persian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Old South Arabian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Old Turkic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Oriya";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Oriya UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Osmanya";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Phags Pa";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Phoenician";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Rejang";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Runic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Samaritan";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Saurashtra";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Shavian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Sinhala";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Sundanese";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Syloti Nagri";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Symbols";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Syriac Eastern";
panose-1:2 4 5 3 5 3 6 2 2 3;}
@font-face
{font-family:"\@Noto Sans Syriac Eastern";
panose-1:2 4 5 3 5 3 6 2 2 3;}
@font-face
{font-family:"Noto Sans Syriac Estrangela";
panose-1:2 4 5 3 5 3 6 2 2 3;}
@font-face
{font-family:"\@Noto Sans Syriac Estrangela";
panose-1:2 4 5 3 5 3 6 2 2 3;}
@font-face
{font-family:"Noto Sans Syriac Western";
panose-1:2 4 5 3 5 3 6 2 2 3;}
@font-face
{font-family:"\@Noto Sans Syriac Western";
panose-1:2 4 5 3 5 3 6 2 2 3;}
@font-face
{font-family:"Noto Sans Tagalog";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tagbanwa";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tai Le";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tai Tham";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tai Viet";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tamil";
panose-1:2 11 5 6 3 8 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tamil UI";
panose-1:2 11 5 6 3 8 4 2 2 4;}
@font-face
{font-family:"Noto Sans Telugu";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Telugu UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Thaana";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Thai";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Thai UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tibetan";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Tifinagh";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Ugaritic";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans UI";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Vai";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Sans Yi";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Armenian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Bengali";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Devanagari";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Georgian";
panose-1:2 11 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Gujarati";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Kannada";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Khmer";
panose-1:2 2 5 2 6 5 6 2 3 4;}
@font-face
{font-family:"Noto Serif Lao";
panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Noto Serif Malayalam";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Tamil";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Telugu";
panose-1:2 2 5 2 4 5 4 2 2 4;}
@font-face
{font-family:"Noto Serif Thai";
panose-1:2 2 5 0 6 5 0 2 2 0;}
@font-face
{font-family:Dubai;
panose-1:2 11 5 3 3 4 3 3 2 4;}
@font-face
{font-family:"Dubai Light";
panose-1:2 11 3 3 3 4 3 3 2 4;}
@font-face
{font-family:"Dubai Medium";
panose-1:2 11 6 3 3 4 3 3 2 4;}
@font-face
{font-family:"MT Extra";
panose-1:5 5 1 2 1 2 5 2 2 2;}
@font-face
{font-family:Abadi;}
@font-face
{font-family:"Abadi Extra Light";}
@font-face
{font-family:Aharoni;}
@font-face
{font-family:Aldhabi;}
@font-face
{font-family:AngsanaUPC;}
@font-face
{font-family:Aparajita;}
@font-face
{font-family:"Arabic Typesetting";}
@font-face
{font-family:"Arial Nova";}
@font-face
{font-family:"Arial Nova Cond";}
@font-face
{font-family:"Arial Nova Cond Light";}
@font-face
{font-family:"Arial Nova Light";}
@font-face
{font-family:"Avenir Next LT Pro";}
@font-face
{font-family:"Avenir Next LT Pro Light";}
@font-face
{font-family:BatangChe;}
@font-face
{font-family:Bembo;}
@font-face
{font-family:Biome;}
@font-face
{font-family:"Biome Light";}
@font-face
{font-family:"Bookshelf Symbol 7";
panose-1:5 1 1 1 1 1 1 1 1 1;}
@font-face
{font-family:"Browallia New";}
@font-face
{font-family:BrowalliaUPC;}
@font-face
{font-family:Cavolini;}
@font-face
{font-family:CordiaUPC;}
@font-face
{font-family:Dante;}
@font-face
{font-family:DaunPenh;}
@font-face
{font-family:David;}
@font-face
{font-family:Daytona;}
@font-face
{font-family:"Daytona Pro Condensed";}
@font-face
{font-family:"Daytona Pro Condensed Light";}
@font-face
{font-family:"Daytona Pro Light";}
@font-face
{font-family:"DengXian Light";}
@font-face
{font-family:DilleniaUPC;}
@font-face
{font-family:DokChampa;}
@font-face
{font-family:DotumChe;}
@font-face
{font-family:EucrosiaUPC;}
@font-face
{font-family:Euphemia;}
@font-face
{font-family:FangSong;}
@font-face
{font-family:FrankRuehl;}
@font-face
{font-family:FreesiaUPC;}
@font-face
{font-family:"Georgia Pro";}
@font-face
{font-family:"Georgia Pro Black";}
@font-face
{font-family:"Georgia Pro Cond";}
@font-face
{font-family:"Georgia Pro Cond Black";}
@font-face
{font-family:"Georgia Pro Cond Light";}
@font-face
{font-family:"Georgia Pro Cond Semibold";}
@font-face
{font-family:"Georgia Pro Light";}
@font-face
{font-family:"Georgia Pro Semibold";}
@font-face
{font-family:"Gill Sans Nova";}
@font-face
{font-family:"Gill Sans Nova Cond";}
@font-face
{font-family:"Gill Sans Nova Cond Lt";}
@font-face
{font-family:"Gill Sans Nova Cond Ultra Bold";}
@font-face
{font-family:"Gill Sans Nova Cond XBd";}
@font-face
{font-family:"Gill Sans Nova Light";}
@font-face
{font-family:"Gill Sans Nova Ultra Bold";}
@font-face
{font-family:Gisha;}
@font-face
{font-family:Grotesque;}
@font-face
{font-family:"Grotesque Light";}
@font-face
{font-family:GulimChe;}
@font-face
{font-family:Gungsuh;}
@font-face
{font-family:GungsuhChe;}
@font-face
{font-family:"Hadassah Friedlaender";}
@font-face
{font-family:HGGothicE;}
@font-face
{font-family:HGMaruGothicMPRO;}
@font-face
{font-family:HGMinchoE;}
@font-face
{font-family:HGPGothicE;}
@font-face
{font-family:HGPMinchoE;}
@font-face
{font-family:HGPSoeiKakugothicUB;}
@font-face
{font-family:HGSGothicE;}
@font-face
{font-family:HGSMinchoE;}
@font-face
{font-family:HGSoeiKakugothicUB;}
@font-face
{font-family:HGSSoeiKakugothicUB;}
@font-face
{font-family:IrisUPC;}
@font-face
{font-family:"Iskoola Pota";}
@font-face
{font-family:JasmineUPC;}
@font-face
{font-family:KaiTi;}
@font-face
{font-family:Kalinga;}
@font-face
{font-family:Kartika;}
@font-face
{font-family:"Khmer UI";}
@font-face
{font-family:KodchiangUPC;}
@font-face
{font-family:Kokila;}
@font-face
{font-family:"Lao UI";}
@font-face
{font-family:Leelawadee;
panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
{font-family:"Levenim MT";}
@font-face
{font-family:LilyUPC;}
@font-face
{font-family:Meiryo;}
@font-face
{font-family:"Meiryo UI";}
@font-face
{font-family:"Microsoft GothicNeo";}
@font-face
{font-family:"Microsoft GothicNeo Light";}
@font-face
{font-family:"Microsoft Uighur";
panose-1:2 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:MingLiU_HKSCS;}
@font-face
{font-family:Miriam;}
@font-face
{font-family:"Miriam Fixed";}
@font-face
{font-family:"Modern Love";}
@font-face
{font-family:"Modern Love Caps";}
@font-face
{font-family:"Modern Love Grunge";}
@font-face
{font-family:MoolBoran;}
@font-face
{font-family:"MS Outlook";
panose-1:5 1 1 0 1 0 0 0 0 0;}
@font-face
{font-family:"MS PMincho";}
@font-face
{font-family:"MS Reference Sans Serif";
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Narkisim;}
@font-face
{font-family:"Neue Haas Grotesk Text Pro";}
@font-face
{font-family:"News Gothic MT";}
@font-face
{font-family:Nyala;}
@font-face
{font-family:OCRB;}
@font-face
{font-family:"Plantagenet Cherokee";}
@font-face
{font-family:Posterama;}
@font-face
{font-family:"Quire Sans";}
@font-face
{font-family:"Quire Sans Pro Light";}
@font-face
{font-family:"Rockwell Light";}
@font-face
{font-family:"Rockwell Nova";}
@font-face
{font-family:"Rockwell Nova Cond";}
@font-face
{font-family:"Rockwell Nova Cond Light";}
@font-face
{font-family:"Rockwell Nova Extra Bold";}
@font-face
{font-family:"Rockwell Nova Light";}
@font-face
{font-family:Rod;}
@font-face
{font-family:"Sabon Next LT";}
@font-face
{font-family:"Sagona Book";}
@font-face
{font-family:"Sagona ExtraLight";}
@font-face
{font-family:"Sakkal Majalla";}
@font-face
{font-family:"Sanskrit Text";}
@font-face
{font-family:Selawik;}
@font-face
{font-family:"Selawik Light";}
@font-face
{font-family:"Selawik Semibold";}
@font-face
{font-family:"Shonar Bangla";}
@font-face
{font-family:"Simplified Arabic";}
@font-face
{font-family:"Simplified Arabic Fixed";}
@font-face
{font-family:"Source Sans Pro";}
@font-face
{font-family:"Source Sans Pro Black";}
@font-face
{font-family:"Source Sans Pro ExtraLight";}
@font-face
{font-family:"Source Sans Pro Light";}
@font-face
{font-family:"Source Sans Pro SemiBold";}
@font-face
{font-family:"Speak Pro";}
@font-face
{font-family:"Speak Pro Light";}
@font-face
{font-family:STCaiyun;}
@font-face
{font-family:STFangsong;}
@font-face
{font-family:STHupo;}
@font-face
{font-family:STKaiti;}
@font-face
{font-family:STXihei;}
@font-face
{font-family:STXingkai;}
@font-face
{font-family:STXinwei;}
@font-face
{font-family:STZhongsong;}
@font-face
{font-family:"TH SarabunPSK";}
@font-face
{font-family:"The Hand";}
@font-face
{font-family:"The Hand Black";}
@font-face
{font-family:"The Hand Extrablack";}
@font-face
{font-family:"The Hand Light";}
@font-face
{font-family:"The Serif Hand";}
@font-face
{font-family:"The Serif Hand Black";}
@font-face
{font-family:"The Serif Hand Extrablack";}
@font-face
{font-family:"The Serif Hand Light";}
@font-face
{font-family:"Tisa Offc Serif Pro";}
@font-face
{font-family:"Tisa Offc Serif Pro Thin";}
@font-face
{font-family:"Traditional Arabic";}
@font-face
{font-family:"UD Digi Kyokasho N-B";}
@font-face
{font-family:"UD Digi Kyokasho N-R";}
@font-face
{font-family:"UD Digi Kyokasho NK-B";}
@font-face
{font-family:"UD Digi Kyokasho NK-R";}
@font-face
{font-family:"UD Digi Kyokasho NP-B";}
@font-face
{font-family:"UD Digi Kyokasho NP-R";}
@font-face
{font-family:Univers;}
@font-face
{font-family:"Univers Condensed";}
@font-face
{font-family:"Univers Condensed Light";}
@font-face
{font-family:"Univers Light";}
@font-face
{font-family:"Urdu Typesetting";}
@font-face
{font-family:Utsaah;}
@font-face
{font-family:Vani;}
@font-face
{font-family:"Verdana Pro";}
@font-face
{font-family:"Verdana Pro Black";}
@font-face
{font-family:"Verdana Pro Cond";}
@font-face
{font-family:"Verdana Pro Cond Black";}
@font-face
{font-family:"Verdana Pro Cond Light";}
@font-face
{font-family:"Verdana Pro Cond SemiBold";}
@font-face
{font-family:"Verdana Pro Light";}
@font-face
{font-family:"Verdana Pro SemiBold";}
@font-face
{font-family:Vijaya;}
@font-face
{font-family:"Walbaum Display";}
@font-face
{font-family:"Walbaum Display Heavy";}
@font-face
{font-family:"Walbaum Display Light";}
@font-face
{font-family:"Walbaum Display SemiBold";}
@font-face
{font-family:"Walbaum Heading";}
@font-face
{font-family:"Walbaum Text";}
@font-face
{font-family:"Yu Mincho";}
@font-face
{font-family:"Yu Mincho Demibold";}
@font-face
{font-family:"Yu Mincho Light";}
@font-face
{font-family:"\@MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
h1
{mso-style-link:"Heading 1 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.3in;
text-indent:-.3in;
page-break-before:always;
page-break-after:avoid;
font-size:14.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
h2
{mso-style-link:"Heading 2 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.4in;
text-indent:-.4in;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
h3
{mso-style-link:"Heading 3 Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.5in;
text-indent:-.5in;
page-break-after:avoid;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
h4
{mso-style-link:"Heading 4 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.6in;
text-indent:-.6in;
page-break-after:avoid;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
h5
{mso-style-link:"Heading 5 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.7in;
text-indent:-.7in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;
font-style:italic;}
h6
{mso-style-link:"Heading 6 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.8in;
text-indent:-.8in;
font-size:11.0pt;
font-family:"Times New Roman",serif;
font-weight:bold;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
{mso-style-link:"Heading 7 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.9in;
text-indent:-.9in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
{mso-style-link:"Heading 8 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.0in;
text-indent:-1.0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;
font-style:italic;}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
{mso-style-link:"Heading 9 Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.1in;
text-indent:-1.1in;
font-size:11.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:10.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:20.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:30.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:40.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex5, li.MsoIndex5, div.MsoIndex5
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:50.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex6, li.MsoIndex6, div.MsoIndex6
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:60.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex7, li.MsoIndex7, div.MsoIndex7
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:70.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex8, li.MsoIndex8, div.MsoIndex8
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:80.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndex9, li.MsoIndex9, div.MsoIndex9
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.25in;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc1, li.MsoToc1, div.MsoToc1
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc2, li.MsoToc2, div.MsoToc2
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc3, li.MsoToc3, div.MsoToc3
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:20.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc4, li.MsoToc4, div.MsoToc4
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:30.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc5, li.MsoToc5, div.MsoToc5
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:40.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc6, li.MsoToc6, div.MsoToc6
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:50.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc7, li.MsoToc7, div.MsoToc7
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:60.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc8, li.MsoToc8, div.MsoToc8
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:70.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToc9, li.MsoToc9, div.MsoToc9
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:80.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoNormalIndent, li.MsoNormalIndent, div.MsoNormalIndent
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
{mso-style-link:"Footnote Text Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:9.0pt;
font-family:"Arial",sans-serif;}
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
{mso-style-link:"Comment Text Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{mso-style-link:"Header Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{mso-style-link:"Footer Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.MsoCaption, li.MsoCaption, div.MsoCaption
{margin-top:6.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.MsoTof, li.MsoTof, div.MsoTof
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:20.0pt;
text-indent:-20.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoEnvelopeAddress, li.MsoEnvelopeAddress, div.MsoEnvelopeAddress
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:2.0in;
font-size:12.0pt;
font-family:"Arial",sans-serif;}
p.MsoEnvelopeReturn, li.MsoEnvelopeReturn, div.MsoEnvelopeReturn
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
span.MsoFootnoteReference
{vertical-align:super;}
span.MsoEndnoteReference
{vertical-align:super;}
p.MsoEndnoteText, li.MsoEndnoteText, div.MsoEndnoteText
{mso-style-link:"Endnote Text Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoToa, li.MsoToa, div.MsoToa
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:10.0pt;
text-indent:-10.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoMacroText, li.MsoMacroText, div.MsoMacroText
{mso-style-link:"Macro Text Char";
margin:0in;
font-size:10.0pt;
font-family:"Courier New";}
p.MsoToaHeading, li.MsoToaHeading, div.MsoToaHeading
{margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:12.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.MsoList, li.MsoList, div.MsoList
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.25in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListBullet, li.MsoListBullet, div.MsoListBullet
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.25in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListNumber, li.MsoListNumber, div.MsoListNumber
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.25in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoList2, li.MsoList2, div.MsoList2
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoList3, li.MsoList3, div.MsoList3
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.75in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoList4, li.MsoList4, div.MsoList4
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.0in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoList5, li.MsoList5, div.MsoList5
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.25in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListBullet2, li.MsoListBullet2, div.MsoListBullet2
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListBullet3, li.MsoListBullet3, div.MsoListBullet3
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.75in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListBullet4, li.MsoListBullet4, div.MsoListBullet4
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.0in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListBullet5, li.MsoListBullet5, div.MsoListBullet5
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.25in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListNumber2, li.MsoListNumber2, div.MsoListNumber2
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListNumber3, li.MsoListNumber3, div.MsoListNumber3
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.75in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListNumber4, li.MsoListNumber4, div.MsoListNumber4
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:1.0in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListNumber5, li.MsoListNumber5, div.MsoListNumber5
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:99.0pt;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{mso-style-link:"Title Char";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:center;
font-size:16.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.MsoSignature, li.MsoSignature, div.MsoSignature
{mso-style-link:"Signature Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:3.0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
{mso-style-link:"Body Text Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
{mso-style-link:"Body Text Indent Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListContinue, li.MsoListContinue, div.MsoListContinue
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListContinue2, li.MsoListContinue2, div.MsoListContinue2
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.5in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListContinue3, li.MsoListContinue3, div.MsoListContinue3
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.75in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListContinue4, li.MsoListContinue4, div.MsoListContinue4
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:1.0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListContinue5, li.MsoListContinue5, div.MsoListContinue5
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:1.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoMessageHeader, li.MsoMessageHeader, div.MsoMessageHeader
{mso-style-link:"Message Header Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.75in;
text-indent:-.75in;
background:#CCCCCC;
border:none;
padding:0in;
font-size:12.0pt;
font-family:"Arial",sans-serif;}
p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
{mso-style-link:"Subtitle Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:center;
font-size:12.0pt;
font-family:"Arial",sans-serif;}
p.MsoSalutation, li.MsoSalutation, div.MsoSalutation
{mso-style-link:"Salutation Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoDate, li.MsoDate, div.MsoDate
{mso-style-link:"Date Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBodyTextFirstIndent, li.MsoBodyTextFirstIndent, div.MsoBodyTextFirstIndent
{mso-style-link:"Body Text First Indent Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
text-indent:10.5pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBodyTextFirstIndent2, li.MsoBodyTextFirstIndent2, div.MsoBodyTextFirstIndent2
{mso-style-link:"Body Text First Indent 2 Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.25in;
text-indent:10.5pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoNoteHeading, li.MsoNoteHeading, div.MsoNoteHeading
{mso-style-link:"Note Heading Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBodyTextIndent2, li.MsoBodyTextIndent2, div.MsoBodyTextIndent2
{mso-style-link:"Body Text Indent 2 Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.25in;
line-height:200%;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBodyTextIndent3, li.MsoBodyTextIndent3, div.MsoBodyTextIndent3
{mso-style-link:"Body Text Indent 3 Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:.25in;
font-size:8.0pt;
font-family:"Arial",sans-serif;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;}
p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
{mso-style-link:"Document Map Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
background:navy;
font-size:10.0pt;
font-family:"Tahoma",sans-serif;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-link:"Plain Text Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
font-size:10.0pt;
font-family:"Courier New";}
p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig
{mso-style-link:"E-mail Signature Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
address
{mso-style-link:"HTML Address Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-style:italic;}
code
{font-family:"Courier New";}
pre
{mso-style-link:"HTML Preformatted Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Courier New";}
samp
{font-family:"Courier New";}
tt
{font-family:"Courier New";}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
{mso-style-link:"Comment Subject Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-link:"Balloon Text Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:8.0pt;
font-family:"Tahoma",sans-serif;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
{margin:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoRMPane, li.MsoRMPane, div.MsoRMPane
{margin:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
{margin-top:3.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
{margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
{margin-top:0in;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.MsoBibliography, li.MsoBibliography, div.MsoBibliography
{margin-top:0in;
margin-right:0in;
margin-bottom:10.0pt;
margin-left:0in;
line-height:115%;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
span.HTMLAddressChar
{mso-style-name:"HTML Address Char";
mso-style-link:"HTML Address";
font-family:"Arial",sans-serif;
font-style:italic;}
p.nobreak, li.nobreak, div.nobreak
{mso-style-name:nobreak;
mso-style-link:"nobreak Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
page-break-after:avoid;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-link:"Heading 1";
font-family:"Arial",sans-serif;
font-weight:bold;}
span.Heading2Char
{mso-style-name:"Heading 2 Char";
mso-style-link:"Heading 2";
font-family:"Arial",sans-serif;
font-weight:bold;}
span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-link:"Heading 3";
font-family:"Arial",sans-serif;
font-weight:bold;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-link:"Heading 4";
font-family:"Arial",sans-serif;
font-weight:bold;}
span.Heading5Char
{mso-style-name:"Heading 5 Char";
mso-style-link:"Heading 5";
font-family:"Arial",sans-serif;
font-weight:bold;
font-style:italic;}
span.Heading6Char
{mso-style-name:"Heading 6 Char";
mso-style-link:"Heading 6";
font-family:"Times New Roman",serif;
font-weight:bold;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-link:"HTML Preformatted";
font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.Heading7Char
{mso-style-name:"Heading 7 Char";
mso-style-link:"Heading 7";}
span.Heading8Char
{mso-style-name:"Heading 8 Char";
mso-style-link:"Heading 8";
font-style:italic;}
span.Heading9Char
{mso-style-name:"Heading 9 Char";
mso-style-link:"Heading 9";
font-family:"Arial",sans-serif;}
span.FootnoteTextChar
{mso-style-name:"Footnote Text Char";
mso-style-link:"Footnote Text";
font-family:"Arial",sans-serif;}
span.CommentTextChar
{mso-style-name:"Comment Text Char";
mso-style-link:"Comment Text";
font-family:"Arial",sans-serif;}
span.HeaderChar
{mso-style-name:"Header Char";
mso-style-link:Header;
font-family:"Arial",sans-serif;}
span.FooterChar
{mso-style-name:"Footer Char";
mso-style-link:Footer;
font-family:"Arial",sans-serif;}
span.EndnoteTextChar
{mso-style-name:"Endnote Text Char";
mso-style-link:"Endnote Text";
font-family:"Arial",sans-serif;}
span.MacroTextChar
{mso-style-name:"Macro Text Char";
mso-style-link:"Macro Text";
font-family:Consolas;}
span.TitleChar
{mso-style-name:"Title Char";
mso-style-link:Title;
font-family:"Cambria",serif;
letter-spacing:-.5pt;}
span.SignatureChar
{mso-style-name:"Signature Char";
mso-style-link:Signature;
font-family:"Arial",sans-serif;}
span.BodyTextChar
{mso-style-name:"Body Text Char";
mso-style-link:"Body Text";
font-family:"Arial",sans-serif;}
span.BodyTextIndentChar
{mso-style-name:"Body Text Indent Char";
mso-style-link:"Body Text Indent";
font-family:"Arial",sans-serif;}
span.MessageHeaderChar
{mso-style-name:"Message Header Char";
mso-style-link:"Message Header";
font-family:"Cambria",serif;
background:#CCCCCC;}
span.SubtitleChar
{mso-style-name:"Subtitle Char";
mso-style-link:Subtitle;
font-family:"Calibri",sans-serif;
color:#5A5A5A;
letter-spacing:.75pt;}
span.SalutationChar
{mso-style-name:"Salutation Char";
mso-style-link:Salutation;
font-family:"Arial",sans-serif;}
span.DateChar
{mso-style-name:"Date Char";
mso-style-link:Date;
font-family:"Arial",sans-serif;}
span.BodyTextFirstIndentChar
{mso-style-name:"Body Text First Indent Char";
mso-style-link:"Body Text First Indent";
font-family:"Arial",sans-serif;}
span.BodyTextFirstIndent2Char
{mso-style-name:"Body Text First Indent 2 Char";
mso-style-link:"Body Text First Indent 2";
font-family:"Arial",sans-serif;}
span.NoteHeadingChar
{mso-style-name:"Note Heading Char";
mso-style-link:"Note Heading";
font-family:"Arial",sans-serif;}
span.BodyTextIndent2Char
{mso-style-name:"Body Text Indent 2 Char";
mso-style-link:"Body Text Indent 2";
font-family:"Arial",sans-serif;}
span.BodyTextIndent3Char
{mso-style-name:"Body Text Indent 3 Char";
mso-style-link:"Body Text Indent 3";
font-family:"Arial",sans-serif;}
span.DocumentMapChar
{mso-style-name:"Document Map Char";
mso-style-link:"Document Map";
font-family:"Segoe UI",sans-serif;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-link:"Plain Text";
font-family:Consolas;}
span.E-mailSignatureChar
{mso-style-name:"E-mail Signature Char";
mso-style-link:"E-mail Signature";
font-family:"Arial",sans-serif;}
span.CommentSubjectChar
{mso-style-name:"Comment Subject Char";
mso-style-link:"Comment Subject";
font-family:"Arial",sans-serif;
font-weight:bold;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-link:"Balloon Text";
font-family:"Segoe UI",sans-serif;}
span.nobreakChar
{mso-style-name:"nobreak Char";
mso-style-link:nobreak;
font-family:"Arial",sans-serif;}
span.normalChar1
{mso-style-name:"normal Char1";
mso-style-link:Normal1;}
p.Normal1, li.Normal1, div.Normal1
{mso-style-name:Normal1;
mso-style-link:"normal Char1";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:justify;
text-indent:12.25pt;
font-size:10.0pt;
font-family:"Times New Roman",serif;}
p.HTMLBody, li.HTMLBody, div.HTMLBody
{mso-style-name:"HTML Body";
margin:0in;
text-autospace:none;
font-size:9.0pt;
font-family:"Comic Sans MS";}
p.ToDo, li.ToDo, div.ToDo
{mso-style-name:ToDo;
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
background:yellow;
border:none;
padding:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.normalChar, li.normalChar, div.normalChar
{mso-style-name:"normal Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:justify;
text-indent:12.25pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.XMLexample, li.XMLexample, div.XMLexample
{mso-style-name:"XML example";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:justify;
font-size:10.0pt;
font-family:"Times New Roman",serif;}
span.CodeBlockChar
{mso-style-name:"CodeBlock Char";
mso-style-link:CodeBlock;
font-family:Courier;}
p.CodeBlock, li.CodeBlock, div.CodeBlock
{mso-style-name:CodeBlock;
mso-style-link:"CodeBlock Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.25in;
font-size:9.0pt;
font-family:Courier;}
p.OpenIssue, li.OpenIssue, div.OpenIssue
{mso-style-name:OpenIssue;
margin-right:0in;
margin-left:.25in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Times New Roman",serif;}
p.DocHistory, li.DocHistory, div.DocHistory
{mso-style-name:"Doc History";
margin-right:0in;
margin-left:0in;
text-align:center;
font-size:9.0pt;
font-family:"Arial",sans-serif;
letter-spacing:.5pt;}
span.BulletListChar
{mso-style-name:"Bullet List Char";
mso-style-link:"Bullet List";
font-family:"Arial",sans-serif;}
p.BulletList, li.BulletList, div.BulletList
{mso-style-name:"Bullet List";
mso-style-link:"Bullet List Char";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:27.0pt;
text-indent:-9.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.BulletListdoubleindentalternate, li.BulletListdoubleindentalternate, div.BulletListdoubleindentalternate
{mso-style-name:"Bullet List \(double indent alternate\)";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:45.0pt;
text-indent:-9.0pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.BulletListdoubleindent, li.BulletListdoubleindent, div.BulletListdoubleindent
{mso-style-name:"Bullet List \(double indent\)";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:45.35pt;
text-indent:-9.35pt;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
span.CodeChar
{mso-style-name:"Code Char";
mso-style-link:Code;
font-family:"Courier New";}
p.Code, li.Code, div.Code
{mso-style-name:Code;
mso-style-link:"Code Char";
margin-top:1.0pt;
margin-right:0in;
margin-bottom:1.0pt;
margin-left:0in;
font-size:8.0pt;
font-family:"Courier New";}
p.NumberedListdoubleindent, li.NumberedListdoubleindent, div.NumberedListdoubleindent
{mso-style-name:"Numbered List \(double indent\)";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:.75in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.NumberedList, li.NumberedList, div.NumberedList
{mso-style-name:"Numbered List";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:.5in;
text-indent:-.25in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.copyright, li.copyright, div.copyright
{mso-style-name:copyright;
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:8.0pt;
font-family:"Verdana",sans-serif;}
p.Instructions, li.Instructions, div.Instructions
{mso-style-name:Instructions;
margin-top:9.0pt;
margin-right:0in;
margin-bottom:9.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
color:#C75800;
display:none;}
span.XMLExcerptChar
{mso-style-name:"XML Excerpt Char";
mso-style-link:"XML Excerpt";
font-family:"Courier New";}
p.XMLExcerpt, li.XMLExcerpt, div.XMLExcerpt
{mso-style-name:"XML Excerpt";
mso-style-link:"XML Excerpt Char";
margin:0in;
background:#F3F3F3;
border:none;
padding:0in;
font-size:10.0pt;
font-family:"Courier New";}
p.NewTableFontHeading, li.NewTableFontHeading, div.NewTableFontHeading
{mso-style-name:"New Table Font Heading";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:0in;
text-align:center;
line-height:120%;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.TableCaption, li.TableCaption, div.TableCaption
{mso-style-name:"Table Caption";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:0in;
text-align:center;
line-height:120%;
page-break-after:avoid;
font-size:11.0pt;
font-family:"Times New Roman",serif;
font-style:italic;}
p.ReferenceLine, li.ReferenceLine, div.ReferenceLine
{mso-style-name:"Reference Line";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:6.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.ShortReturnAddress, li.ShortReturnAddress, div.ShortReturnAddress
{mso-style-name:"Short Return Address";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.PPLine, li.PPLine, div.PPLine
{mso-style-name:"PP Line";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:3.0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.InsideAddressName, li.InsideAddressName, div.InsideAddressName
{mso-style-name:"Inside Address Name";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.StyleTableCellComplex9ptBefore0cmHanging032cm, li.StyleTableCellComplex9ptBefore0cmHanging032cm, div.StyleTableCellComplex9ptBefore0cmHanging032cm
{mso-style-name:"Style Table Cell + \(Complex\) 9 pt Before\: 0 cm Hanging\: 0\.32 cm\.\.\.";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.Heading, li.Heading, div.Heading
{mso-style-name:Heading;
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-align:center;
font-size:16.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.Index, li.Index, div.Index
{mso-style-name:Index;
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
p.StyleHeading112pt, li.StyleHeading112pt, div.StyleHeading112pt
{mso-style-name:"Style Heading 1 + 12 pt";
margin-top:12.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.25in;
text-indent:-.25in;
page-break-before:always;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.StyleHeading2Arial10pt, li.StyleHeading2Arial10pt, div.StyleHeading2Arial10pt
{mso-style-name:"Style Heading 2 + Arial 10 pt";
margin-top:14.0pt;
margin-right:0in;
margin-bottom:14.0pt;
margin-left:0in;
font-size:12.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.StyleHeading2Arial10pt1, li.StyleHeading2Arial10pt1, div.StyleHeading2Arial10pt1
{mso-style-name:"Style Heading 2 + Arial 10 pt1";
margin-top:14.0pt;
margin-right:0in;
margin-bottom:14.0pt;
margin-left:.25in;
text-indent:-.25in;
font-size:12.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
p.TableContents, li.TableContents, div.TableContents
{mso-style-name:"Table Contents";
margin-top:2.0pt;
margin-right:0in;
margin-bottom:2.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
p.startli, li.startli, div.startli
{mso-style-name:startli;
margin-right:0in;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
p.richtextnodeselected, li.richtextnodeselected, div.richtextnodeselected
{mso-style-name:richtextnodeselected;
margin-right:0in;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.CodeblockChar0
{mso-style-name:"Codeblock Char";
mso-style-link:Codeblock;
font-family:"Courier New";
background:#F3F3F3;}
p.Codeblock0, li.Codeblock0, div.Codeblock0
{mso-style-name:Codeblock;
mso-style-link:"Codeblock Char";
margin:0in;
background:#F3F3F3;
border:none;
padding:0in;
font-size:9.0pt;
font-family:"Courier New";}
p.TableHeading, li.TableHeading, div.TableHeading
{mso-style-name:"Table Heading";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
span.dataexampleChar
{mso-style-name:"data example Char";
mso-style-link:"data example";
font-family:"Courier New";}
p.dataexample, li.dataexample, div.dataexample
{mso-style-name:"data example";
mso-style-link:"data example Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
text-indent:.5in;
font-size:10.0pt;
font-family:"Courier New";}
span.AuthorChar
{mso-style-name:"Author Char";
mso-style-link:Author;
font-family:"Arial",sans-serif;}
p.Author, li.Author, div.Author
{mso-style-name:Author;
mso-style-link:"Author Char";
margin-top:3.0pt;
margin-right:0in;
margin-bottom:0in;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
span.AppendixH1Char
{mso-style-name:"Appendix H1 Char";
mso-style-link:"Appendix H1";
font-family:"Arial",sans-serif;
font-weight:bold;}
p.AppendixH1, li.AppendixH1, div.AppendixH1
{mso-style-name:"Appendix H1";
mso-style-link:"Appendix H1 Char";
margin-top:6.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:.5in;
text-indent:-.25in;
page-break-before:always;
page-break-after:avoid;
font-size:14.0pt;
font-family:"Arial",sans-serif;
font-weight:bold;}
span.WW8Num2z0
{mso-style-name:WW8Num2z0;
mso-style-link:"Table Cell Char";
font-family:Symbol;}
p.TableCellChar, li.TableCellChar, div.TableCellChar
{mso-style-name:"Table Cell Char";
mso-style-link:WW8Num2z0;
margin-top:3.0pt;
margin-right:0in;
margin-bottom:3.0pt;
margin-left:0in;
font-size:10.0pt;
font-family:"Arial",sans-serif;}
span.TableCellChar1
{mso-style-name:"Table Cell Char1";
font-family:"Arial",sans-serif;}
span.CodeCharacter
{mso-style-name:"Code \(Character\)";
font-family:"Courier New";}
span.XMLReference
{mso-style-name:"XML Reference";
font-family:"Courier New";}
span.XMLExcerptEmphasis
{mso-style-name:"XML Excerpt Emphasis";
font-family:"Courier New";
font-weight:bold;}
span.TableFont
{mso-style-name:"Table Font";
font-family:"Arial",sans-serif;}
span.FootnoteCharacters
{mso-style-name:"Footnote Characters";
vertical-align:super;}
span.StyleHeading112ptChar
{mso-style-name:"Style Heading 1 + 12 pt Char";
font-family:"Arial",sans-serif;
font-weight:bold;}
span.NumberingSymbols
{mso-style-name:"Numbering Symbols";}
span.EndnoteCharacters
{mso-style-name:"Endnote Characters";}
span.LinkChar
{mso-style-name:"Link Char";
font-family:"Arial",sans-serif;
color:#0070C0;
text-decoration:underline;}
span.h1
{mso-style-name:h1;}
span.bylinepipe
{mso-style-name:bylinepipe;}
span.InternetLink
{mso-style-name:"Internet Link";
color:blue;
text-decoration:underline;}
span.SourceText
{mso-style-name:"Source Text";
font-family:"Liberation Mono",serif;}
span.msoIns
{mso-style-name:"";
text-decoration:underline;
color:teal;}
span.msoDel
{mso-style-name:"";
text-decoration:line-through;
color:red;}
.MsoChpDefault
{font-size:10.0pt;}
/* Page Definitions */
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 89.85pt 1.0in 89.85pt;}
div.WordSection1
{page:WordSection1;}
@page WordSection2
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection2
{page:WordSection2;}
@page WordSection3
{size:11.0in 8.5in;
margin:1.25in 1.0in 1.25in 1.0in;}
div.WordSection3
{page:WordSection3;}
/* List Definitions */
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'>
<div class=WordSection1>
<p class=MsoHeader><a name="_Toc38880365"></a><a name="_Toc62570038"></a><a
name="_Toc177399008"></a><a name="_Toc175057294"></a><a name="_Toc199516203"></a><a
name="_Toc194983883"></a><a name="_Toc243112722"></a><a name="_Toc349042596">GFD-R-P.240&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </a><span
lang=DE>Michael&nbsp;J&nbsp;Beckerle,&nbsp; Owl&nbsp;Cyber&nbsp;Defense/Tresys</span></p>
<p class=MsoHeader><span lang=DE>OGF DFDL WG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Stephen
M Hanson, IBM</p>
<p class=MsoHeader><span lang=DE>dfdl-wg@ogf.org </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; February
2021</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoTitle>Data Format Description Language (DFDL) v1.0 Specification</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal><u>Status of This Document</u></p>
<p class=MsoNormal>Grid Final Draft (GFD)</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal><u>Obsoletes</u></p>
<p class=MsoNormal>This document incorporates all errata and clarifications to
earlier DFDL v1.0 specification documents and therefore obsoletes both: </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>GFD-P-R.207 dated September 2014 [OBSOLETE_DFDL_207]
</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>GFD-P-R.174 dated January 2011 [OBSOLETE_DFDL_174].
</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal><u>Copyright Notice</u></p>
<p class=MsoNormal>Copyright &copy; Global Grid Forum (2004-2006).&nbsp; Some
Rights Reserved. Distribution is unlimited.</p>
<p class=MsoNormal>Copyright &copy; Open Grid Forum (2006-2021).&nbsp; Some
Rights Reserved. Distribution is unlimited</p>
<p class=MsoNormal><a name="_Ref525097868"></a><a name="_Toc177399009"></a><a
name="_Toc175057295"></a><a name="_Toc194983884"><u><span style='text-decoration:
none'>&nbsp;</span></u></a></p>
<p class=MsoNormal><u>Abstract</u></p>
<p class=MsoNormal>This document provides a definition of a standard Data
Format Description Language (DFDL).&nbsp; This language allows description of
text, dense binary, and legacy data formats in a vendor-neutral declarative
manner. DFDL is an extension to the XML Schema Description Language (XSD).</p>
<u><span style='font-size:10.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></u>
<p class=MsoNormal style='margin:0in'><u><span style='text-decoration:none'>&nbsp;</span></u></p>
</div>
<span style='font-size:10.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span>
<div class=WordSection2>
<p class=MsoToc1><u>Contents</u></p>
<p class=MsoToc1><a href="#_Toc62570038">Data Format Description Language
(DFDL) v1.0 Specification<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>1</span></a></p>
<p class=MsoToc1><a href="#_Toc62570039">1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Introduction<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>8</span></a></p>
<p class=MsoToc2><a href="#_Toc62570040">1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Why
is DFDL Needed?<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>9</span></a></p>
<p class=MsoToc2><a href="#_Toc62570041">1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>What
is DFDL?<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>9</span></a></p>
<p class=MsoToc3><a href="#_Toc62570042">1.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Simple
Example<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>10</span></a></p>
<p class=MsoToc2><a href="#_Toc62570043">1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>What
DFDL is not<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>12</span></a></p>
<p class=MsoToc2><a href="#_Toc62570044">1.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Scope
of version 1.0<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>13</span></a></p>
<p class=MsoToc1><a href="#_Toc62570045">2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Overview
of the Specification<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>14</span></a></p>
<p class=MsoToc1><a href="#_Toc62570046">3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Notational
and Definitional Conventions<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>15</span></a></p>
<p class=MsoToc2><a href="#_Toc62570047">3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Glossary
and Terminology<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>15</span></a></p>
<p class=MsoToc2><a href="#_Toc62570048">3.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Failure
Types<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>15</span></a></p>
<p class=MsoToc1><a href="#_Toc62570049">4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
DFDL Information Set (Infoset)<span style='color:windowtext;display:none;
text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>17</span></a></p>
<p class=MsoToc2><a href="#_Toc62570050">4.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&quot;No
Value''<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>18</span></a></p>
<p class=MsoToc2><a href="#_Toc62570051">4.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Information
Items<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>18</span></a></p>
<p class=MsoToc3><a href="#_Toc62570052">4.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Document
Information Item<span style='color:windowtext;display:none;text-decoration:
none'>.. </span><span
style='color:windowtext;display:none;text-decoration:none'>18</span></a></p>
<p class=MsoToc3><a href="#_Toc62570053">4.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Element
Information Items<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>18</span></a></p>
<p class=MsoToc2><a href="#_Toc62570054">4.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Information Item Order<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>19</span></a></p>
<p class=MsoToc2><a href="#_Toc62570055">4.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Augmented Infoset<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>19</span></a></p>
<p class=MsoToc1><a href="#_Toc62570056">5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Schema Component Model<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>20</span></a></p>
<p class=MsoToc2><a href="#_Toc62570057">5.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Simple Types<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>20</span></a></p>
<p class=MsoToc2><a href="#_Toc62570058">5.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Subset of XML Schema<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>21</span></a></p>
<p class=MsoToc2><a href="#_Toc62570059">5.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>XSD
Facets, min/maxOccurs, default, and fixed<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>23</span></a></p>
<p class=MsoToc3><a href="#_Toc62570060">5.3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MinOccurs,
MaxOccurs<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>23</span></a></p>
<p class=MsoToc3><a href="#_Toc62570061">5.3.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MinLength,
MaxLength<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>23</span></a></p>
<p class=MsoToc3><a href="#_Toc62570062">5.3.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MaxInclusive,
MaxExclusive, MinExclusive, MinInclusive, TotalDigits, FractionDigits<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>23</span></a></p>
<p class=MsoToc3><a href="#_Toc62570063">5.3.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Pattern<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>24</span></a></p>
<p class=MsoToc3><a href="#_Toc62570064">5.3.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Enumeration
Values<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>24</span></a></p>
<p class=MsoToc3><a href="#_Toc62570065">5.3.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Default<span
style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>24</span></a></p>
<p class=MsoToc3><a href="#_Toc62570066">5.3.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Fixed<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>24</span></a></p>
<p class=MsoToc2><a href="#_Toc62570067">5.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Compatibility
with Other Annotation Language Schemas<span style='color:windowtext;display:
none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>24</span></a></p>
<p class=MsoToc1><a href="#_Toc62570068">6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Syntax Basics<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>25</span></a></p>
<p class=MsoToc2><a href="#_Toc62570069">6.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Namespaces<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>25</span></a></p>
<p class=MsoToc2><a href="#_Toc62570070">6.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
DFDL Annotation Elements<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>25</span></a></p>
<p class=MsoToc2><a href="#_Toc62570071">6.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Properties<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>27</span></a></p>
<p class=MsoToc3><a href="#_Toc62570072">6.3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
String Literals<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>28</span></a></p>
<p class=MsoToc3><a href="#_Toc62570073">6.3.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Expressions<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>33</span></a></p>
<p class=MsoToc3><a href="#_Toc62570074">6.3.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Regular Expressions<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>33</span></a></p>
<p class=MsoToc3><a href="#_Toc62570075">6.3.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Enumerations
in DFDL<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>33</span></a></p>
<p class=MsoToc1><a href="#_Toc62570076">7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Syntax
of DFDL Annotation Elements<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>34</span></a></p>
<p class=MsoToc2><a href="#_Toc62570077">7.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Component
Format Annotations<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>34</span></a></p>
<p class=MsoToc3><a href="#_Toc62570078">7.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Property
Binding Syntax<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>35</span></a></p>
<p class=MsoToc3><a href="#_Toc62570079">7.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Empty
String as a Representation Property Value<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>37</span></a></p>
<p class=MsoToc2><a href="#_Toc62570080">7.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:defineFormat
- Reusable Data Format Definitions<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>37</span></a></p>
<p class=MsoToc3><a href="#_Toc62570081">7.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Using/Referencing
a Named Format Definition: The dfdl:ref Property<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>37</span></a></p>
<p class=MsoToc3><a href="#_Toc62570082">7.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Inheritance
for dfdl:defineFormat<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>38</span></a></p>
<p class=MsoToc2><a href="#_Toc62570083">7.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:defineEscapeScheme Defining Annotation Element<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>38</span></a></p>
<p class=MsoToc3><a href="#_Toc62570084">7.3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Using/Referencing
a Named escapeScheme Definition<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>39</span></a></p>
<p class=MsoToc2><a href="#_Toc62570085">7.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:escapeScheme Annotation Element<span style='color:windowtext;display:none;
text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>39</span></a></p>
<p class=MsoToc2><a href="#_Toc62570086">7.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:assert Statement Annotation Element<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>39</span></a></p>
<p class=MsoToc3><a href="#_Toc62570087">7.5.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for dfdl:assert<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>40</span></a></p>
<p class=MsoToc2><a href="#_Toc62570088">7.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:discriminator Statement Annotation Element<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>42</span></a></p>
<p class=MsoToc3><a href="#_Toc62570089">7.6.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for dfdl:discriminator<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>42</span></a></p>
<p class=MsoToc2><a href="#_Toc62570090">7.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Variable Annotations<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>45</span></a></p>
<p class=MsoToc3><a href="#_Toc62570091">7.7.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:defineVariable
Annotation Element<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>46</span></a></p>
<p class=MsoToc3><a href="#_Toc62570092">7.7.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:newVariableInstance Statement Annotation Element<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>47</span></a></p>
<p class=MsoToc3><a href="#_Toc62570093">7.7.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:setVariable Statement Annotation Element<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>48</span></a></p>
<p class=MsoToc1><a href="#_Toc62570094">8<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Property
Scoping and DFDL Schema Checking<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>50</span></a></p>
<p class=MsoToc2><a href="#_Toc62570095">8.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Property
Scoping<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>50</span></a></p>
<p class=MsoToc3><a href="#_Toc62570096">8.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Property
Scoping Rules<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>50</span></a></p>
<p class=MsoToc3><a href="#_Toc62570097">8.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Providing
Defaults for DFDL properties<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>50</span></a></p>
<p class=MsoToc3><a href="#_Toc62570098">8.1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Combining
DFDL Representation Properties from a dfdl:defineFormat<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>51</span></a></p>
<p class=MsoToc3><a href="#_Toc62570099">8.1.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Combining
DFDL Properties from References<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>52</span></a></p>
<p class=MsoToc2><a href="#_Toc62570100">8.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Schema Checking<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>54</span></a></p>
<p class=MsoToc3><a href="#_Toc62570101">8.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Schema
Component Constraint: Unique Particle Attribution<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>55</span></a></p>
<p class=MsoToc3><a href="#_Toc62570102">8.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Optional
Checks and Warnings<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>55</span></a></p>
<p class=MsoToc1><a href="#_Toc62570103">9<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Processing Introduction<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>56</span></a></p>
<p class=MsoToc2><a href="#_Toc62570104">9.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parser
Overview<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>56</span></a></p>
<p class=MsoToc3><a href="#_Toc62570105">9.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Points
of Uncertainty<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>57</span></a></p>
<p class=MsoToc3><a href="#_Toc62570106">9.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Processing
Error<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>57</span></a></p>
<p class=MsoToc3><a href="#_Toc62570107">9.1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Recoverable
Error<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>57</span></a></p>
<p class=MsoToc2><a href="#_Toc62570108">9.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Data Syntax Grammar<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>57</span></a></p>
<p class=MsoToc3><a href="#_Toc62570109">9.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Nil
Representation<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>60</span></a></p>
<p class=MsoToc3><a href="#_Toc62570110">9.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Empty
Representation<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>60</span></a></p>
<p class=MsoToc3><a href="#_Toc62570111">9.2.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Normal
Representation<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>60</span></a></p>
<p class=MsoToc3><a href="#_Toc62570112">9.2.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Absent
Representation<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>60</span></a></p>
<p class=MsoToc3><a href="#_Toc62570113">9.2.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Zero-length
Representation<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>61</span></a></p>
<p class=MsoToc3><a href="#_Toc62570114">9.2.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Missing<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>61</span></a></p>
<p class=MsoToc3><a href="#_Toc62570115">9.2.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Examples
of Missing and Empty Representation<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>61</span></a></p>
<p class=MsoToc3><a href="#_Toc62570116">9.2.8<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Round
Trip Ambiguities<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>62</span></a></p>
<p class=MsoToc2><a href="#_Toc62570117">9.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parsing
Algorithm<span style='color:windowtext;display:none;text-decoration:none'>.. </span><span
style='color:windowtext;display:none;text-decoration:none'>62</span></a></p>
<p class=MsoToc3><a href="#_Toc62570118">9.3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Known-to-exist
and Known-not-to-exist<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>63</span></a></p>
<p class=MsoToc3><a href="#_Toc62570119">9.3.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Establishing
Representation<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>64</span></a></p>
<p class=MsoToc3><a href="#_Toc62570120">9.3.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Resolving
Points of Uncertainty<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>65</span></a></p>
<p class=MsoToc2><a href="#_Toc62570121">9.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Element
Defaults<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>66</span></a></p>
<p class=MsoToc3><a href="#_Toc62570122">9.4.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Definitions<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>66</span></a></p>
<p class=MsoToc3><a href="#_Toc62570123">9.4.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Element
Defaults When Parsing<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>67</span></a></p>
<p class=MsoToc3><a href="#_Toc62570124">9.4.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Element
Defaults When Unparsing<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>69</span></a></p>
<p class=MsoToc2><a href="#_Toc62570125">9.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Evaluation
Order for Statement Annotations<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>70</span></a></p>
<p class=MsoToc3><a href="#_Toc62570126">9.5.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Asserts
and Discriminators with testKind 'expression'<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>71</span></a></p>
<p class=MsoToc3><a href="#_Toc62570127">9.5.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Discriminators
with testKind 'expression'<span style='color:windowtext;display:none;
text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>71</span></a></p>
<p class=MsoToc3><a href="#_Toc62570128">9.5.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Elements
and setVariable<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>71</span></a></p>
<p class=MsoToc3><a href="#_Toc62570129">9.5.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Controlling
the Order of Statement Evaluation<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>71</span></a></p>
<p class=MsoToc2><a href="#_Toc62570130">9.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Validation<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>71</span></a></p>
<p class=MsoToc2><a href="#_Toc62570131">9.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparser
Infoset Augmentation Algorithm<span style='color:windowtext;display:none;
text-decoration:none'>.. </span><span
style='color:windowtext;display:none;text-decoration:none'>72</span></a></p>
<p class=MsoToc1><a href="#_Toc62570132">10<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Overview:
Representation Properties and their Format Semantics<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>73</span></a></p>
<p class=MsoToc1><a href="#_Toc62570133">11<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Common to both Content and Framing<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>74</span></a></p>
<p class=MsoToc2><a href="#_Toc62570134">11.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unicode
Byte Order Mark (BOM)<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>77</span></a></p>
<p class=MsoToc2><a href="#_Toc62570135">11.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Character
Encoding and Decoding Errors<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>77</span></a></p>
<p class=MsoToc3><a href="#_Toc62570136">11.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Property
dfdl:encodingErrorPolicy<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>77</span></a></p>
<p class=MsoToc3><a href="#_Toc62570137">11.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unicode
UTF-16 Decoding/Encoding Non-Errors<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>79</span></a></p>
<p class=MsoToc3><a href="#_Toc62570138">11.2.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Preserving
Data Containing Decoding Errors<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>79</span></a></p>
<p class=MsoToc2><a href="#_Toc62570139">11.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Byte
Order and Bit Order<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>79</span></a></p>
<p class=MsoToc2><a href="#_Toc62570140">11.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:bitOrder
Example<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>79</span></a></p>
<p class=MsoToc3><a href="#_Toc62570141">11.4.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example
Using Right-to-Left Display for 'leastSignificantBitFirst'<span
style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>80</span></a></p>
<p class=MsoToc3><a href="#_Toc62570142">11.4.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:bitOrder
and Grammar Regions<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>80</span></a></p>
<p class=MsoToc1><a href="#_Toc62570143">12<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Framing<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>81</span></a></p>
<p class=MsoToc2><a href="#_Toc62570144">12.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Aligned
Data<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>81</span></a></p>
<p class=MsoToc3><a href="#_Toc62570145">12.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Implicit
Alignment<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>82</span></a></p>
<p class=MsoToc3><a href="#_Toc62570146">12.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Mandatory
Alignment for Textual Data<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>83</span></a></p>
<p class=MsoToc3><a href="#_Toc62570147">12.1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Mandatory
Alignment for Packed Decimal Data<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>84</span></a></p>
<p class=MsoToc3><a href="#_Toc62570148">12.1.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example:
AlignmentFill<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>84</span></a></p>
<p class=MsoToc2><a href="#_Toc62570149">12.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for Specifying Delimiters<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>84</span></a></p>
<p class=MsoToc2><a href="#_Toc62570150">12.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for Specifying Lengths<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>89</span></a></p>
<p class=MsoToc3><a href="#_Toc62570151">12.3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:lengthKind
'explicit'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>90</span></a></p>
<p class=MsoToc3><a href="#_Toc62570152">12.3.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:lengthKind
'delimited'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>90</span></a></p>
<p class=MsoToc3><a href="#_Toc62570153">12.3.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:lengthKind
'implicit'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>91</span></a></p>
<p class=MsoToc3><a href="#_Toc62570154">12.3.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:lengthKind
'prefixed'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>93</span></a></p>
<p class=MsoToc3><a href="#_Toc62570155">12.3.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:lengthKind&nbsp;
'pattern'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>95</span></a></p>
<p class=MsoToc3><a href="#_Toc62570156">12.3.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:lengthKind
'endOfParent'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>96</span></a></p>
<p class=MsoToc3><a href="#_Toc62570157">12.3.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Elements
of Specified Length<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>97</span></a></p>
<p class=MsoToc1><a href="#_Toc62570158">13<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Simple
Types<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>102</span></a></p>
<p class=MsoToc2><a href="#_Toc62570159">13.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Common to All Simple Types<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>102</span></a></p>
<p class=MsoToc2><a href="#_Toc62570160">13.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Common to All Simple Types with Text representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>103</span></a></p>
<p class=MsoToc3><a href="#_Toc62570161">13.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:escapeScheme Properties<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>104</span></a></p>
<p class=MsoToc2><a href="#_Toc62570162">13.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for Bidirectional support for All Simple Types with Text representation<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>108</span></a></p>
<p class=MsoToc2><a href="#_Toc62570163">13.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to String<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>108</span></a></p>
<p class=MsoToc2><a href="#_Toc62570164">13.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Number with Text or Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>110</span></a></p>
<p class=MsoToc2><a href="#_Toc62570165">13.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Number with Text Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>110</span></a></p>
<p class=MsoToc3><a href="#_Toc62570166">13.6.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:textNumberPattern Property<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>118</span></a></p>
<p class=MsoToc3><a href="#_Toc62570167">13.6.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Converting
logical numbers to/from text representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>124</span></a></p>
<p class=MsoToc2><a href="#_Toc62570168">13.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Number with Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>125</span></a></p>
<p class=MsoToc3><a href="#_Toc62570169">13.7.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Converting
Logical Numbers to/from Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>127</span></a></p>
<p class=MsoToc2><a href="#_Toc62570170">13.8<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Float/Double with Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>131</span></a></p>
<p class=MsoToc2><a href="#_Toc62570171">13.9<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Boolean with Text Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>131</span></a></p>
<p class=MsoToc2><a href="#_Toc62570172">13.10<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Boolean with Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>133</span></a></p>
<p class=MsoToc2><a href="#_Toc62570173">13.11<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Calendar with Text or Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>133</span></a></p>
<p class=MsoToc3><a href="#_Toc62570174">13.11.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp; </span>The
dfdl:calendarPattern property<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>135</span></a></p>
<p class=MsoToc3><a href="#_Toc62570175">13.11.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp; </span>The
dfdl:calendarCheckPolicy Property<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>139</span></a></p>
<p class=MsoToc2><a href="#_Toc62570176">13.12<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Calendar with Text Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>139</span></a></p>
<p class=MsoToc2><a href="#_Toc62570177">13.13<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Calendar with Binary Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>140</span></a></p>
<p class=MsoToc2><a href="#_Toc62570178">13.14<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
Specific to Opaque Types (xs:hexBinary)<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>141</span></a></p>
<p class=MsoToc2><a href="#_Toc62570179">13.15<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Nil
Value Processing<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>141</span></a></p>
<p class=MsoToc2><a href="#_Toc62570180">13.16<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for Nillable Elements<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>142</span></a></p>
<p class=MsoToc1><a href="#_Toc62570181">14<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Sequence
Groups<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>146</span></a></p>
<p class=MsoToc2><a href="#_Toc62570182">14.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Empty
Sequences<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>146</span></a></p>
<p class=MsoToc2><a href="#_Toc62570183">14.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Sequence
Groups with Separators<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>147</span></a></p>
<p class=MsoToc3><a href="#_Toc62570184">14.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Separators
and Suppression<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>149</span></a></p>
<p class=MsoToc3><a href="#_Toc62570185">14.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parsing
Sequence Groups with Separators<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>150</span></a></p>
<p class=MsoToc3><a href="#_Toc62570186">14.2.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparsing
Sequence Groups with Separators<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>152</span></a></p>
<p class=MsoToc2><a href="#_Toc62570187">14.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unordered
Sequence Groups<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>154</span></a></p>
<p class=MsoToc3><a href="#_Toc62570188">14.3.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Restrictions
for Unordered Sequences<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>154</span></a></p>
<p class=MsoToc3><a href="#_Toc62570189">14.3.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parsing
an Unordered Sequence<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>155</span></a></p>
<p class=MsoToc3><a href="#_Toc62570190">14.3.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparsing
an Unordered Sequence<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>156</span></a></p>
<p class=MsoToc2><a href="#_Toc62570191">14.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Floating
Elements<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>156</span></a></p>
<p class=MsoToc2><a href="#_Toc62570192">14.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Hidden
Groups<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>157</span></a></p>
<p class=MsoToc1><a href="#_Toc62570193">15<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Choice
Groups<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>160</span></a></p>
<p class=MsoToc2><a href="#_Toc62570194">15.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Resolving
Choices<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>161</span></a></p>
<p class=MsoToc3><a href="#_Toc62570195">15.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Resolving
Choices via Speculation<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>161</span></a></p>
<p class=MsoToc3><a href="#_Toc62570196">15.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Resolving
Choices via Direct Dispatch<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>162</span></a></p>
<p class=MsoToc3><a href="#_Toc62570197">15.1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparsing
Choices<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>162</span></a></p>
<p class=MsoToc1><a href="#_Toc62570198">16<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Properties
for Array Elements and Optional Elements<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>164</span></a></p>
<p class=MsoToc2><a href="#_Toc62570199">16.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:occursCountKind property<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>164</span></a></p>
<p class=MsoToc3><a href="#_Toc62570200">16.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:occursCountKind
'fixed'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>164</span></a></p>
<p class=MsoToc3><a href="#_Toc62570201">16.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:occursCountKind
'implicit'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>165</span></a></p>
<p class=MsoToc3><a href="#_Toc62570202">16.1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:occursCountKind
'parsed'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>165</span></a></p>
<p class=MsoToc3><a href="#_Toc62570203">16.1.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:occursCountKind
'expression'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>165</span></a></p>
<p class=MsoToc3><a href="#_Toc62570204">16.1.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:occursCountKind
'stopValue'<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>165</span></a></p>
<p class=MsoToc2><a href="#_Toc62570205">16.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Default
Values for Arrays<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>166</span></a></p>
<p class=MsoToc2><a href="#_Toc62570206">16.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Arrays
with DFDL Expressions<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>166</span></a></p>
<p class=MsoToc2><a href="#_Toc62570207">16.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Points
of Uncertainty<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>166</span></a></p>
<p class=MsoToc2><a href="#_Toc62570208">16.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Arrays
and Sequences<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>166</span></a></p>
<p class=MsoToc2><a href="#_Toc62570209">16.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Forward
Progress Requirement<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>166</span></a></p>
<p class=MsoToc2><a href="#_Toc62570210">16.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parsing
Occurrences with Non-Normal Representation<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>167</span></a></p>
<p class=MsoToc2><a href="#_Toc62570211">16.8<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Sparse
Arrays<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>167</span></a></p>
<p class=MsoToc1><a href="#_Toc62570212">17<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Calculated
Value Properties<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>168</span></a></p>
<p class=MsoToc2><a href="#_Toc62570213">17.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example:
2d Nested Array<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>169</span></a></p>
<p class=MsoToc2><a href="#_Toc62570214">17.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example:
Three-Byte Date<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>170</span></a></p>
<p class=MsoToc1><a href="#_Toc62570215">18<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Expression Language<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>173</span></a></p>
<p class=MsoToc2><a href="#_Toc62570216">18.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Expression
Language Data Model<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>174</span></a></p>
<p class=MsoToc2><a href="#_Toc62570217">18.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Variables<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>174</span></a></p>
<p class=MsoToc3><a href="#_Toc62570218">18.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Rewinding
of Variable Memory State<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>175</span></a></p>
<p class=MsoToc3><a href="#_Toc62570219">18.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Variable
Memory State Transitions<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>175</span></a></p>
<p class=MsoToc2><a href="#_Toc62570220">18.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>General
Syntax<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>176</span></a></p>
<p class=MsoToc2><a href="#_Toc62570221">18.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Expression Syntax<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>176</span></a></p>
<p class=MsoToc2><a href="#_Toc62570222">18.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Constructors,
Functions and Operators<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>178</span></a></p>
<p class=MsoToc3><a href="#_Toc62570223">18.5.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Constructor
Functions for XML Schema Built-in Types<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>178</span></a></p>
<p class=MsoToc3><a href="#_Toc62570224">18.5.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Standard
XPath Functions<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>179</span></a></p>
<p class=MsoToc3><a href="#_Toc62570225">18.5.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Functions<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>183</span></a></p>
<p class=MsoToc3><a href="#_Toc62570226">18.5.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Constructor Functions<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>185</span></a></p>
<p class=MsoToc3><a href="#_Toc62570227">18.5.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Miscellaneous
Functions<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>186</span></a></p>
<p class=MsoToc2><a href="#_Toc62570228">18.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparsing
and Circular Expression Deadlock Errors<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>187</span></a></p>
<p class=MsoToc1><a href="#_Toc62570229">19<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Regular Expressions<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>188</span></a></p>
<p class=MsoToc1><a href="#_Toc62570230">20<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>External
Control of the DFDL Processor<span style='color:windowtext;display:none;
text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>189</span></a></p>
<p class=MsoToc1><a href="#_Toc62570231">21<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Built-in
Specifications<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>190</span></a></p>
<p class=MsoToc1><a href="#_Toc62570232">22<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Conformance<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>191</span></a></p>
<p class=MsoToc1><a href="#_Toc62570233">23<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Optional
DFDL Features<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>192</span></a></p>
<p class=MsoToc1><a href="#_Toc62570234">24<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Security
Considerations<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>194</span></a></p>
<p class=MsoToc1><a href="#_Toc62570235">25<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Authors
and Contributors<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>195</span></a></p>
<p class=MsoToc1><a href="#_Toc62570236">26<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Intellectual
Property Statement<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>196</span></a></p>
<p class=MsoToc1><a href="#_Toc62570237">27<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Disclaimer<span
style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>197</span></a></p>
<p class=MsoToc1><a href="#_Toc62570238">28<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Full
Copyright Notice<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>198</span></a></p>
<p class=MsoToc1><a href="#_Toc62570239">29<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>References<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>199</span></a></p>
<p class=MsoToc1><a href="#_Toc62570240">30<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
A: Escape Scheme Use Cases<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>203</span></a></p>
<p class=MsoToc2><a href="#_Toc62570241">30.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Escape
Character Same as dfdl:escapeEscapeCharacter<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>203</span></a></p>
<p class=MsoToc2><a href="#_Toc62570242">30.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Escape
Character Different from dfdl:escapeEscapeCharacter<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>203</span></a></p>
<p class=MsoToc3><a href="#_Toc62570243">30.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example
1 - Separator ';'<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>203</span></a></p>
<p class=MsoToc3><a href="#_Toc62570244">30.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example
2 - Separator 'sep'<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>204</span></a></p>
<p class=MsoToc2><a href="#_Toc62570245">30.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Escape
Block with Different Start and End Characters<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>204</span></a></p>
<p class=MsoToc2><a href="#_Toc62570246">30.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Escape
Block with Same Start and End Characters<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>205</span></a></p>
<p class=MsoToc1><a href="#_Toc62570247">31<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
B: Rationale for Single-Assignment Variables<span style='color:windowtext;
display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>207</span></a></p>
<p class=MsoToc1><a href="#_Toc62570248">32<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
C: Processing of DFDL String literals<span style='color:windowtext;display:
none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>208</span></a></p>
<p class=MsoToc2><a href="#_Toc62570249">32.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Interpreting
a DFDL String Literal<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>208</span></a></p>
<p class=MsoToc2><a href="#_Toc62570250">32.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Recognizing
a DFDL String Literal<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>208</span></a></p>
<p class=MsoToc2><a href="#_Toc62570251">32.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Recognizing
DFDL String Literal Part<span style='color:windowtext;display:none;text-decoration:
none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>208</span></a></p>
<p class=MsoToc1><a href="#_Toc62570252">33<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
D: DFDL Standard Encodings<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc2><a href="#_Toc62570253">33.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Purpose<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc2><a href="#_Toc62570254">33.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Conventions<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc2><a href="#_Toc62570255">33.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Specification
Template<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc2><a href="#_Toc62570256">33.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Encoding
X-DFDL-US-ASCII-7-BIT-PACKED<span style='color:windowtext;display:none;
text-decoration:none'>.. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc3><a href="#_Toc62570257">33.4.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Name<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc3><a href="#_Toc62570258">33.4.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Translation
table<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>210</span></a></p>
<p class=MsoToc3><a href="#_Toc62570259">33.4.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Width<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>211</span></a></p>
<p class=MsoToc3><a href="#_Toc62570260">33.4.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Alignment<span
style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>211</span></a></p>
<p class=MsoToc3><a href="#_Toc62570261">33.4.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Byte
Order<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>211</span></a></p>
<p class=MsoToc3><a href="#_Toc62570262">33.4.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example
1<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>211</span></a></p>
<p class=MsoToc3><a href="#_Toc62570263">33.4.7<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example
2<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>212</span></a></p>
<p class=MsoToc2><a href="#_Toc62570264">33.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Encoding
X-DFDL-US-ASCII-6-BIT-PACKED<span style='color:windowtext;display:none;
text-decoration:none'>.. </span><span
style='color:windowtext;display:none;text-decoration:none'>213</span></a></p>
<p class=MsoToc3><a href="#_Toc62570265">33.5.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Name<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>213</span></a></p>
<p class=MsoToc3><a href="#_Toc62570266">33.5.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Translation
Table<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>213</span></a></p>
<p class=MsoToc3><a href="#_Toc62570267">33.5.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Width<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>214</span></a></p>
<p class=MsoToc3><a href="#_Toc62570268">33.5.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Alignment<span
style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>214</span></a></p>
<p class=MsoToc3><a href="#_Toc62570269">33.5.5<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ByteOrder<span
style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>214</span></a></p>
<p class=MsoToc3><a href="#_Toc62570270">33.5.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Example
1<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>214</span></a></p>
<p class=MsoToc2><a href="#_Toc62570271">33.6<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>References
for Appendix D<span style='color:windowtext;display:none;text-decoration:none'>.. </span><span
style='color:windowtext;display:none;text-decoration:none'>215</span></a></p>
<p class=MsoToc1><a href="#_Toc62570272">34<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
E: Glossary of Terms<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>216</span></a></p>
<p class=MsoToc1><a href="#_Toc62570273">35<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
F: Specific Errors Classified<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>223</span></a></p>
<p class=MsoToc1><a href="#_Toc62570274">36<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Appendix
G: Property Precedence<span style='color:windowtext;display:none;text-decoration:
none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>226</span></a></p>
<p class=MsoToc2><a href="#_Toc62570275">36.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parsing<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>226</span></a></p>
<p class=MsoToc3><a href="#_Toc62570276">36.1.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:element
(simple) and dfdl:simpleType<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>226</span></a></p>
<p class=MsoToc3><a href="#_Toc62570277">36.1.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:element
(complex)<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>232</span></a></p>
<p class=MsoToc3><a href="#_Toc62570278">36.1.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:sequence
and dfdl:group (when reference is to a sequence)<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>234</span></a></p>
<p class=MsoToc3><a href="#_Toc62570279">36.1.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:choice
and dfdl:group (when reference is to a choice)<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>234</span></a></p>
<p class=MsoToc2><a href="#_Toc62570280">36.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparsing<span
style='color:windowtext;display:none;text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>235</span></a></p>
<p class=MsoToc3><a href="#_Toc62570281">36.2.1<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:element
(simple) and dfdl:simpleType<span style='color:windowtext;display:none;
text-decoration:none'>. </span><span
style='color:windowtext;display:none;text-decoration:none'>236</span></a></p>
<p class=MsoToc3><a href="#_Toc62570282">36.2.2<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:element
(complex)<span style='color:windowtext;display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>242</span></a></p>
<p class=MsoToc3><a href="#_Toc62570283">36.2.3<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:sequence
and dfdl:group (when reference is a sequence)<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>244</span></a></p>
<p class=MsoToc3><a href="#_Toc62570284">36.2.4<span style='font-size:11.0pt;
font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:choice
and dfdl:group (when reference is a choice)<span style='color:windowtext;
display:none;text-decoration:none'> </span><span
style='color:windowtext;display:none;text-decoration:none'>245</span></a></p>
<h1>1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><a name="_Toc177399014"></a><a name="_Toc175057300"></a><a
name="_Toc199516207"></a><a name="_Toc194983888"></a><a name="_Toc243112726"></a><a
name="_Ref255463832"></a><a name="_Ref275431279"></a><a name="_Toc349042597"></a><a
name="_Ref351049978"></a><a name="_Ref39162583"></a><a name="_Toc62570039">Introduction</a></h1>
<p class=MsoNormal><a name="_Toc1403318">Data interchange is critically
important for most computing. Grid computing, Cloud computing, and all forms of
distributed computing require distributed software and hardware resources to
work together. Inevitably, these resources read and write data in a variety of
formats. General tools for data interchange are essential to solving such
problems. Scalable and High-Performance Computing&nbsp; (HPC) applications
require high-performance data handling, so data interchange standards must
enable efficient representation of data. Data Format Description Language
(DFDL) enables powerful data interchange and very high-performance data
handling.</a></p>
<p class=MsoNormal>One can envisage three dominant kinds of data in the future,
as follows: </p>
<p class=MsoListBullet style='margin-left:.5in'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>Textual data defined by a format specific schema such as XML[<a
href="#a_XML10">XML</a>] or JSON[<a href="#a_JSON">JSON</a>].</p>
<p class=MsoListBullet style='margin-left:.5in'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>Binary data in standard formats. </p>
<p class=MsoListBullet style='margin-left:.5in'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>Data with DFDL descriptors. </p>
<p class=MsoNormal>Textual XML and JSON data are the most successful data interchange
standards to date. All such data are by definition new, meaning created in the Internet
era. Because of the large overhead that textual tagging imposes, there is often
a need to compress and decompress XML and JSON data. However, there is a high
cost for compression and decompression that is unacceptable to some
applications. Standardized binary data formats are also relatively new and are
suitable for larger data because of the reduced costs of encoding and more
compact size. Examples of standard binary formats are data described by modern
versions of ASN.1<a href="#_ftn1" name="_ftnref1" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[1]</span></span></span></a>
[<a href="#a_ASN1">ASN1</a>], XDR [<a href="#a_XDR">XDR</a>], Thrift [<a
href="#a_Thrift">Thrift</a>], Avro [<a href="#a_AVRO">AVRO</a>], and Google
Protocol Buffers <a href="#GPB">[GPB]</a>. These techniques lack the
self-describing nature of XML or JSON data. Scientific formats, such as NetCDF[<a
href="#a_NetCDF">NetCDF</a>] and HDF[<a href="#a_HDF">HDF</a>] are used by some
communities to provide self-describing binary data. There are also standardized
binary-encoded XML data formats such as EXI [<a href="#a_EXI">EXI</a>].</p>
<p class=MsoNormal>It is an important observation that both XML format and
standardized binary formats are <em><span style='font-family:"Arial",sans-serif'>prescriptive</span></em>
in that they specify or prescribe a representation of the data. To use them
applications must be written to conform to their encodings and mechanisms of expression.</p>
<p class=MsoNormal>DFDL suggests an entirely different scheme. The approach is <em><span
style='font-family:"Arial",sans-serif'>descriptive</span></em> in that one
chooses an appropriate data representation for an application based on its
needs and one then describes the format using DFDL so that multiple programs
can directly interchange the described data. DFDL descriptions can be provided
by the creator of the format or developed as needed by third parties intending
to use the format. That is, DFDL is not a format for data; it is a way of
describing any data format<a href="#_ftn2" name="_ftnref2" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[2]</span></span></span></a>.
DFDL is intended for data commonly found in scientific and numeric
computations, as well as record-oriented representations found in commercial
data processing.</p>
<p class=MsoNormal>DFDL can be used to describe legacy data files, to simplify
transfer of data across domains without requiring global standard formats, or
to allow third-party tools to easily access multiple formats. DFDL can also be
a powerful tool for supporting backward compatibility as formats evolve. </p>
<p class=MsoNormal>DFDL is designed to provide flexibility and permit implementations
that achieve very high levels of performance. DFDL descriptions are separable
and native applications do not need to use DFDL libraries to parse their data
formats. DFDL parsers can also be highly efficient. The DFDL language is
designed to permit implementations that use lazy evaluation of formats and to
support seekable, random access to data. The following goals can be achieved by
DFDL implementations:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Density. Fewest bytes to represent information (without resorting
to compression). Fastest possible I/O.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Optimized I/O. Applications can write data aligned to byte, word,
or even page boundaries and to use memory mapped I/O to ensure access to data
with the smallest number of machine cycles for common use cases without
sacrificing general access. </p>
<p class=MsoNormal>DFDL can describe the same types of abstract data that other
binary or textual data formats can describe and, furthermore, it can describe
almost any possible representation scheme for those data. It is the intent of
DFDL to support canonical data descriptions that correspond closely to the
original in-memory representation of the data, and to provide sufficient
information to write as well as to read the given format.</p>
<h2><a name="_Toc177399015"></a><a name="_Toc175057301"></a><a
name="_Toc199516208"></a><a name="_Toc194983889"></a><a name="_Toc243112727"></a><a
name="_Toc349042598"></a><a name="_Toc62570040">1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Why is DFDL Needed?</a></h2>
<p class=nobreak>In an era when there are so many standard data formats
available the question arises of why DFDL is needed. Ultimately, it is because
data formats are rarely a primary consideration when programs are initially
created.</p>
<p class=MsoNormal>Programs are very often written speculatively, that is,
without any advance understanding of how important they will become. Given this
situation, little effort is expended on data formats since it remains easier to
program the I/O in the most straightforward way possible with the programming
tools in use. Even something as simple as using an XML-based data format is often
harder than just using the native I/O libraries of a programming language. </p>
<p class=MsoNormal>In time, however, if a software program becomes important
either because many people are using it, or it has become important for
business or organizational needs, it is often too late to go back and change
the data formats. For example, there may be real or perceived business costs to
delaying the deployment of a program for a rewrite just to change the data
formats, particularly if such rewriting will reduce the performance of the
program and increase the costs of deployment.</p>
<p class=MsoNormal>Indeed, the need for data format standardization for
interchange with other software may not be clear at the point where a program
first becomes important. Eventually, however, the need for data interchange
with the program becomes apparent. </p>
<p class=MsoNormal>There are, of course, efforts to smoothly integrate
standardized data-format handling into programming languages. However, the
above phenomena are not going away any time soon and there is a critical role for
DFDL since it allows after-the-fact description of evolving data formats.</p>
<h2><a name="_Toc177399016"></a><a name="_Toc175057302"></a><a
name="_Toc199516209"></a><a name="_Toc194983890"></a><a name="_Toc243112728"></a><a
name="_Toc349042599"></a><a name="_Toc62570041">1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>What is DFDL?</a></h2>
<p class=nobreak>DFDL is a language for describing data formats. A DFDL
description enables <i>parsing</i>, that is, it allows data to be read from its
native format and presented as a data structure called the <i>DFDL Information
Set or DFDL Infoset</i>. This information set describes the common
characteristics of parsed data that are required of all DFDL implementations
and it is fully defined in Section <span
class=MsoHyperlink>4</span>. DFDL implementations MAY provide API access to the
Infoset as well as conversion of the Infoset into concrete representations such
as XML text, binary XML [EXI] , or JSON [JSON].
DFDL also enables <i>unparsing</i><a href="#_ftn3" name="_ftnref3" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[3]</span></span></span></a><i>,
that is,</i> allows data to be taken from an instance of a DFDL information set
and written out to its native format.</p>
<p class=MsoNormal>DFDL achieves this by leveraging W3C XML Schema Definition
Language (XSD) 1.0. [<a href="#a_XSDL">XSD</a>]</p>
<p class=MsoNormal>An XML schema is written for the logical model of the data.
The schema is augmented with special DFDL annotations and the annotated schema
is called a <i>DFDL Schema</i>. The annotations are used to describe the native
representation of the data. </p>
<p class=MsoNormal>This approach of extending XSD with format annotations has
been extensively used in commercial systems that predate DFDL. The contribution
of DFDL for data parsing is creation of a standard for these annotations that
is open, comprehensive, and vendor neutral. For unparsing DFDL does more to advance
the state of the art by providing some capabilities to automatically compute
fields that depend on the length or presence of other data. Prior-generation
data format technologies left this difficult task up to application logic to
compute. </p>
<h3><a name="_Toc177399017"></a><a name="_Toc175057303"></a><a
name="_Toc199516210"></a><a name="_Toc194983891"></a><a name="_Toc243112729"></a><a
name="_Toc349042600"></a><a name="_Toc62570042"><span style='color:black;
font-weight:normal'>1.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple Example</a></h3>
<p class=nobreak>Consider the following XML data:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;w&gt;5&lt;/w&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;x&gt;7839372&lt;/x&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;y&gt;8.6E-200&lt;/y&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;z&gt;-7.1E8&lt;/z&gt;</span></p>
</div>
<p class=MsoNormal>The logical model for this data can be described by the
following fragment of an XML schema document that simply provides a description
of the name and type of each element:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:complexType
name=&quot;example1&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;w&quot; type=&quot;xs:int&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;x&quot; type=&quot;xs:int&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;y&quot; type=&quot;xs:double&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;z&quot; type=&quot;xs:float&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:complexType&gt;</span></p>
</div>
<p class=MsoNormal>Now, suppose&nbsp; the same data is represented in a non-XML
format. A binary representation of the data can be visualized like this (shown
as hexadecimal):</p>
<p class=dataexample>0000 0005 0077 9e8c </p>
<p class=dataexample>169a 54dd 0a1b 4a3f </p>
<p class=dataexample>ce29 46f6</p>
<p class=nobreak>To describe the same information in DFDL, the original XML
schema document that described the data model is annotated (on the type
definition) as follows:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:complexType&gt;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;w&quot; type=&quot;xs:int&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source</span><span lang=EN-GB style='color:black'>=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;binary&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
binaryNumberRep=&quot;binary&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
byteOrder=&quot;bigEndian&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;implicit&quot;/&gt; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;x&quot; type=&quot;xs:int &quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source</span><span lang=EN-GB style='color:black'>=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;binary&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
binaryNumberRep=&quot;binary&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byteOrder=&quot;bigEndian&quot;
</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;implicit&quot;/&gt; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;y&quot; type=&quot;xs:double&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source</span><span lang=EN-GB style='color:black'>=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;binary&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
binaryFloatRep=&quot;ieee&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
byteOrder=&quot;bigEndian&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;implicit&quot;/&gt; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;z&quot; type=&quot;xs:float&quot; &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;</span><span lang=EN-GB style='color:black'>http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;binary&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><b><span lang=EN-GB style='color:black'>byteOrder=&quot;bigEndian&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lengthKind=&quot;implicit&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
binaryFloatRep=&quot;ieee&quot;
/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>&lt;/xs:appinfo&gt;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>&lt;/xs:annotation&gt;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:complexType&gt;</span></b></p>
</div>
<p class=MsoNormal style='text-autospace:none'>This simple DFDL annotation
expresses that the data are represented in a binary format and that the byte
order is big endian. This is all that a DFDL parser needs to read the data.</p>
<p class=MsoNormal style='text-autospace:none'>In the above, there is a
standard XML schema annotation structure:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;</span><span lang=EN-GB style='color:black'>http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
... </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
... </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>&lt;/xs:appinfo&gt;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>&lt;/xs:annotation&gt;</b></span></p>
</div>
<p class=MsoNormal style='text-autospace:none'>This encapsulates DFDL<i>
annotation elements</i>. The source attribute on the xs:appinfo element
indicates that the annotation is specifically a DFDL annotation. </p>
<p class=MsoNormal style='text-autospace:none'>Inside the xs:appinfo there is a
single DFDL<i> format annotation</i>:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;binary&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><b><span lang=EN-GB style='color:black'>byteOrder=&quot;bigEndian&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;implicit&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
binaryFloatRep=&quot;ieee&quot; /&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></b></p>
</div>
<p class=MsoNormal style='text-autospace:none'>Within the above annotation
element, each attribute is a DFDL <i>property</i>, and each property-value pair
is called a <i>property binding</i>. In the above the attribute
'representation' is a DFDL property name. Here the dfdl:element is a DFDL format
annotation and the properties in it are generally called DFDL<i> representation
properties</i>.</p>
<p class=MsoNormal style='text-autospace:none'>Consider if the same data are
represented in a text format:</p>
<p class=dataexample>5,7839372,8.6E-200,-7.1E8</p>
<p class=MsoNormal style='text-autospace:none'>Once again, the same data model
can be annotated, this time with properties that provide the character
encoding, the field separator (comma) and the decimal separator (period):</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;</span><span lang=EN-GB style='color:black'>http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:sequence encoding=&quot;UTF-8&quot; separator=&quot;,&quot; /&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;w&quot; type=&quot;xs:int&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;text&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
encoding=&quot;UTF-8&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b><b><span lang=EN-GB style='color:black'>textNumberRep</span><span
lang=EN-GB style='color:black'> =&quot;standard&quot;</span></b><span
lang=EN-GB style='color:black'> </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>textNumberPattern=&quot;####0&quot;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
textStandardDecimalSeparator=&quot;.&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;delimited&quot;/&gt; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;x&quot; type=&quot;xs:int&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;</span></b><span lang=EN-GB style='color:black'>http://www.ogf.org/dfdl/<b>&quot;&gt;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;text&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
encoding=&quot;UTF-8&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></b><b><span
lang=EN-GB style='color:black'>textNumberRep</span><span lang=EN-GB
style='color:black'> =&quot;standard&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>textNumberPattern=&quot;#######0&quot;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
textStandardDecimalSeparator=&quot;.&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;delimited&quot;/&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;y&quot;
type=&quot;xs:double&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source</span><span lang=EN-GB style='color:black'>=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;text&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
encoding=&quot;UTF-8&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></b><b><span lang=EN-GB style='color:black'>textNumberRep</span><span
lang=EN-GB style='color:black'> =&quot;standard&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>textNumberPattern=&quot;<a
name="OLE_LINK5">0.0E+000</a>&quot;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
textStandardDecimalSeparator=&quot;.&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;delimited&quot;/&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;z&quot; type=&quot;xs:float&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><b><span style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;</span><span lang=EN-GB style='color:black'>http://www.ogf.org/dfdl/&quot;&gt;</span></b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;text&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
encoding=&quot;UTF-8&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
textNumberRep =&quot;standard&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b><b><span lang=EN-GB style='color:black'>textNumberPattern=&quot;0.0E0&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
textStandardDecimalSeparator=&quot;.&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lengthKind=&quot;delimited&quot;/&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;/xs:complexType&gt;</span></p>
</div>
<p class=nobreak><a name="_Toc322911475"></a><a name="_Toc322912014"></a><a
name="_Toc329092897"></a><a name="_Toc332701410"></a><a name="_Toc332701717"></a><a
name="_Toc332711511"></a><a name="_Toc332711819"></a><a name="_Toc332712121"></a><a
name="_Toc332724037"></a><a name="_Toc332724337"></a><a name="_Toc341102633"></a><a
name="_Toc347241364"></a><a name="_Toc347744557"></a><a name="_Toc348984340"></a><a
name="_Toc348984645"></a><a name="_Toc349037808"></a><a name="_Toc349038113"></a><a
name="_Toc349042601"></a><a name="_Toc349642042"></a><a name="_Toc351912592"></a><a
name="_Toc351914613"></a><a name="_Toc351915047"></a>Many properties are
repeatedly expressed in the example for the sake of simplicity. Later sections
of this specification define the mechanisms DFDL provides to avoid this repetition.
</p>
<h2><a name="_Toc177399018"></a><a name="_Toc175057304"></a><a
name="_Toc199516211"></a><a name="_Toc194983892"></a><a name="_Toc243112730"></a><a
name="_Toc349042603"></a><a name="_Toc62570043"></a><a name="_Toc322911476"></a><a
name="_Toc322912015"></a><a name="_Toc329092898"></a><a name="_Toc332701411"></a><a
name="_Toc332701718"></a><a name="_Toc332711512"></a><a name="_Toc332711820"></a><a
name="_Toc332712122"></a><a name="_Toc332724038"></a><a name="_Toc332724338"></a><a
name="_Toc341102634"></a><a name="_Toc347241365"></a><a name="_Toc347744558"></a><a
name="_Toc348984341"></a><a name="_Toc348984646"></a><a name="_Toc349037809"></a><a
name="_Toc349038114"></a><a name="_Toc349042602"></a><a name="_Toc349642043"></a><a
name="_Toc351912593"></a><a name="_Toc351914614"></a><a name="_Toc351915048"></a><a
name="_Toc361231085"></a><a name="_Toc361231611"></a><a name="_Toc362444891"></a><a
name="_Toc363908813"></a><a name="_Toc364463235"></a><a name="_Toc366077826"></a><a
name="_Toc366078445"></a><a name="_Toc366079431"></a><a name="_Toc366080043"></a><a
name="_Toc366080655"></a><a name="_Toc366504995"></a><a name="_Toc366508364"></a><a
name="_Toc366512865"></a><a name="_Toc366574056"></a><a name="_Toc366577849"></a><a
name="_Toc366578457"></a><a name="_Toc366579051"></a><a name="_Toc366579642"></a><a
name="_Toc366580234"></a><a name="_Toc366580825"></a><a name="_Toc366581417"></a>1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>What
DFDL is not</h2>
<p class=nobreak>DFDL maps data from a native textual or binary representation
to an instance of an information set. This can be thought of as a data
transformation. However, DFDL is not intended to be a general transformation
language and DFDL does not intend to provide a mechanism to map data to arbitrary
XML models. There are specific limitations on the data models that DFDL can
work to:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>DFDL uses a subset of XML Schema; in particular, XML
attributes cannot be used in the data model.</li>
<li class=MsoNormal>The order of the data in the data model must correspond to
the order and structure of the data being described. </li>
<li class=MsoNormal>Recursive definitions are not supported.</li>
</ol>
<p class=MsoNormal>Point (2) deserves some elaboration. The XML schema used
must be suitable for describing the physical data format. There must be a
correspondence between the XML schema's constructs and the physical data
structures. For example, generally the elements in the XML schema must match
the order of the physical data. DFDL does allow for certain physically
unordered formats as well. </p>
<p class=MsoNormal>The key concept here is that when using DFDL, one does not
get to design an XML schema to one's preference and then populate it from data.
That would involve two steps: first describing the data format and second
describing a transformation for mapping it to the structure of the XML schema.
DFDL is only about the format part of this problem. There are other languages,
such as XSLT [XSLT], which are for transformation. In DFDL,one describes only
the format of the data, and the format constrains the nature of the XML schema one
must use in its description. </p>
<p class=MsoNormal>DFDL is also not intended for describing generic formats
like XML or JSON (for which schema-aware parsers exist), nor for prescriptive
formats like Google Protocol Buffers <a href="#GPB">[GPB]</a> where the format
is never exposed and access is via software libraries.</p>
<h2><a name="_Toc177399019"></a><a name="_Toc175057305"></a><a
name="_Toc199516212"></a><a name="_Toc194983893"></a><a name="_Toc243112731"></a><a
name="_Toc349042604"></a><a name="_Toc62570044">1.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Scope of version 1.0</a></h2>
<p class=MsoNormal>The goals of version 1.0 are as follows:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Leverage XML technology and concepts</li>
<li class=MsoNormal>Support very efficient parsers/formatters</li>
<li class=MsoNormal>Avoid features&nbsp; that require unnecessary data copying</li>
<li class=MsoNormal>Support round-tripping, that is, read and write data in a
described format from the same description</li>
<li class=MsoNormal>Keep simple cases simple</li>
<li class=MsoNormal>Simple descriptions should be &quot;human readable&quot;
to the same degree that XSD is.</li>
</ol>
<p class=MsoNormal>The general features of version 1.0 are as follows:</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>a)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Text and binary
data parsing and unparsing </p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>b)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Validate the
data when parsing and unparsing using XSD validation.</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>c)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Defaulted
input and output for missing representations</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>d)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Reference
&#8211; use of the value of a previously read element in subsequent expressions</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>e)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Choice &#8211;
capability to select among format variations</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>f)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Hidden
groups of elements &#8211; A description of an intermediate representation the
corresponding Infoset items of which are not exposed in the final Infoset.</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>g)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Basic arithmetic
in DFDL expressions.</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>h)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Out-of-type value
handling (e.g., The string value 'NIL' to indicate nil for an integer)</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>i)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Speculative
parsing to resolve uncertainty.</p>
<p class=MsoNormal style='margin-left:42.0pt;text-indent:-.25in'>j)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Very
general parsing capability: Lookahead/Push-back</p>
<p class=nobreak>Version 1.0 of DFDL is a language capable of expressing a wide
range of binary and text-based data formats. </p>
<p class=MsoNormal>DFDL can describe binary data as found in the data
structures of COBOL, C, PL1, Fortran, etc., as well as standard binary data in
formats like ISO8583 <a href="#ISO8583">[ISO8583]</a>. DFDL can describe
repeating sub-arrays where the length of an array is stored in another location
of the structure.</p>
<p class=MsoNormal>DFDL can describe a wide variety of textual data formats
such as HL7, X12, CSV, and SWIFT MT [<a href="#DFDLSchemas">DFDLSchemas</a>].
Textual data formats often use syntax delimiters, such as initiators,
separators and terminators to delimit fields.</p>
<p class=MsoNormal>DFDL has certain composition properties. I.e., two formats
can be nested or concatenated and the combination results in a working format.</p>
<p class=MsoNormal>The following topics have been deferred to future versions
of the standard:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Extensibility: There are real examples of proprietary data format
description languages that were used as the base of experience from which
standard DFDL was derived. However, there are no examples of extensible format
description languages. Therefore, while extensibility is desirable in DFDL,
there is not yet a base of experience with extensibility from which to derive a
standard.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Rich Layering: Some formats require data to be described in
multiple passes. Combining these into one DFDL schema requires very rich
layering functionality. In these layers one element's value becomes the
representation of another element. DFDL V1.0 allows description of only a
limited kind of layering.</p>
<h1><a name="_Toc177399021"></a><a name="_Toc175057307"></a><a
name="_Toc199516214"></a><a name="_Toc194983895"></a><a name="_Toc243112733"></a><a
name="_Toc349042606"></a><a name="_Toc62570045"></a><a name="_Toc322911479"></a><a
name="_Toc322912018"></a>2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Overview of the Specification</h1>
<p class=nobreak>The sections of the specification are</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>3</span>, <a href="#_Notational_and_Definitional"><span class=InternetLink>Notational and Definitional Conventions</span></a> - provides
definitions used throughout the specification. Note that terminology is defined
at point of first use, but there is a complete Glossary in Appendix E: Glossary of Terms.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>4</span>, <a href="#_The_DFDL_Information"><span class=InternetLink>The DFDL Information Set (Infoset)</span></a> - describes the
abstract data structure produced by parsing data using a DFDL processor, and
which is consumed by a DFDL processor when unparsing data. DFDL contains an
expression language, and it is this data structure that the expression language
operates on. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>5</span>, <a href="#_DFDL_Schema_Component"><span class=InternetLink>DFDL Schema Component Model</span></a> describes the components
that makes up a DFDL schema, and the subset of XML Schema that is used to
express them.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Sections <span
class=MsoHyperlink>6</span>, <span
class=InternetLink>DFDL Syntax Basics</span> and <span
class=MsoHyperlink>7</span>, <span
class=InternetLink>Syntax of DFDL Annotation Elements</span> - describes the
syntactic structure of DFDL annotations and introduces the purposes of the
various annotations.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>8</span>, <a href="#_Property_Scoping_and"><span class=InternetLink>Property Scoping and DFDL Schema Checking</span></a>
describes the way DFDL annotations that provide format properties are combined
across the parts of the DFDL schema, and also describes static checking that is
done on the DFDL schema. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>9</span>, <a href="#_DFDL_Processing_Introduction"><span class=InternetLink>DFDL Processing Introduction</span></a> covers processing,
including the core algorithms for parsing and unparsing data, as well as
validation. It introduces the DFDL
Data Syntax Grammar, which captures the structure of data that can be described
with DFDL, and which is referenced throughout the rest of the specification. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>10</span><span class=MsoHyperlink><span style='text-decoration:
none'>, </span></span><span
class=InternetLink>Overview: Representation Properties and their Format
Semantics</span>&nbsp;provides
an overview of, and Sections <span
class=MsoHyperlink>11</span> to <span
class=MsoHyperlink>17</span> describe in detail, all the DFDL properties. The
properties are organized as follows:</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Properties_Common_to">Common to both Content and
Framing</a> (see Section <span
class=MsoHyperlink>11</span>)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Framing">Common Framing, Position, and Length</a> (see
Section <span
class=MsoHyperlink>12</span>)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Simple_Types">Simple Type Content</a> (see Section <span class=MsoHyperlink>13</span> ) - This is the largest section as it covers
properties for all the various simple types, starting with properties that
apply to all simple types, then properties for all types with textual
representation, and then proceeding through the types, covering textual and
binary format properties for each type. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Sequence_Groups">Sequence Groups</a> (see Section <span class=MsoHyperlink>14</span> )</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Choice_Groups">Choice Groups</a> (see Section <span class=MsoHyperlink>15</span> )</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Properties_for_Array">Array (i.e., recurring) elements
and optional elements</a> (see Section <span
class=MsoHyperlink>16</span> )</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span><a href="#_Calculated_Value_Properties">Calculated Values</a>
(see Section <span
class=MsoHyperlink>17</span> )</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>18</span>, <a href="#_DFDL_Expression_Language"><span class=InternetLink>DFDL Expression Language</span></a> covers the XPath-derived expression
language that is embedded in DFDL and is used for computing the values of many
properties dynamically, as well as for calculated value elements, and assertion
checking.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Section <span
class=MsoHyperlink>19</span>, <a href="#_DFDL_Regular_Expressions"><span class=InternetLink>DFDL Regular Expressions</span></a>, covers the regular
expression language used when parsing to isolate elements within the data
stream, as well as to check assertions. </p>
<p class=MsoNormal>The remaining sections and appendices supply additional
details of particular importance to implementors of DFDL, or they provide
detail and reference material and are referenced from other parts of the
specification. </p>
<h1><a name="_Ref39162589"></a><a name="_Toc62570046"></a><a
name="_Notational_and_Definitional"></a>3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Notational and Definitional Conventions</h1>
<p class=MsoNormal>Examples of DFDL schemas provided herein are for
illustration purposes only and for clarity they often do not include all the
necessary DFDL properties that would be needed for a complete functional DFDL
schema.</p>
<h2><a name="_Toc177399022"></a><a name="_Toc175057308"></a><a
name="_Toc199516215"></a><a name="_Toc194983896"></a><a name="_Toc243112734"></a><a
name="_Toc349042607"></a><a name="_Toc62570047">3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Glossary and Terminology</a></h2>
<p class=nobreak>This specification provides definitions of the terms it uses
at the point of first use. However, as this specification will not generally be
read linearly, but out of order, a complete glossary is provided in Appendix E: Glossary of Terms.</p>
<p class=MsoNormal>The capitalized key words <em><span style='font-family:"Arial",sans-serif;
font-style:normal'>MUST</span></em>, MUST NOT, SHALL, SHALL NOT, SHOULD, SHOULD
NOT, MAY, REQUIRED, OPTIONAL, and RECOMMENDED<em><span style='font-family:"Arial",sans-serif'>
</span></em>in this document are to be interpreted as described in [<a
href="#a_RFC2119">RFC2119</a>]. Such usage in capital letters is generally
about DFDL implementations and their common or distinguishing characteristics.</p>
<p class=MsoNormal>When describing requirements for correct usage of the DFDL
language by a DFDL Schema author, these same words are used, but are not
capitalized. For example, the specification may state &quot;The DFDL fillByte
property <i>must</i> be a single byte or single character.&quot; What is
intended by &quot;<i>must</i>&quot; here is that if&nbsp; the value for that
property does not conform, that it is a Schema Definition Error by the schema
author. </p>
<p class=MsoNormal>Similarly, when describing characteristics of data being
parsed or being unparsed, and whether that data conforms to the format
described by a DFDL schema, these same words may be used. For example,the
specification may state &quot;The representation <i>must</i> be followed by a
terminating delimiter.&quot;, but what is intended by &quot;<i>must</i>&quot;
in this case is that the consequence of the data not having that terminating
delimiter is a Processing Error because the data does not comply with its
format specification.</p>
<p class=MsoNormal>When describing data, the uncapitalized terms <i>required</i>
and <i>optional</i> in this document have specific formal meanings (introduced
in Section 5.3.1,<a href="#_MinOccurs,_MaxOccurs">MinOccurs, MaxOccurs</a>) having
to do with the way element declarations are annotated in the DFDL language. The
data corresponding to such an element declaration is also said to be either
required or optional, and the DFDL element declaration is said to be for a
required element, or an optional element. </p>
<h2><a name="_Toc62570048">3.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Failure Types</a></h2>
<p class=MsoNormal>Where the phrase &quot;MUST be consistent with&quot; is
used, it is assumed that a conforming DFDL implementation MUST check for the
consistency and issue appropriate diagnostic messages when an inconsistency is
found.&nbsp; </p>
<p class=MsoNormal><a name="_Ref140935774"></a><a name="_Toc177399023"></a><a
name="_Toc175057309"></a><a name="_Toc199516216"></a><a name="_Toc194983897"></a><a
name="_Toc243112735"></a><a name="_Toc349042608">There are several kinds of
failures that can occur when a DFDL processor is handling data and/or a DFDL
schema. These are:</a></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b><i>Schema Definition Error</i></b> or <b><i>SDE</i></b> for
short - these indicate the DFDL schema is not meaningful. They are generally
fatal errors that prevent or stop processing of data.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b><i>Processing Error</i></b> - These are errors that occur when
parsing or unparsing.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>At parse time, Processing Errors can cause the parser to search
(such as via backtracking) for alternative ways to parse the data as are
allowed by the DFDL schema. In that sense parse-time Processing Errors guide
the parsing, and when the parser finds an alternative way to parse the data, a
prior parse error is said to have been <i>suppressed</i>. A parse error that is
not suppressed MUST terminate parsing with a diagnostic message.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>At unparse-time, Processing Errors are generally fatal. They MUST
cause unparsing to stop with a diagnostic message.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b><i>Validation Error</i></b> - These are errors when optional
validation checking is available and enabled. Validation Errors MUST not stop,
nor influence, parsing or unparsing behavior. Validation Errors are effectively
warnings indicating lack of conformance of the parser output, or the unparser
input, with the XML Schema facet constraints, or &nbsp;the XSD maxOccurs and
XSD minOccurs values.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b><i>Recoverable Error</i></b> - In addition to using XML Schema
validation, DFDL also provides the ability to add Recoverable Error assertions
to a DFDL schema. These cause diagnostic messages to be created but MUST not stop,
nor influence, parsing or unparsing behavior. </p>
<h1><a name="_Toc20156277"></a><a name="_Toc177399027"></a><a
name="_Toc175057314"></a><a name="_Toc199516222"></a><a name="_Toc194983901"></a><a
name="_Toc243112740"></a><a name="_Toc349042615"></a><a name="_Ref366577019"></a><a
name="_Ref366577050"></a><a name="_Ref37325229"></a><a name="_Ref37327950"></a><a
name="_Ref39162759"></a><a name="_Ref39162779"></a><a name="_Toc62570049"></a><a
name="_Toc39166740"></a><a name="_Toc50556557"></a><a name="_Toc50558166"></a><a
name="_Toc50633672"></a><a name="_Toc50633966"></a><a name="_Toc50634260"></a><a
name="_Toc38908491"></a><a name="_Toc39166741"></a><a name="_Toc50556558"></a><a
name="_Toc50558167"></a><a name="_Toc50633673"></a><a name="_Toc50633967"></a><a
name="_Toc50634261"></a><a name="_Toc38908492"></a><a name="_Toc39166742"></a><a
name="_Toc50556559"></a><a name="_Toc50558168"></a><a name="_Toc50633674"></a><a
name="_Toc50633968"></a><a name="_Toc50634262"></a><a name="_Toc38908493"></a><a
name="_Toc39166743"></a><a name="_Toc50556560"></a><a name="_Toc50558169"></a><a
name="_Toc50633675"></a><a name="_Toc50633969"></a><a name="_Toc50634263"></a><a
name="_Toc38880376"></a><a name="_Toc38881915"></a><a name="_Toc38908494"></a><a
name="_Toc39166744"></a><a name="_Toc50556561"></a><a name="_Toc50558170"></a><a
name="_Toc50633676"></a><a name="_Toc50633970"></a><a name="_Toc50634264"></a><a
name="_Toc38908495"></a><a name="_Toc39166745"></a><a name="_Toc50556562"></a><a
name="_Toc50558171"></a><a name="_Toc50633677"></a><a name="_Toc50633971"></a><a
name="_Toc50634265"></a><a name="_Toc38908496"></a><a name="_Toc39166746"></a><a
name="_Toc50556563"></a><a name="_Toc50558172"></a><a name="_Toc50633678"></a><a
name="_Toc50633972"></a><a name="_Toc50634266"></a><a name="_Toc38908497"></a><a
name="_Toc39166747"></a><a name="_Toc50556564"></a><a name="_Toc50558173"></a><a
name="_Toc50633679"></a><a name="_Toc50633973"></a><a name="_Toc50634267"></a><a
name="_Toc38908498"></a><a name="_Toc39166748"></a><a name="_Toc50556565"></a><a
name="_Toc50558174"></a><a name="_Toc50633680"></a><a name="_Toc50633974"></a><a
name="_Toc50634268"></a><a name="_Toc38908499"></a><a name="_Toc39166749"></a><a
name="_Toc50556566"></a><a name="_Toc50558175"></a><a name="_Toc50633681"></a><a
name="_Toc50633975"></a><a name="_Toc50634269"></a><a name="_Toc38908500"></a><a
name="_Toc39166750"></a><a name="_Toc50556567"></a><a name="_Toc50558176"></a><a
name="_Toc50633682"></a><a name="_Toc50633976"></a><a name="_Toc50634270"></a><a
name="_Toc322911484"></a><a name="_Toc322912023"></a><a name="_Toc199515590"></a><a
name="_Toc199515778"></a><a name="_Toc199516217"></a><a name="_Toc38908501"></a><a
name="_Toc39166751"></a><a name="_Toc50556568"></a><a name="_Toc50558177"></a><a
name="_Toc50633683"></a><a name="_Toc50633977"></a><a name="_Toc50634271"></a><a
name="_Toc38908502"></a><a name="_Toc39166752"></a><a name="_Toc50556569"></a><a
name="_Toc50558178"></a><a name="_Toc50633684"></a><a name="_Toc50633978"></a><a
name="_Toc50634272"></a><a name="_Toc38908503"></a><a name="_Toc39166753"></a><a
name="_Toc50556570"></a><a name="_Toc50558179"></a><a name="_Toc50633685"></a><a
name="_Toc50633979"></a><a name="_Toc50634273"></a><a name="_Toc38908504"></a><a
name="_Toc39166754"></a><a name="_Toc50556571"></a><a name="_Toc50558180"></a><a
name="_Toc50633686"></a><a name="_Toc50633980"></a><a name="_Toc50634274"></a><a
name="_Toc38908505"></a><a name="_Toc39166755"></a><a name="_Toc50556572"></a><a
name="_Toc50558181"></a><a name="_Toc50633687"></a><a name="_Toc50633981"></a><a
name="_Toc50634275"></a><a name="_Toc38908506"></a><a name="_Toc39166756"></a><a
name="_Toc50556573"></a><a name="_Toc50558182"></a><a name="_Toc50633688"></a><a
name="_Toc50633982"></a><a name="_Toc50634276"></a><a name="_Toc361231093"></a><a
name="_Toc361231619"></a><a name="_Toc362444899"></a><a name="_Toc363908821"></a><a
name="_Toc364463243"></a><a name="_Toc366077834"></a><a name="_Toc366078453"></a><a
name="_Toc366079439"></a><a name="_Toc366080051"></a><a name="_Toc366080663"></a><a
name="_Toc366505003"></a><a name="_Toc366508372"></a><a name="_Toc366512873"></a><a
name="_Toc366574064"></a><a name="_Toc366577857"></a><a name="_Toc366578465"></a><a
name="_Toc366579059"></a><a name="_Toc366579650"></a><a name="_Toc366580242"></a><a
name="_Toc366580833"></a><a name="_Toc366581425"></a><a name="_Toc322911486"></a><a
name="_Toc322912025"></a><a name="_Toc38908507"></a><a name="_Toc39166757"></a><a
name="_Toc50556574"></a><a name="_Toc50558183"></a><a name="_Toc50633689"></a><a
name="_Toc50633983"></a><a name="_Toc50634277"></a><a name="_Toc38908508"></a><a
name="_Toc39166758"></a><a name="_Toc50556575"></a><a name="_Toc50558184"></a><a
name="_Toc50633690"></a><a name="_Toc50633984"></a><a name="_Toc50634278"></a><a
name="_Toc38908509"></a><a name="_Toc39166759"></a><a name="_Toc50556576"></a><a
name="_Toc50558185"></a><a name="_Toc50633691"></a><a name="_Toc50633985"></a><a
name="_Toc50634279"></a><a name="_Toc38908510"></a><a name="_Toc39166760"></a><a
name="_Toc50556577"></a><a name="_Toc50558186"></a><a name="_Toc50633692"></a><a
name="_Toc50633986"></a><a name="_Toc50634280"></a><a name="_Toc38908511"></a><a
name="_Toc39166761"></a><a name="_Toc50556578"></a><a name="_Toc50558187"></a><a
name="_Toc50633693"></a><a name="_Toc50633987"></a><a name="_Toc50634281"></a><a
name="_Toc38908512"></a><a name="_Toc39166762"></a><a name="_Toc50556579"></a><a
name="_Toc50558188"></a><a name="_Toc50633694"></a><a name="_Toc50633988"></a><a
name="_Toc50634282"></a><a name="_Toc38908513"></a><a name="_Toc39166763"></a><a
name="_Toc50556580"></a><a name="_Toc50558189"></a><a name="_Toc50633695"></a><a
name="_Toc50633989"></a><a name="_Toc50634283"></a><a name="_Toc322911488"></a><a
name="_Toc322912027"></a><a name="_Toc322911489"></a><a name="_Toc322912028"></a><a
name="_Toc322911490"></a><a name="_Toc322912029"></a><a name="_Toc322911491"></a><a
name="_Toc322912030"></a><a name="_Toc322911492"></a><a name="_Toc322912031"></a><a
name="_Toc322911493"></a><a name="_Toc322912032"></a><a name="_Toc322911494"></a><a
name="_Toc322912033"></a><a name="_Toc322911495"></a><a name="_Toc322912034"></a><a
name="_Toc322911496"></a><a name="_Toc322912035"></a><a name="_Toc322911497"></a><a
name="_Toc322912036"></a><a name="_Toc322911498"></a><a name="_Toc322912037"></a><a
name="_Toc322911499"></a><a name="_Toc322912038"></a><a name="_Toc322911500"></a><a
name="_Toc322912039"></a><a name="_Toc184191909"></a><a name="_Toc184210449"></a><a
name="_Toc38908514"></a><a name="_Toc39166764"></a><a name="_Toc50556581"></a><a
name="_Toc50558190"></a><a name="_Toc50633696"></a><a name="_Toc50633990"></a><a
name="_Toc50634284"></a><a name="_Toc38908515"></a><a name="_Toc38908516"></a><a
name="_Toc38908517"></a><a name="_Toc38908518"></a><a name="_Toc38908519"></a><a
name="_Toc38908520"></a><a name="_Toc38908521"></a><a name="_Toc38908522"></a><a
name="_Toc38908523"></a><a name="_Toc38908524"></a><a name="_Toc38908525"></a><a
name="_Toc39166765"></a><a name="_Toc50556582"></a><a name="_Toc50558191"></a><a
name="_Toc50633697"></a><a name="_Toc50633991"></a><a name="_Toc50634285"></a><a
name="_Toc39166766"></a><a name="_Toc50556583"></a><a name="_Toc50558192"></a><a
name="_Toc50633698"></a><a name="_Toc50633992"></a><a name="_Toc50634286"></a><a
name="_Toc39166767"></a><a name="_Toc50556584"></a><a name="_Toc50558193"></a><a
name="_Toc50633699"></a><a name="_Toc50633993"></a><a name="_Toc50634287"></a><a
name="_Toc39166768"></a><a name="_Toc50556585"></a><a name="_Toc50558194"></a><a
name="_Toc50633700"></a><a name="_Toc50633994"></a><a name="_Toc50634288"></a><a
name="_Toc39166769"></a><a name="_Toc50556586"></a><a name="_Toc50558195"></a><a
name="_Toc50633701"></a><a name="_Toc50633995"></a><a name="_Toc50634289"></a><a
name="_Toc39166770"></a><a name="_Toc50556587"></a><a name="_Toc50558196"></a><a
name="_Toc50633702"></a><a name="_Toc50633996"></a><a name="_Toc50634290"></a><a
name="_Toc39166771"></a><a name="_Toc50556588"></a><a name="_Toc50558197"></a><a
name="_Toc50633703"></a><a name="_Toc50633997"></a><a name="_Toc50634291"></a><a
name="_Toc39166772"></a><a name="_Toc50556589"></a><a name="_Toc50558198"></a><a
name="_Toc50633704"></a><a name="_Toc50633998"></a><a name="_Toc50634292"></a><a
name="_Toc38908526"></a><a name="_Toc39166773"></a><a name="_Toc50556590"></a><a
name="_Toc50558199"></a><a name="_Toc50633705"></a><a name="_Toc50633999"></a><a
name="_Toc50634293"></a><a name="_Toc38908527"></a><a name="_Toc39166774"></a><a
name="_Toc50556591"></a><a name="_Toc50558200"></a><a name="_Toc50633706"></a><a
name="_Toc50634000"></a><a name="_Toc50634294"></a><a name="_Toc366077837"></a><a
name="_Toc366078456"></a><a name="_Toc366079442"></a><a name="_Toc366080054"></a><a
name="_Toc366080666"></a><a name="_Toc366505006"></a><a name="_Toc366508375"></a><a
name="_Toc366512876"></a><a name="_Toc366574067"></a><a name="_Toc366577860"></a><a
name="_Toc366578468"></a><a name="_Toc366579062"></a><a name="_Toc366579653"></a><a
name="_Toc366580245"></a><a name="_Toc366580836"></a><a name="_Toc366581428"></a><a
name="_Toc322911502"></a><a name="_Toc322912041"></a><a name="_Toc38908531"></a><a
name="_Toc38908532"></a><a name="_Toc38908533"></a><a name="_Toc38908534"></a><a
name="_Toc38908535"></a><a name="_Toc38908536"></a><a name="_Toc38908537"></a><a
name="_Toc38908538"></a><a name="_Toc38908539"></a><a name="_Toc38908540"></a><a
name="_Toc38908541"></a><a name="_Toc38908542"></a><a name="_Toc38908543"></a><a
name="_Toc38908544"></a><a name="_Toc38908545"></a><a name="_Toc38908546"></a><a
name="_Toc38908547"></a><a name="_Toc38908548"></a><a name="_Toc38908549"></a><a
name="_Toc38908550"></a><a name="_Toc38908551"></a><a name="_Toc38908552"></a><a
name="_Toc38908553"></a><a name="_Toc38908554"></a><a name="_Toc38908555"></a><a
name="_Toc38908556"></a><a name="_Toc38908557"></a><a name="_Toc38908558"></a><a
name="_Toc38908559"></a><a name="_Toc38908560"></a><a name="_Toc38908561"></a><a
name="_Toc38908562"></a><a name="_Toc38908563"></a><a name="_Toc38908564"></a><a
name="_Toc38908565"></a><a name="_Toc38908566"></a><a name="_Toc38908567"></a><a
name="_Toc38908568"></a><a name="_Toc38908569"></a><a name="_Toc38908570"></a><a
name="_Toc38908571"></a><a name="_Toc38908572"></a><a name="_Toc38908573"></a><a
name="_Toc38908574"></a><a name="_Toc38908575"></a><a name="_Toc38908576"></a><a
name="_Toc38908577"></a><a name="_Toc38908578"></a><a name="_Toc38908579"></a><a
name="_Toc38908580"></a><a name="_Toc38908581"></a><a name="_Toc38908582"></a><a
name="_Toc38908583"></a><a name="_Toc38908584"></a><a name="_Toc38908585"></a><a
name="_Toc38908586"></a><a name="_Toc38908587"></a><a name="_Toc38908588"></a><a
name="_Toc38908589"></a><a name="_Toc38908590"></a><a name="_Toc38908591"></a><a
name="_Toc38908592"></a><a name="_Toc38908593"></a><a name="_Toc38908594"></a><a
name="_Toc38908595"></a><a name="_Toc38908596"></a><a name="_Toc38908597"></a><a
name="_Toc38908598"></a><a name="_Toc38908599"></a><a name="_Toc38908600"></a><a
name="_Toc38908601"></a><a name="_Toc38908602"></a><a name="_Toc38908603"></a><a
name="_Toc38908604"></a><a name="_Toc38908605"></a><a name="_Toc38908606"></a><a
name="_Toc38908607"></a><a name="_Toc38908608"></a><a name="_Toc38908609"></a><a
name="_Toc38908610"></a><a name="_Toc38908611"></a><a name="_Toc38908612"></a><a
name="_Toc38908613"></a><a name="_Toc38908614"></a><a name="_Toc38908615"></a><a
name="_Toc38908616"></a><a name="_Toc38908617"></a><a name="_Toc38908618"></a><a
name="_Toc39166778"></a><a name="_Toc50556595"></a><a name="_Toc50558204"></a><a
name="_Toc50633710"></a><a name="_Toc50634004"></a><a name="_Toc50634298"></a><a
name="_Toc38908619"></a><a name="_Toc38908620"></a><a name="_Toc38908621"></a><a
name="_Toc38908622"></a><a name="_Toc38908623"></a><a name="_Toc38908624"></a><a
name="_Toc38908625"></a><a name="_Toc38908626"></a><a name="_Toc38908627"></a><a
name="_Toc38908628"></a><a name="_Toc38908629"></a><a name="_Toc38908630"></a><a
name="_Toc38908631"></a><a name="_Toc38908632"></a><a name="_Toc38908633"></a><a
name="_Toc39166780"></a><a name="_Toc50556597"></a><a name="_Toc50558206"></a><a
name="_Toc50633712"></a><a name="_Toc50634006"></a><a name="_Toc50634300"></a><a
name="_Toc322911505"></a><a name="_Toc322912044"></a><a name="_Toc347241377"></a><a
name="_Toc347744570"></a><a name="_Toc348984353"></a><a name="_Toc348984658"></a><a
name="_Toc349037821"></a><a name="_Toc349038126"></a><a name="_Toc349042614"></a><a
name="_Toc351912605"></a><a name="_Toc351914626"></a><a name="_Toc351915060"></a><a
name="_Toc361231098"></a><a name="_Toc361231624"></a><a name="_Toc362444906"></a><a
name="_Toc363908828"></a><a name="_Toc364463250"></a><a name="_Toc366077842"></a><a
name="_Toc366078461"></a><a name="_Toc366079447"></a><a name="_Toc366080059"></a><a
name="_Toc366080671"></a><a name="_Toc366505011"></a><a name="_Toc366508380"></a><a
name="_Toc366512881"></a><a name="_Toc366574072"></a><a name="_Toc366577865"></a><a
name="_Toc366578473"></a><a name="_Toc366579067"></a><a name="_Toc366579658"></a><a
name="_Toc366580250"></a><a name="_Toc366580841"></a><a name="_Toc366581433"></a><a
name="_Toc322911507"></a><a name="_Toc322912046"></a><a name="_Toc322911508"></a><a
name="_Toc322912047"></a><a name="_Toc322911509"></a><a name="_Toc322912048"></a><a
name="_Toc184191912"></a><a name="_Toc184210452"></a><a name="_Toc184191913"></a><a
name="_Toc184210453"></a><a name="_Toc184191914"></a><a name="_Toc184210454"></a><a
name="_Toc165626325"></a><a name="_Toc165626326"></a><a name="_Toc165626329"></a><a
name="_Toc165626330"></a><a name="_Toc165626331"></a><a name="_Toc165626332"></a><a
name="_Toc165626334"></a><a name="_Toc165626335"></a><a name="_Toc165626336"></a><a
name="_Toc165626337"></a><a name="_Toc165626349"></a><a name="_Toc165626360"></a><a
name="_The_DFDL_Information"></a>4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The DFDL Information Set (Infoset)</h1>
<p class=MsoNormal>This section defines an abstract data set called the <strong><i>DFDL
Information Set</i></strong> (<strong><i>Infoset</i></strong>). Its purpose is
to define what is provided:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>to an invoking application by a DFDL parser when parsing
DFDL-described data using a DFDL Schema;</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>to a DFDL unparser by an invoking application when generating
DFDL-described data using a DFDL Schema</p>
<p class=MsoNormal>The DFDL Infoset contains enough information so that a DFDL
schema can be defined that enables unparsing the Infoset and reparsing the
resultant data stream to produce the same Infoset. </p>
<p class=MsoNormal>There is no requirement for DFDL-described data to be valid
in order to have a DFDL information set. </p>
<p class=MsoNormal align=center style='text-align:center;page-break-after:avoid'><img
border=0 width=576 height=340 id="Picture 1"
src="gwdrp-dfdl-v1.0.8_files/image001.gif"></p>
<p class=MsoCaption><a name="_Ref37860160">Figure </a>1
DFDL Infoset Object Model</p>
<p class=MsoNormal>The DFDL information set is presented above in Figure 1 DFDL Infoset Object Model as an object model using a Unified Modeling
Language (UML) class diagram [<a href="#a_UML">UML</a>].</p>
<p class=MsoNormal>The structure of the information set follows the Composite
design pattern [<span class=MsoHyperlink>Composite]</span>. In case of
inconsistency or ambiguity, the following discussion takes precedence.</p>
<p class=MsoNormal>DFDL describes the format of the physical representation for
data whose structure conforms to this model. Note that this model allows
hierarchically nested data but does not allow representation of arbitrary
connected graphs of data objects.</p>
<p class=MsoNormal>DFDL information sets may be created by methods (not described
in this specification) other than parsing DFDL-described data. </p>
<p class=MsoNormal>A DFDL information set consists of a number of <strong><i>information
items</i></strong>; or just <em><span style='font-family:"Arial",sans-serif'>items</span></em>
for short. The information set for any well-formed DFDL-described data contains
at least a document information item and one element information item. An information
item is an abstract description of a part of some DFDL-described data: each
information item has a set of associated named <b><i>members</i></b>. In this
specification, the member names are shown in square brackets, <strong>[thus]</strong>.
The types of information item are listed in Section <span
class=MsoHyperlink>4.2</span> <a href="#_Information_Items">Information Items</a>.
</p>
<p class=MsoNormal>The DFDL Information Set does not require or favor a
specific implementation interface paradigm. This specification presents the
information set as a modified tree for the sake of clarity and simplicity, but
there is no requirement that the DFDL Information Set be made available through
a tree structure; other types of interfaces, including (but not limited to)
event-based and query-based interfaces, are also capable of providing
information conforming to the DFDL Information Set. </p>
<p class=MsoNormal>The terms &quot;information set&quot; and &quot;information
item&quot; are similar in meaning to the generic terms &quot;tree&quot; and
&quot;node&quot;, as they are used in computing. However, the former terms are
used in this specification to reduce possible confusion with other specific
data models. </p>
<p class=MsoNormal>The DFDL Information Set is similar in purpose to the XML
Information Set [<a href="#a_XMLInfoset">XMLInfoset</a>], however, it is not
identical, nor a perfect subset, as there are important differences such as
that the DFDL Infoset does not have &#8216;text&#8217; nodes that are a primary
feature of the XML Infoset, as well as that the contents of strings is much
less restricted in the DFDL Infoset.</p>
<p class=MsoNormal>The DFDL Information Set does not have any specific support
for comments. When a data format allows for textual data mixed with a comment
syntax, then both that data and the content of the comments correspond to DFDL
Information Items. </p>
<h2><a name="_Toc62570050">4.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>&quot;No Value''</a></h2>
<p class=nobreak>In the discussion of Information Items and their members
below, some members may sometimes have the value <b><i>no value</i></b>, and it
is said that such a member has no value. This value is distinct from all other
values. In particular it is distinct from the empty string, the empty set, and
the empty list, each of which simply has no members. The concept of no-value is
also orthogonal to how nillable elements are represented in the Infoset, which
uses a separate <b>[nilled]</b> boolean flag, not a distinguished value.</p>
<h2><a name=infoitem></a><a name="_Toc199516224"></a><a name="_Toc194983903"></a><a
name="_Toc243112741"></a><a name="_Toc349042616"></a><a name="_Toc62570051"></a><a
name="_Information_Items"></a>4.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Information Items</h2>
<p class=MsoNormal>An information set contains two different types of
information items, as explained in the following sections. Every information
item has members. For ease of reference, each member is given a name, indicated
<strong>[thus]</strong>. </p>
<h3><a name=infoitem.document></a><a name="_Toc199516225"></a><a
name="_Toc194983904"></a><a name="_Toc243112742"></a><a name="_Toc349042617"></a><a
name="_Toc62570052"></a><a name="_Toc322911512"></a><a name="_Toc322912051"></a><a
name="_Toc322911513"></a><a name="_Toc322912052"></a><a
name="_2.1._Document_Information"></a><span style='color:black;font-weight:
normal'>4.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Document Information Item</h3>
<p class=MsoNormal>There is exactly one <strong><i>document information item</i></strong>
in the information set, and all other information items are accessible through
the [root] member of the document information item. </p>
<p class=MsoNormal>There is no specific DFDL schema component that corresponds
to this item. It is a concrete artifact describing the information set.</p>
<p class=MsoNormal>The document information item has the following members:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[root]</strong> The element information item
corresponding to the root element declaration of the DFDL Schema. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[dfdlVersion]</strong> String. The version of the DFDL
specification to which this information set conforms. For DFDL V1.0 this is <a
href="http://dataformat.org/dfdl-1.0"><span style='color:windowtext;text-decoration:
none'>'dfdl-1.0</span></a>'</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b>[schema]</b> String. This member is reserved for future use.</p>
<h3><a name="_Toc349042618"></a><a name="_Toc243112743"></a><a
name="_Toc194983905"></a><a name="_Toc199516226"></a><a name=infoitem.element></a><a
name="_Toc62570053"></a><a name="_Toc25589700"></a><a name="_Toc27060967"></a><span
style='color:black;font-weight:normal'>4.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Element Information Items</h3>
<p class=MsoNormal>There is an <strong><i>element information item</i></strong>
for each value parsed from the non-hidden DFDL-described data. This corresponds
to an occurrence of a non-hidden element declaration of simple type in the DFDL
Schema and is known as a <b><i>simple element information item</i></b>.</p>
<p class=MsoNormal>There is an <strong><i>element information item</i></strong>
for each explicitly declared structure in the DFDL-described data. This
corresponds to an occurrence of an element declaration of complex type in the
DFDL Schema and is known as a <b><i>complex element information item</i></b>.</p>
<p class=MsoNormal>In this information set, as in an XML document, an array is
just a set of adjacent elements with the same name and namespace.</p>
<p class=MsoNormal>The [root] member of the document information item
corresponds to the root element declaration of a DFDL Schema, and all other
element information items are accessible by recursively following its
[children] member.</p>
<p class=MsoNormal>An element information item has the following members:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><b>[array]</b> Boolean. True if the item is an array, meaning
that it corresponds to an element having maxOccurs value greater than 1, or
&#8216;unbounded&#8217;. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[children]</strong> An ordered set of zero or more
element information items. The order they appear in the set is the order
implied by the DFDL Schema. 'Ordered set' is not formally defined here, but two
operations are assumed: 'count' gives the number of information items, and 'at
(index)' gives the element at ordinal position 'index' starting from 1. In a
simple element information item this member has no value. In a document
information item this member contains exactly one element information item. If
the <b>[nilled]</b> member is true, then this member has no value.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[dataType]</strong> String. The name of the XML Schema
1.0 built-in simple type to which the value corresponds. DFDL supports a subset
of these types listed in Section <span
class=MsoHyperlink>5.1</span> DFDL
Simple Types. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[dataValue]</strong><strong><span style='font-weight:
normal'> member has no value, and for a complex element the </span>[children]</strong><strong><span
style='font-weight:normal'> member has no value. If this member is true, then
the Infoset item is said to be nil or nilled.</span></strong></p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[document]</strong> The document information item
representing the DFDL information set that contains this element. This element
is empty except in the root element of an information set.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[name]</strong> String. The local part of the element
name.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[namespace]</strong> String. The namespace, if any, of
the element. If the element does not belong to a namespace, the value is the
empty string.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[nilled] </strong><strong><span style='font-weight:normal'>Boolean.
True if the nillable item is nil. False if the nillable item is not nil. If the
element is not nillable this member has no value. If this member is true then
for a simple element the </span></strong></p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[parent]</strong> The complex element information item
which contains this information item in its [children] member. In the root
element of an information set this member is empty.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[schema]</strong> String. A reference to a schema
component associated with this information item, if any. If not empty, the
value MUST be an absolute or relative Schema Component Designator [<a
href="#a_SCD">SCD</a>].</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[unionMemberSchema]</strong><a href="#_ftn4"
name="_ftnref4" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[4]</span></span></span></a><strong>
</strong>String. For simple element information items, this member contains an
SCD reference to the member of the union that matched the value of the element.
Empty if validation is not enabled. Empty if the element's type is not a union.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><strong>[valid] </strong>Boolean<a href="#_ftn5" name="_ftnref5"
title=""><span class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[5]</span></span></span></a>.<strong>
</strong>True if the element is valid as determined by a DFDL implementation
that performs validation checking. A complex element information item is not
valid if any of its <b>[children]</b> are not valid. Empty if validation is not
enabled. </p>
<p class=MsoNormal>On unparsing, any non-empty values for the <b>[valid]</b> or
<b>[unionMemberSchema]</b> members are ignored. However, in the augmented Infoset
which is built during the unparse operation <b>[valid]</b> will have a value,
and <b>[unionMemberSchema]</b> may have a value.</p>
<h2><a name="_Toc194983906"></a><a name="_Toc199516227"></a><a
name="_Toc349042620"></a><a name="_Toc243112745"></a><a name="_Toc62570054"></a><a
name="_Toc234993862"></a><a name="_Toc234993865"></a><a name="_Toc234993866"></a><a
name="_Toc234993868"></a><a name="_Toc397515166"></a><a name="_Toc396135499"></a><a
name="_Toc394584544"></a><a name="_Toc393999753"></a><a name="_Toc393999498"></a><a
name="_Toc393356929"></a><a name="_Toc391466188"></a><a name="_Toc385242782"></a><a
name="_Toc384987233"></a><a name="_Toc384973669"></a>4.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Information Item Order</h2>
<p class=nobreak>On parsing and unparsing information items are presented in
the order they are defined in the DFDL Schema. </p>
<h2><a name="_Toc243112747"></a><a name="_Toc349042622"></a><a
name="_Toc62570055">4.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Augmented Infoset</a> </h2>
<p class=MsoNormal style='text-autospace:none'>When unparsing, one begins with
the DFDL schema and conceptually with the logical Infoset. This Infoset can be
sparsely populated because the DFDL Schema can describe default values and
computations to be done to obtain the values of some elements. As unparsing progresses
and fills in these defaultable and calculated elements, these new item values
augment the Infoset, that is, make it bigger. The resulting Infoset is called
the <i>augmented Infoset</i>. The details of this augmentation process are
described in Section <span class=MsoHyperlink>9.7</span> Unparser Infoset Augmentation Algorithm.</p>
<h1><a name="_Toc199516229"></a><a name="_Toc194983907"></a><a
name="_Toc243112748"></a><a name="_Toc349042623"></a><a name="_Ref39163521"></a><a
name="_Ref39163534"></a><a name="_Toc62570056"></a><a name="_Toc322911520"></a><a
name="_Toc322912059"></a><a name="_Toc322911521"></a><a name="_Toc322912060"></a><a
name="_DFDL_Schema_Component"></a>5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Schema Component Model</h1>
<p class=MsoNormal>When using DFDL, the format of data is described by means of
a <i>DFDL Schema</i>.</p>
<p class=MsoNormal>The DFDL Schema Component Model is shown in conceptual UML
in Figure 2. </p>
<p class=MsoNormal>The shaded boxes have direct corresponding XML Schema syntax
and therefore appear in DFDL schema. The unshaded boxes are conceptual classes
often used in discussion of DFDL schemas. For example, the ModelGroup class is
a generalization of Sequence and Choice classes which are the concrete classes
corresponding to xs:sequence and xs:choice constructs of the schema. The class
Term is a further generalization encompassing not only ModelGroup, but
GroupReference, ElementReference, and ElementDeclaration. </p>
<p class=MsoNormal><img border=0 width=522 height=451 id="Graphic 3"
src="gwdrp-dfdl-v1.0.8_files/image002.gif"></p>
<p class=MsoCaption>Figure 2 DFDL Schema UML diagram</p>
<p class=MsoNormal>Each object defined by a class in the above UML is called a <em><span
style='font-family:"Arial",sans-serif'>DFDL Schema component</span></em>.</p>
<p class=MsoNormal>The DFDL Schema Model is expressed using a subset of the XML
Schema Description Language (XSD). XSD provides a standardized schema language
suitable for expressing the DFDL Schema Model. </p>
<p class=MsoNormal>A DFDL Schema is an XML schema containing only a restricted
subset of the constructs available in full W3C XML Schema Description Language.
Within this XML schema, special DFDL annotations are distributed that carry the
information about the data's format or representation.</p>
<p class=MsoNormal>A DFDL Schema is a valid XML schema. However, the converse
is not true in general since the DFDL Schema Model does not include many
concepts that appear in XML schema.</p>
<h2><a name="_Toc99787969"></a><a name="_Toc99956882"></a><a
name="_Toc177399028"></a><a name="_Toc175057315"></a><a name="_Toc199516230"></a><a
name="_Toc194983908"></a><a name="_Toc243112749"></a><a name="_Ref273529945"></a><a
name="_Ref273529953"></a><a name="_Ref274647262"></a><a name="_Ref274647268"></a><a
name="_Ref346445132"></a><a name="_Toc349042624"></a><a name="_Ref50631257"></a><a
name="_Ref50645729"></a><a name="_Toc62570057">5.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Simple Types</a></h2>
<p class=MsoNormal>The DFDL simple types are shown in Figure 3. The graph shows
all the types defined by XML Schema version 1.0, and the subset of these types
supported by DFDL are shown as shaded.</p>
<p class=MsoNormal align=center style='text-align:center'><img border=0
width=576 height=324 id="Graphic 18" src="gwdrp-dfdl-v1.0.8_files/image003.gif"></p>
<p class=MsoCaption>Figure 3 DFDL simple types as a subset of XML Schema types</p>
<p class=MsoNormal>These types are defined as they are in XML Schema, with the exceptions
of:</p>
<p class=MsoListParagraph style='text-indent:-.25in'><span style='font-family:
Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>String &#8211; In DFDL a string can contain any character codes.
None are reserved (Including the character with character code U+0000, which is
not permitted in XML documents.)</p>
<p class=MsoNormal>The simple types are placed into logical type groupings as
shown in this table:</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td width="26%" valign=top style='width:26.62%;border:solid windowtext 1.0pt;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Logical Type Group</b></p>
</td>
<td width="73%" valign=top style='width:73.38%;border:solid windowtext 1.0pt;
border-left:none;background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Types</span></b></p>
</td>
</tr>
<tr>
<td width="26%" valign=top style='width:26.62%;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number</p>
</td>
<td width="73%" valign=top style='width:73.38%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:double, xs:float, xs:decimal, xs:integer,
xs:nonNegativeInteger, xs:long, xs:int, xs:short, xs:byte, xs:unsignedLong,
xs:unsignedInt, xs:unsignedShort, and xs:unsignedByte</p>
</td>
</tr>
<tr>
<td width="26%" valign=top style='width:26.62%;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String</p>
</td>
<td width="73%" valign=top style='width:73.38%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:string</p>
</td>
</tr>
<tr>
<td width="26%" valign=top style='width:26.62%;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Calendar</p>
</td>
<td width="73%" valign=top style='width:73.38%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:dateTime, xs:date, xs:time</p>
</td>
</tr>
<tr>
<td width="26%" valign=top style='width:26.62%;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Opaque</p>
</td>
<td width="73%" valign=top style='width:73.38%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:hexBinary</p>
</td>
</tr>
<tr>
<td width="26%" valign=top style='width:26.62%;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Boolean</p>
</td>
<td width="73%" valign=top style='width:73.38%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>xs:boolean</p>
</td>
</tr>
</table>
<p class=MsoCaption><span style='color:black'>Table </span>1:
Logical type groupings</p>
<p class=MsoNormal>Note that DFDL does not have specific types corresponding to
time intervals, nor are there special numeric types for geo-coordinates,
currency, or complex numbers. These concepts must be described in DFDL using
the available types. </p>
<h2><a name="_Ref50638650"></a><a name="_Ref50638660"></a><a name="_Toc62570058">5.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Subset of XML Schema</a></h2>
<p class=nobreak>The DFDL subset of XSD is a general model for hierarchically
nested data. It avoids the XSD features used to describe the peculiarities of
XML as a syntactic textual representation of data and avoids features that are
simply not needed by DFDL.</p>
<p class=MsoNormal>The following lists detail the similarities and differences
between general XSD and this subset.</p>
<p class=MsoNormal>DFDL Schemas consist of:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Standard XSD namespace management</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Standard XSD import and&nbsp; management for multiple file
schemas</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Local element declarations with dimensionality via XSD maxOccurs
and XSD minOccurs.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Global element declarations</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex type definitions with empty or element-only content
models.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL appinfo annotations describing the data format</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>These simple types: string, float, double, decimal, integer,
long, int, short, byte, nonNegativeInteger, unsignedLong, unsignedInt, unsignedShort,
unsignedByte, boolean, date, time, dateTime, hexBinary</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>These facets: minLength, maxLength, minInclusive, maxInclusive,
minExclusive, maxExclusive, totalDigits, fractionDigits, enumeration, pattern
(for xs:string type only)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Fixed values</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Default values</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'sequence' model groups (without XSD minOccurs and XSD maxOccurs
or with both XSD minOccurs=&quot;1&quot; and XSD maxOccurs=&quot;1&quot;)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'choice' model groups (without XSD minOccurs and XSD maxOccurs or
with both XSD minOccurs=&quot;1&quot; and XSD maxOccurs=&quot;1&quot;)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple type derivations derived by restriction from the allowed
built-in types</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Reusable Groups: named model group definitions can only contain
one model group</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Element references with dimensionality via XSD maxOccurs and XSD
minOccurs.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Group references without dimensionality</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Nillable attribute is &quot;true&quot; (that is,
nillable=&quot;true&quot; in the element declaration.) </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Appinfo annotations for sources other than DFDL are permitted and
ignored</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Unions; the memberTypes must be derived from the same simple
type. DFDL annotations are not permitted on union members.<a href="#_ftn6"
name="_ftnref6" title=""><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[6]</span></a></p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>XML Entities</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The xs:schema &#8220;elementFormDefault&#8221; attribute</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The xs:element &#8220;form&#8221; attribute</p>
<p class=MsoNormal>Note: xs:nonNegativeInteger is treated as an unsigned xs:integer.</p>
<p class=MsoNormal>The following constructs from XML Schema are not used as
part of the DFDL Schema Model of DFDL v1.0 schemas; however, they are all
reserved<a href="#_ftn7" name="_ftnref7" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[7]</span></span></span></a>
for future use since the data model may be extended to use them in future
versions of DFDL: </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Attribute declarations (local or global)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Attribute references</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Attribute group definitions</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex type derivations where the base type is not xs:anyType.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex types having mixed content models or simple content
models</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>List simple types</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Union simple types where the member types are not derived from
the same simple type.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>These atomic simple types: normalizedString, token, Name, NCName,
QName, language, positiveInteger, nonPositiveInteger, negativeInteger,&nbsp;
gYear, gYearMonth, gMonth, gMonthDay, gDay, ID, IDREF, IDREFS, ENTITIES,
ENTITY, NMTOKEN, NMTOKENS, NOTATION, anyURI, base64Binary</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>XSD maxOccurs and XSD minOccurs on model groups (except if both
are '1')</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>XSD minOccurs = &#8216;0&#8217; on branches of xs:choice model
groups</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Identity Constraints </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Substitution Groups </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>xs:all groups</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>xs:any element wildcards&nbsp; </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Redefine - This version of DFDL does not support xs:redefine.
DFDL schemas must not contain xs:redefine directly or indirectly in schemas
they import or include.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>whitespace facet</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Recursively defined types and elements (defined by way of type,
group, or element references)</p>
<h2><a name="_Ref161828896"></a><a name="_Toc177399029"></a><a
name="_Toc175057316"></a><a name="_Toc199516231"></a><a name="_Toc194983909"></a><a
name="_Toc243112750"></a><a name="_Ref346447428"></a><a name="_Toc349042625"></a><a
name="_Toc62570059">5.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>XSD Facets, min/maxOccurs, default, and fixed</a></h2>
<p class=MsoNormal>XSD element declarations and references can carry several
properties that express constraints on the described data. These constraints
are mainly used for validation. These properties include:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the facets</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>minOccurs, maxOccurs</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>default</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>fixed</p>
<p class=MsoNormal>The facets and the types they are applicable to are:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>minLength maxLength (for types xs:string, and xs:hexBinary)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>pattern</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>enumeration (all types except xs:boolean)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>maxInclusive, maxExclusive, minExclusive, minInclusive (for Number
and Calendar types in Section 5.1)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>totalDigits (for type xs:decimal and all supported integer types
descending from xs:decimal in Section 5.1)</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>fractionDigits (for type xs:decimal)</p>
<p class=MsoNormal>The facets (but not XSD maxOccurs nor XSD minOccurs) are
also checked by the dfdl:checkConstraints DFDL expression language function.</p>
<p class=MsoNormal>The following sections describe these in more detail.</p>
<h3><a name="_Toc349042626"></a><a name="_Ref365392729"></a><a
name="_Ref365392751"></a><a name="_Ref52973577"></a><a name="_Toc62570060"></a><a
name="_Toc199516232"></a><a name="_Toc194983910"></a><a name="_Toc243112751"></a><a
name="_Toc322911525"></a><a name="_Toc322912064"></a><a
name="_MinOccurs,_MaxOccurs"></a><span style='color:black;font-weight:normal'>5.3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>MinOccurs,
MaxOccurs</h3>
<p class=MsoNormal>XSD minOccurs and XSD maxOccurs are used in these
definitions:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An element declaration or reference where XSD minOccurs is
greater than zero is said to be a required element.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An element declaration or reference where XSD minOccurs is equal
to zero is said to be an optional element.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A required element or optional element where XSD maxOccurs is
greater than 1 is also said to be an array element.</p>
<p class=MsoNormal>When validating, XSD minOccurs and XSD maxOccurs are used to
determine the minimum and maximum valid number of occurrences of an element. </p>
<p class=MsoNormal>The XSD minOccurs and XSD maxOccurs values are interpreted
in conjunction with the DFDL dfdl:occursCountKind property. See Section 16,
Properties for Array Elements and Optional Elements, for more details.</p>
<h3><a name="_Toc199516233"></a><a name="_Toc194983911"></a><a
name="_Toc243112752"></a><a name="_Toc349042627"></a><a name="_Ref52291196"></a><a
name="_Ref52291218"></a><a name="_Toc62570061"></a><a name="_Toc351914639"></a><a
name="_Toc351915073"></a><a name="_Toc361231111"></a><a name="_Toc361231637"></a><a
name="_Toc362444919"></a><a name="_Toc363908841"></a><a name="_Toc364463263"></a><a
name="_Toc366077855"></a><a name="_Toc366078474"></a><a name="_Toc366079460"></a><a
name="_Toc366080072"></a><a name="_Toc366080684"></a><a name="_Toc366505024"></a><a
name="_Toc366508393"></a><a name="_Toc366512894"></a><a name="_Toc366574085"></a><a
name="_Toc366577878"></a><a name="_Toc366578486"></a><a name="_Toc366579080"></a><a
name="_Toc366579671"></a><a name="_Toc366580263"></a><a name="_Toc366580854"></a><a
name="_Toc366581446"></a><a name="_Toc322911527"></a><a name="_Toc322912066"></a><span
style='color:black;font-weight:normal'>5.3.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>MinLength, MaxLength</h3>
<p class=nobreak>These facets are used:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>When dfdl:lengthKind is &quot;implicit&quot; and type is
xs:string or xs:hexBinary. In that case the length is given by the value
of the XSD maxLength facet. In this case the XSD minLength facet is
required to be equal to the XSD maxLength facet (Schema Definition Error
otherwise).</li>
<li class=MsoNormal>For validation of variable length string elements.</li>
</ul>
<h3><a name="_Toc349042630"></a><a name="_Toc62570062"></a><a
name="_Toc322911529"></a><a name="_Toc322912068"></a><a name="_Toc329092923"></a><a
name="_Toc332701436"></a><a name="_Toc332701743"></a><a name="_Toc332711537"></a><a
name="_Toc332711845"></a><a name="_Toc332712147"></a><a name="_Toc332724063"></a><a
name="_Toc332724363"></a><a name="_Toc341102659"></a><a name="_Toc347241391"></a><a
name="_Toc347744584"></a><a name="_Toc348984367"></a><a name="_Toc348984672"></a><a
name="_Toc349037835"></a><a name="_Toc349038140"></a><a name="_Toc349042628"></a><a
name="_Toc351912619"></a><a name="_Toc351914641"></a><a name="_Toc351915075"></a><a
name="_Toc361231113"></a><a name="_Toc361231639"></a><a name="_Toc362444921"></a><a
name="_Toc363908843"></a><a name="_Toc364463265"></a><a name="_Toc366077857"></a><a
name="_Toc366078476"></a><a name="_Toc366079462"></a><a name="_Toc366080074"></a><a
name="_Toc366080686"></a><a name="_Toc366505026"></a><a name="_Toc366508395"></a><a
name="_Toc366512896"></a><a name="_Toc366574087"></a><a name="_Toc366577880"></a><a
name="_Toc366578488"></a><a name="_Toc366579082"></a><a name="_Toc366579673"></a><a
name="_Toc366580265"></a><a name="_Toc366580856"></a><a name="_Toc366581448"></a><a
name="_Toc322911530"></a><a name="_Toc322912069"></a><a name="_Toc329092924"></a><a
name="_Toc332701437"></a><a name="_Toc332701744"></a><a name="_Toc332711538"></a><a
name="_Toc332711846"></a><a name="_Toc332712148"></a><a name="_Toc332724064"></a><a
name="_Toc332724364"></a><a name="_Toc341102660"></a><a name="_Toc347241392"></a><a
name="_Toc347744585"></a><a name="_Toc348984368"></a><a name="_Toc348984673"></a><a
name="_Toc349037836"></a><a name="_Toc349038141"></a><a name="_Toc349042629"></a><a
name="_Toc351912620"></a><a name="_Toc351914642"></a><a name="_Toc351915076"></a><a
name="_Toc361231114"></a><a name="_Toc361231640"></a><a name="_Toc362444922"></a><a
name="_Toc363908844"></a><a name="_Toc364463266"></a><a name="_Toc366077858"></a><a
name="_Toc366078477"></a><a name="_Toc366079463"></a><a name="_Toc366080075"></a><a
name="_Toc366080687"></a><a name="_Toc366505027"></a><a name="_Toc366508396"></a><a
name="_Toc366512897"></a><a name="_Toc366574088"></a><a name="_Toc366577881"></a><a
name="_Toc366578489"></a><a name="_Toc366579083"></a><a name="_Toc366579674"></a><a
name="_Toc366580266"></a><a name="_Toc366580857"></a><a name="_Toc366581449"></a><span
style='color:black;font-weight:normal'>5.3.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>MaxInclusive, MaxExclusive, MinExclusive, MinInclusive,
TotalDigits, FractionDigits</h3>
<p class=MsoListParagraph style='text-indent:-.25in'><span style='font-family:
Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Used for validation only</p>
<p class=MsoNormal>The format of numbers is not derived from these facets.
Rather DFDL properties are used to specify the format. </p>
<h3><a name="_Toc243112754"></a><a name="_Toc349042631"></a><a
name="_Toc62570063"></a><a name="_Toc322911532"></a><a name="_Toc322912071"></a><span
style='color:black;font-weight:normal'>5.3.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Pattern</h3>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Allowed only on elements of type xs:string or types derived from
it in Section 5.1.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Used for validation only</p>
<p class=nobreak>It is important to avoid confusion of the pattern facet with
other uses of regular expressions that are needed in DFDL (for example, to
determine the length of an element by regular expression matching). </p>
<p class=MsoNormal>Note: in XSD, pattern is about the lexical representation of
the data, and since all is text there, everything has a lexical representation.
In DFDL only strings are guaranteed to have a lexical and logical value that is
identical.</p>
<h3><a name="_Toc62570064"></a><a name="_Toc243112755"></a><a
name="_Toc349042632"><span style='color:black;font-weight:normal'>5.3.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Enumeration</a>
Values</h3>
<p class=nobreak>Enumerations are used to provide a list of valid values in
XSD. </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Used for validation only</li>
</ul>
<p class=MsoNormal>Note: in DFDL XSD enumerations are not used as a means to
define symbolic constants. These may be captured using dfdl:defineVariable
constructs so they can be referenced from expressions.</p>
<h3><a name="_Toc243112757"></a><a name="_Toc349042633"></a><a
name="_Toc62570065"><span style='color:black;font-weight:normal'>5.3.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Default</a></h3>
<p class=MsoNormal>The XSD default property is used both when parsing and
unparsing, to provide the default value of an element when the situation
warrants it. See <span class=MsoHyperlink>9.4</span> Element
Defaults. </p>
<p class=MsoNormal>Note that the XSD fixed and XSD default properties are
mutually exclusive on an element declaration. </p>
<h3><a name="_Toc243112758"></a><a name="_Toc349042634"></a><a
name="_Ref53068668"></a><a name="_Toc62570066"></a><a name="_Toc384987246"></a><a
name="_Toc322911536"></a><a name="_Toc322912075"></a><span style='color:black;
font-weight:normal'>5.3.7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Fixed</h3>
<p class=MsoNormal>The XSD fixed property is used in the same ways as the XSD
default property but in addition:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>To constrain the logical value of an element when validating.</li>
</ul>
<p class=MsoNormal>Note that the XSD fixed and XSD default properties are
mutually exclusive on an element declaration.</p>
<h2><a name="_Toc62570067">5.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Compatibility with Other Annotation Language Schemas</a></h2>
<p class=MsoNormal>A DFDL Schema only applies DFDL annotations on a subset of
the XML Schema constructs. Hence,one normally thinks that a DFDL schema cannot
contain any of the constructs outside of the DFDL subset. For example, the DFDL
subset of XML Schema does not use attributes, hence, a DFDL schema normally
would not contain attribute declarations.</p>
<p class=MsoNormal>There is an exception to this, however. One reason to
xs:include/xs:import another XML schema document is purely for its use in
validating annotations within the schema itself. Such an XML schema is
describing not data, but a schema language extension of non-DFDL xs:annotation
elements to be used in the rest of the schema. </p>
<p class=MsoNormal>Hence, the complete set of files making up a schema by way
of xs:include/xs:import may include a mixture of DFDL schemas that use only the
DFDL subset of XSD, as well as other XML Schemas that describe just annotations.
These annotation schemas are unrestricted by the DFDL subset of XML Schema. For
example, they may include elements containing xs:attribute declarations.</p>
<p class=MsoNormal>A DFDL processor needs a way to tell these schema files
apart so that it can enforce the DFDL subset in schema files that are
describing data formats and ignore the XML schema files that are for unknown annotation
languages that are to be ignored by the DFDL processor.</p>
<p class=MsoNormal>Hence, this rule: a DFDL implementation MUST ignore any
schema file included or imported by a DFDL schema if the top level xs:schema
element of that included/imported schema does not have an XML namespace binding
for the DFDL namespace. </p>
<h1><a name="_Toc199516240"></a><a name="_Toc194983918"></a><a
name="_Toc243112759"></a><a name="_Toc349042635"></a><a name="_Ref39163631"></a><a
name="_Ref39163649"></a><a name="_Toc62570068">6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Syntax Basics</a></h1>
<p class=MsoNormal>Using DFDL, a data format is described by placing special
annotations at various positions within an XML schema. A DFDL processor
requires these annotations, along with the structural information of the
enclosing XML schema, to make sense of the physical data model.</p>
<h2><a name="_Toc177399030"></a><a name="_Toc175057317"></a><a
name="_Toc199516241"></a><a name="_Toc194983919"></a><a name="_Toc243112760"></a><a
name="_Toc349042636"></a><a name="_Toc62570069">6.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Namespaces</a></h2>
<p class=nobreak>The xs:appinfo source URI http://www.ogf.org/dfdl/ is used to
distinguish DFDL annotations from other annotations.</p>
<p class=nobreak>The element and attribute names in the DFDL syntax are in a
namespace defined by the URI <a href="http://www.ogf.org/dfdl/dfdl-1.0/">http://www.ogf.org/dfdl/dfdl-1.0/</a><a
href="#_ftn8" name="_ftnref8" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[8]</span></span></span></a>.
All symbols in this namespace are reserved. DFDL implementations MUST NOT
provide extensions to the DFDL standard using names in this namespace. Within
this specification, the namespace prefix for DFDL is &quot;dfdl&quot; referring
to the namespace http://www.ogf.org/dfdl/dfdl-1.0/.</p>
<p class=MsoNormal>Attributes on DFDL annotations that are not in the DFDL
namespace or in no namespace are ignored by a DFDL processor.</p>
<p class=MsoNormal>A DFDL Schema document contains XML schema annotation
elements that define and assign names to parts of the format specification. These
names are defined using the target namespace of the schema document where they reside
and are referenced using QNames in the usual manner. A DFDL schema document can
include or import another schema document, and namespaces work in the usual
manner for XML schema documents. The <i>schema</i> as a whole includes all
additional schema documents referenced through import and include. Generally,
in this specification, when referring to the DFDL Schema this is intended to
mean the schema as a whole. When referring to a specific document, the term
DFDL Schema document is used. </p>
<h2><a name="_Toc157593753"></a><a name="_Toc177399031"></a><a
name="_Toc175057318"></a><a name="_Toc199516242"></a><a name="_Toc194983920"></a><a
name="_Ref234817946"></a><a name="_Ref234817971"></a><a name="_Toc243112761"></a><a
name="_Toc349042637"></a><a name="_Toc62570070"></a><a name="_Toc322911540"></a><a
name="_Toc322912079"></a>6.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The DFDL Annotation Elements</h2>
<p class=MsoNormal>DFDL annotations must be positioned specifically where DFDL
annotations are allowed within an XML schema document. These positions are
known as <em><span style='font-family:"Arial",sans-serif'>annotation points</span></em>.
When an annotation is positioned at an annotation point, it binds some
additional information to the schema component that encloses it. The
description of a data format is achieved by correctly placing annotations on
the structural components of the schema.</p>
<p class=MsoNormal>DFDL specifies a collection of annotations for different
purposes. They are organized into three different annotation types: Format
Annotations, Statement Annotations, and Defining Annotations</p>
<p class=MsoNormal>At any single annotation point of the schema there can be
only one format annotation, but there can be several statement annotations.
There are rules about which of these are allowed to co-exist which are
described in sections about those specific annotation types. </p>
<p class=MsoNormal>The<b><i> </i></b><i>resolved set of annotations</i> for an
annotation point is a combined set of annotations taken from:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>a simple
type definition and the base simple type it references.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>an element
declaration and the type definition from (1) it references.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>an element
reference and the global element declaration from (2) it references.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'>4.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>a group
reference and the global group definition it references</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b>Annotatio<span style='color:black'>n Type</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='color:black'>Annotation Element</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td rowspan=8 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Format Annotation</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:choice</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the physical data
format properties of an xs:choice group. See Section <span class=MsoHyperlink>7.1</span>. </p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:element</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the physical data
format properties of an xs:element and xs:element reference. See Section <span class=MsoHyperlink>7.1</span>.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:format</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the physical data
format properties for multiple DFDL schema constructs. Used on an xs:schema
and as a child of a dfdl:defineFormat annotation. This includes aspects such
as the encodings, separators, and many more. See Section <span class=MsoHyperlink>7.1</span>.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:group</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the physical data
format properties of an xs:group reference. See Section <span class=MsoHyperlink>7.1</span>.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:property</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Used in the syntax of
format annotations. See Section <span
class=MsoHyperlink>7.1.1.2</span>.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:sequence</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the physical data
format properties of an xs:sequence group. See Section <span class=MsoHyperlink>7.1</span>.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:simpleType</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the physical data
format properties of an xs:simpleType. See Section <span
class=MsoHyperlink>7.1</span>.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:escapeScheme</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines the scheme by which
quotation marks and escape characters can be specified. This is for use with
delimited text formats. See Section <span
class=MsoHyperlink>7.4</span>. </p>
</td>
</tr>
<tr>
<td rowspan=4 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Statement Annotation</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:assert</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines a test to be used
to ensure the data are well formed. Assert is used only when parsing data. See
Section <span
class=MsoHyperlink>7.2.1</span> </p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:discriminator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines a test to be used
when resolving choice branches and optional element occurrences. A
dfdl:discriminator is used only when parsing data. See Section <span class=MsoHyperlink>7.6</span> </p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:newVariableInstance</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Creates a new instance of a
variable. See Section <span
class=MsoHyperlink>7.7.2</span></p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:setVariable</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Sets the value of a
variable whose declaration is in scope See Section <span
class=MsoHyperlink>7.7.3</span></p>
</td>
</tr>
<tr>
<td rowspan=3 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defining Annotation</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:defineEscapeScheme</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines a named, reusable
escapeScheme See Section <span
class=MsoHyperlink>7.3</span> </p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:defineFormat</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines a reusable data
format by collecting together other annotations and associating them with a
name that can be referenced from elsewhere. See Section <span class=MsoHyperlink>7.2</span> </p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>dfdl:defineVariable</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Defines a variable that can
be referenced elsewhere. This can be used to communicate a parameter from one
part of processing to another part. See Section <span
class=MsoHyperlink>7.7</span> </p>
</td>
</tr>
</table>
<p class=MsoNormal><a name="_Ref274653575"><b>Table </b></a><b>2</b><b>
- DFDL Annotation Elements</b></p>
<p class=MsoNormal>DFDL defining annotation elements may only appear at<i>
top-level</i>, that is, as annotation children of the xs:schema element. The
order of their appearance does not matter, nor does their position relative to
other children of the xs:schema. </p>
<h2><a name="_Toc138694360"></a><a name="_Ref135731088"></a><a
name="_Toc138694356"></a><a name="_Toc52008003"></a><a name="_Toc73354123"></a><a
name="_Toc86658204"></a><a name="_Toc99787971"></a><a name="_Toc138694334"></a><a
name="_Toc177399033"></a><a name="_Toc175057320"></a><a name="_Toc199516244"></a><a
name="_Toc194983922"></a><a name="_Toc243112762"></a><a name="_Toc349042638"></a><a
name="_Toc62570071"></a><a name="_Toc322911542"></a><a name="_Toc322912081"></a>6.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Properties</h2>
<p class=nobreak>A DFDL <i>property</i> is a specific DFDL construct that tells
the DFDL processor some characteristic about the data format. </p>
<p class=MsoNormal>Properties carried on the component format annotations (See
Section 7.1) are called <i>format properties</i>. A format property that is
used to describe a physical characteristic of a component is called a <i>representation</i>
property.</p>
<p class=nobreak>Properties on DFDL annotations may have values of one or more
of the following types</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Enumeration<br>
The property value is an XSD xs:token the value of which is one of the
allowed values listed in the property description. </li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: the dfdl:lengthKind
property, which has values taken from &#8220;delimited&#8221;,
&#8220;fixed&#8221;, &#8220;explicit&#8221;, &#8220;implicit&#8221;,
&#8220;prefixed&#8221;, &#8220;pattern&#8221;, and &#8220;endOfParent&#8221;.
For example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>lengthKind='delimited'</span></p>
</div>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><a href="#_DFDL_String_Literals">DFDL string literal</a>
(Section 6.3.1): <br>
The property value represents a sequence of literal bytes or characters
which represent data which appears in the data stream. The value type is a
restriction of the XSD xs:token that further disallows the space
character. <a href="#_DFDL_Character_Entities,">DFDL entities</a> must be
used to express whitespace in a DFDL String Literal.</li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: the dfdl:terminator
property, which expresses characters or bytes to be found in the data stream to
mark the termination of an element or model group instance. An example
terminator might be:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>terminator='%NL;'</span></p>
</div>
<p class=MsoNormal style='margin-left:.75in'>This uses DFDL&#8217;s
string-literal character class entity syntax (see Section <span class=MsoHyperlink>6.3.1.3</span>) to express that the element or model group is
terminated by a line ending in the data stream. </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><a href="#_DFDL_Expressions">DFDL expression</a> (Section 6.3.2)
<br>
The property is an xs:string the value of which is a DFDL expression that
returns a value derived from other property values and/or from the DFDL Infoset.
Leading and trailing whitespace is trimmed for DFDL expressions.</li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: the dfdl:occursCount property
takes an expression which commonly looks in the Infoset via an expression, to
obtain the count from another element. An example dfdl:occursCount property
might be:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>occursCount='{ ../hdr/count }'</span></p>
</div>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><a href="#_DFDL_Regular_Expressions_1">DFDL regular
expression</a> (Section 6.3.3) <br>
The property is an xs:string the value of which is a regular expression
that can be used as a pattern to calculate the length of an element by
applying that pattern to the sequence of literal bytes or characters which
appear in the data stream. Note that leading and trailing whitespace is
not trimmed and is part of the regular expression value.</li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: the dfdl:lengthPattern
property takes a regular expression which is used to scan the data stream for
matching data. An example might be:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>lengthPattern=&quot;\w{1,5};&quot;</span></p>
</div>
<p class=MsoNormal style='margin-left:.75in'>This scans the data stream for
from 1 to 5 word-characters followed by a semi-colon character.</p>
<p class=MsoListParagraph style='text-indent:-.25in'><span style='font-family:
Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Logical Value.<br>
The property value is a string that describes a logical value. The type of the
logical value is one of the XML schema simple types. The string must conform to
the XML schema lexical representation for the type. </p>
<p class=MsoNormal style='margin-left:.75in'>Example: the dfdl:nilValue
property can be used to provide a logical value that if it matches the
element's logical value is used to indicate the data is nilled. For example for
an element of type xs:int:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>nilValue='0'</span></p>
</div>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>QName<br>
The property value is an XML Qualified Name as specified in
&quot;Namespaces in XML&quot;&nbsp; [<a href="#a_XMLNamespaces">XMLNamespaces</a>]</li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: The dfdl:escapeSchemeRef
property refers to a named escape scheme definition via its qualified name. For
example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>escapeSchemeRef='ex:backslashScheme'</span></p>
</div>
<p class=MsoNormal>Some properties accept a list or union of types</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>List of DFDL String Literals or Logical Values &nbsp;<br>
The property value is a whitespace separated list of the specified type.
When parsing, if more than one string literal in the list matches the
portion of the data stream being evaluated then the longest matching value
in the list must be used. When unparsing, the first value in the list must
be used.&nbsp; String literals containing whitespace or string literals
representing the empty string must use character class entities in their
syntax.</li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: The dfdl:separator
property below indicates that the items of a sequence are separated either by a
comma or a tab character.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>separator=', %HT;'</span></p>
</div>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Union of types and expressions.<br>
The property value is a union of DFDL expression and exactly one of the
other types. The expression must resolve to a value of the other type.</li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>Example: Below are two examples of
the dfdl:length property. One uses an expression that resolves to an unsigned
integer, the other a literal unsigned integer.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3;margin-left:1.0in;margin-right:0in'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>length='{ xs:unsignedInt(../hdr/len) }'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>length='14'</span></p>
</div>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Union of types.<br>
The property value is a union of two or more types. The type is often
dependent on the value of another property. </li>
</ul>
<p class=MsoNormal style='margin-left:.75in'>For example, dfdl:nilValue can be
a List of DFDL String Literals or a List of Logical Values depending on
dfdl:nilKind. Another example is the dfdl:alignment property which can have as
its value an unsigned integer or the distinguished enum value 'implicit'. </p>
<h3><a name="_Toc349042639"></a><a name="_Ref365969145"></a><a
name="_Ref365969149"></a><a name="_Ref52976172"></a><a name="_Toc62570072"></a><a
name="_Toc322911544"></a><a name="_Toc322912083"></a><a
name="_DFDL_String_Literals"></a><span style='color:black;font-weight:normal'>6.3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>DFDL
String Literals </h3>
<p class=MsoNormal>DFDL String Literals represent a sequence of literal bytes
or characters which appear in the data stream. This presents the following
challenges:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>the literal characters in the data stream might not be in
the same character set encoding as the DFDL schema</li>
<li class=MsoNormal>it may be necessary to specify a literal character which
is not valid in an XML document</li>
<li class=MsoNormal>it may be necessary to specify one or more raw byte values</li>
</ul>
<p class=MsoNormal>A DFDL string literal can describe any of the following
types of literal data in any combination:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>a single literal character in any encoding</li>
<li class=MsoNormal>a string of literal characters in any encoding</li>
<li class=MsoNormal>one or more characters from a set of related characters
(e.g. end-of-line characters)</li>
<li class=MsoNormal>a literal byte value </li>
</ul>
<p class=MsoNormal>A DFDL string literal is therefore able to describe any
arbitrary sequence of bytes and characters.</p>
<p class=MsoNormal>Details on how a string literal is matched against the data
stream for parsing are given in Appendix
C: Processing of DFDL String literals.</p>
<p class=MsoNormal><b><i>Empty String:</i></b> The special DFDL entity %ES; is
provided for describing an empty string or an empty byte sequence. The %ES;
entity is the only way to do this. A DFDL string literal with value
&quot;&quot; (the empty string) is usually invalid. There are a few properties
that explicitly allow an empty DFDL String Literal, and these properties assign
a property-specific meaning to the empty string value.</p>
<p class=MsoNormal><b><i>Whitespace: </i></b>When whitespace must be used as
part of a property value, the DFDL string literal must use entities (such as
%WSP;) to represent the whitespace. (This allows a property to represent lists
of DFDL string literals by using literal spaces to separate list elements.)</p>
<h4><span style='color:black;font-weight:normal'>6.3.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Character strings in DFDL String Literals</h4>
<p class=MsoNormal>A literal string in a DFDL Schema is written in the character
set encoding specified by the XML directive that begins all XML documents:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot; ?&gt;</span></p>
</div>
<p class=MsoNormal>In this example, the DFDL schema is written in UTF-8, so any
literal strings contained in it, and particularly string literals found in its
representation property bindings in the format annotations, are expressed in
UTF-8.</p>
<p class=MsoNormal>However, these strings are being used to describe features
of text data that are commonly in other character set encodings. For example,a
DFDL schema may describe EBCDIC data that is comma separated. A comma in EBCDIC
has a single-byte code unit of 0x6B in the data, the numeric value of which
does not correspond to the Unicode character code for comma which is U+002C.
However, whenthe schema indicates that an item is &quot;,&quot; (comma)
separated and specifies this using a string literal along with specifying the
'encoding' property to be 'ebcdic-cp-us' then this means that the data are
separated by EBCDIC commas regardless of what character set encoding is used to
write the DFDL Schema. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;?xml
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ... &gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;dfdl:format encoding=&quot;ebcdic-cp-us&quot; separator=&quot;,&quot;</span></span><span
lang=EN-GB style='color:black'>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; <span class=CodeCharacter>...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></p>
</div>
<p class=MsoNormal>When a DFDL processor uses the separator expressed in this
manner, the string literal &quot;,&quot; is <em><span style='font-family:"Arial",sans-serif'>translated</span></em>
into the character set encoding of the data it is separating as specified by
the dfdl:encoding representation property. Hence, in this case the processor would
be searching the data for a character with codepoint 0x6B (the EBCDIC comma),
not a UTF-8 or Unicode (0x2C) comma which is what exists in the DFDL schema
document.</p>
<h4><a name="_Toc177399034"></a><a name="_Toc175057321"></a><a
name="_Toc199516245"></a><a name="_Toc194983923"></a><a name="_Toc243112763"></a><a
name="_Ref384972745"></a><a name="_Ref384972753"></a><a
name="_DFDL_Character_Entities,"></a><span style='color:black;font-weight:normal'>6.3.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>DFDL
Character Entities, Character Class Entities, and Byte Values in String
Literals</h4>
<p class=MsoNormal>DFDL character entities specify a single Unicode character
and provide a convenient way to specify code points that appear in the data
stream but would be difficult to specify in XML strings. For example, DFDL
character entities can express common non-printable characters or code points,
such as 0x00, that are not valid in XML documents. DFDL entities are based on
XML entities, which can also be used in a DFDL schema. Examples:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>separator='%HT;'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>terminator='%WSP*;//'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>fillByte='%#x00;'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>textStringPadCharacter='%#x7F;' </span></p>
</div>
<p class=MsoNormal>In some cases, regular XML character entities may be used
instead. For example, the above '%#x7F;' could be expressed as '&amp;#x7F;' but
this is not always the case. There is no way in XSD to express the character
code 0 (i.e., the ASCII NUL code point), even as an XML character entity;
hence, one must often use DFDL character entities like '%#x00;' above, or their
named equivalents. The DFDL string literal syntax allows the author to always
use DFDL character entity syntax instead of jumping back and forth between XSD
character entities and DFDL character entities. </p>
<p class=MsoNormal>The following grammar gives the syntax of DFDL String
Literals generally, including the various kinds of entities.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;
border-bottom:none;border-right:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlStringLiteral</span></p>
</td>
<td valign=top style='border:none;border-top:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border-top:solid windowtext 1.0pt;border-left:none;
border-bottom:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>(DfdlStringLiteralPart)+
| DfdlESEntity</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlStringLiteralPart</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>LiteralString | DfdlCharEntity
| DfdlCharClass | ByteValue</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>LiteralString</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>A string of
literal characters</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlCharEntity</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlEntity |
DecimalCodePoint | HexadecimalCodePoint</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlCharClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'%'
DfdlCharClassName ';'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>ByteValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'%#r'
[0-9a-fA-F]{2} ';'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlEntity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'%' DfdlEntityName
';'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DecimalCodePoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'%#' [0-9]+ ';'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>HexadecimalCodePoint&nbsp;
&nbsp;</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'%#x' [0-9a-fA-F]+
';'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlEntityName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'NUL'|'SOH''|'STX'|'ETX'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'EOT'|'ENQ'|'ACK'|'BEL'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'BS'|'HT'|'LF'|'VT'|'FF'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'CR'|'SO'|'SI'|'DLE'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'DC1'|'DC2'|'DC3'|'DC4'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'NAK'|'SYN'|'ETB'|'CAN'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'EM'|'SUB'|'ESC'|'FS'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'GS'|'RS'|'US'|'SP'|&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>'DEL'|'NBSP'|'NEL'|'LS'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlCharClassName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlNLEntity</span><span
style='font-family:"Courier New"'> | </span><span style='font-family:"Courier New"'>DfdlWSPEntity</span><span
style='font-family:"Courier New"'> | </span><span style='font-family:"Courier New"'>DfdlWSPStarEntity</span><span
style='font-family:"Courier New"'> | </span><span style='font-family:"Courier New"'>DfdlWSPPlusEntity</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlNLEntity</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'NL'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlWSPEntity</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'WSP'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlWSPStarEntity</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'WSP*'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlWSPPlusEntity</span></p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'WSP+'</span></p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:solid windowtext 1.0pt;
border-bottom:solid windowtext 1.0pt;border-right:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>DfdlESEntity</span></p>
</td>
<td valign=top style='border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>::=</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>'ES'</span></p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Ref18842880">Table </a>3 DFDL Character Entity,
Character Class Entity, and Byte Value Entity Syntax</p>
<p class=MsoNormal>Using %% inserts a single literal &quot;%&quot; into the
string literal. This &quot;%&quot; is subject to character set encoding translation
as is any other character.</p>
<p class=MsoNormal>A HexadecimalCodePoint provides a hexadecimal representation
of the character's code point in ISO/IEC 10646. </p>
<p class=MsoNormal>A DecimalCodePoint provides a decimal representation of the
character's code point in ISO/IEC 10646.</p>
<p class=MsoNormal>A DfdlEntityName is one of the mnemonics given in the
following tables. </p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Mnemonic</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Unicode Character Code</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>NUL</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>null </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0000</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>SOH</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>start of heading</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0001</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>STX</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>start of text </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0002</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>ETX</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>end of text </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0003</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>EOT</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>end of transmission</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0004</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>ENQ</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>enquiry</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0005</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>ACK</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>acknowledge</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0006</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>BEL</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>bell</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0007</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>BS</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>backspace</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0008</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>HT</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>horizontal tab</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0009</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>LF</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>line feed</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+000A</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>VT</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>vertical tab</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+000B</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>FF</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>form feed</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+000C</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>CR</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>carriage return</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+000D</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>SO</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>shift out</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+000E</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>SI</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>shift in</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+000F</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>DLE</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>data link escape</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0010</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>DC1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>device control 1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0011</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>DC2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>device control 2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0012</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>DC3</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>device control 3</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0013</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>DC4</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>device control 4</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0014</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>NAK</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>negative
acknowledge</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0015</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>SYN</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>synchronous idle</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0016</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>ETB</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>end of transmission
block </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0017</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>CAN</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>cancel</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0018</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>EM</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>end of medium</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0019</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>SUB</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>substitute</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+001A</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>ESC</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>escape</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+001B</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>FS</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>file separator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+001C</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>GS</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>group separator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+001D</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>RS</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>record separator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+001E</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>US</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>unit separator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+001F</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>SP</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>space</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0020</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>DEL</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>delete</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+007F</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>NBSP</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>no break space</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+00A0</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>&nbsp;NEL</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>Next line</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+0085 </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>&nbsp;LS</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>Line separator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>U+2028&nbsp; </p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Ref384972713">Table </a>4
DFDL Entities</p>
<h4><a name="_Toc199516246"></a><a name="_Toc194983924"></a><a
name="_Toc243112764"></a><a name="_Ref37865472"><span style='color:black;
font-weight:normal'>6.3.1.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character Class Entities in DFDL String Literals</a></h4>
<p class=MsoNormal>The following DFDL character classes are provided to specify
one or more characters from a set of related characters.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Mnemonic</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Unicode Character Code(s)</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>NL</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Newline</p>
<p class=MsoNormal>On parse any one of the single characters CR, LF, NEL or
LS or the character combination CRLF. </p>
<p class=MsoNormal>On unparse the value of the dfdl:outputNewLine property is
output, which must specify one of the single characters %CR;, %LF;,&nbsp;
%NEL;, or %LS; or the character combination %CR;%LF;.</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>U+000A LF</p>
<p class=MsoNormal>U+000D CR</p>
<p class=MsoNormal>U+000D U+000A CRLF</p>
<p class=MsoNormal>U+0085 NEL</p>
<p class=MsoNormal>U+2028&nbsp; LS</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>WSP</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Single whitespace</p>
<p class=MsoNormal>On parse any whitespace character</p>
<p class=MsoNormal>On unparse a space (U+0020) is output</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>U+0009-U+000D (Control characters) </p>
<p class=MsoNormal>U+0020 SPACE </p>
<p class=MsoNormal>U+0085 NEL </p>
<p class=MsoNormal>U+00A0 NBSP </p>
<p class=MsoNormal>U+1680 OGHAM SPACE MARK </p>
<p class=MsoNormal>U+180E MONGOLIAN VOWEL SEPARATOR </p>
<p class=MsoNormal>U+2000-U+200A (different sorts of spaces) </p>
<p class=MsoNormal>U+2028 LSP </p>
<p class=MsoNormal>U+2029 PSP </p>
<p class=MsoNormal>U+202F NARROW NBSP </p>
<p class=MsoNormal>U+205F MEDIUM MATHEMATICAL SPACE </p>
<p class=MsoNormal>U+3000 IDEOGRAPHIC SPACE</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>WSP*</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Optional Whitespaces</p>
<p class=MsoNormal>On parse whitespace characters are ignored.</p>
<p class=MsoNormal>On unparse nothing is output</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Same as WSP</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>WSP+</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Whitespaces</p>
<p class=MsoNormal>On parse one or more whitespace characters are ignored. It
is a Processing Error if no whitespace character is found.</p>
<p class=MsoNormal>On unparse a space (U+0020) is output.</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Same as WSP</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>ES</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Empty String</p>
<p class=MsoNormal>Used in whitespace separated lists when empty string is
one of the values.</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Ref384972887">Table </a>5
DFDL Character Class Entities</p>
<h4><span style='color:black;font-weight:normal'>6.3.1.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Byte Value Entities in DFDL String Literals</h4>
<p class=nobreak>DFDL byte-value entities provide a way to specify a single
byte as it appears in the data stream without any character set encoding
translation. To specify a string of byte values, a sequence of two or more byte-value
entities must be used. The syntax is in Table
3 DFDL Character Entity, Character Class Entity, and Byte Value Entity Syntax
above. Example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>%#rFF;</span></p>
</div>
<p class=MsoNormal>In this notation the &quot;r&quot; can be thought of as
short for &quot;raw&quot;, as byte value entities are said to denote &quot;raw
bytes&quot;. </p>
<h3><a name="_Toc349042642"></a><a name="_Ref52976582"></a><a
name="_Toc62570073"></a><a name="_Toc366077869"></a><a name="_Toc366078488"></a><a
name="_Toc366079474"></a><a name="_Toc366080086"></a><a name="_Toc366080698"></a><a
name="_Toc366505038"></a><a name="_Toc366508407"></a><a name="_Toc366512908"></a><a
name="_Toc366574099"></a><a name="_Toc366577892"></a><a name="_Toc366578500"></a><a
name="_Toc366579094"></a><a name="_Toc366579685"></a><a name="_Toc366580277"></a><a
name="_Toc366580868"></a><a name="_Toc366581460"></a><a name="_Toc366077874"></a><a
name="_Toc366078493"></a><a name="_Toc366079479"></a><a name="_Toc366080091"></a><a
name="_Toc366080703"></a><a name="_Toc366505043"></a><a name="_Toc366508412"></a><a
name="_Toc366512913"></a><a name="_Toc366574104"></a><a name="_Toc366577897"></a><a
name="_Toc366578505"></a><a name="_Toc366579099"></a><a name="_Toc366579690"></a><a
name="_Toc366580282"></a><a name="_Toc366580873"></a><a name="_Toc366581465"></a><a
name="_Toc322911546"></a><a name="_Toc322912085"></a><a name="_Toc329092935"></a><a
name="_Toc332701448"></a><a name="_Toc332701755"></a><a name="_Toc332711549"></a><a
name="_Toc332711857"></a><a name="_Toc332712159"></a><a name="_Toc332724075"></a><a
name="_Toc332724375"></a><a name="_Toc341102671"></a><a name="_Toc347241403"></a><a
name="_Toc347744596"></a><a name="_Toc348984379"></a><a name="_Toc348984684"></a><a
name="_Toc349037847"></a><a name="_Toc349038152"></a><a name="_Toc349042640"></a><a
name="_Toc351912631"></a><a name="_Toc351914653"></a><a name="_Toc351915087"></a><a
name="_Toc361231125"></a><a name="_Toc361231651"></a><a name="_Toc362444933"></a><a
name="_Toc363908855"></a><a name="_Toc364463277"></a><a name="_Toc366077875"></a><a
name="_Toc366078494"></a><a name="_Toc366079480"></a><a name="_Toc366080092"></a><a
name="_Toc366080704"></a><a name="_Toc366505044"></a><a name="_Toc366508413"></a><a
name="_Toc366512914"></a><a name="_Toc366574105"></a><a name="_Toc366577898"></a><a
name="_Toc366578506"></a><a name="_Toc366579100"></a><a name="_Toc366579691"></a><a
name="_Toc366580283"></a><a name="_Toc366580874"></a><a name="_Toc366581466"></a><a
name="_Toc322911547"></a><a name="_Toc322912086"></a><a name="_Toc329092936"></a><a
name="_Toc332701449"></a><a name="_Toc332701756"></a><a name="_Toc332711550"></a><a
name="_Toc332711858"></a><a name="_Toc332712160"></a><a name="_Toc332724076"></a><a
name="_Toc332724376"></a><a name="_Toc341102672"></a><a name="_Toc347241404"></a><a
name="_Toc347744597"></a><a name="_Toc348984380"></a><a name="_Toc348984685"></a><a
name="_Toc349037848"></a><a name="_Toc349038153"></a><a name="_Toc349042641"></a><a
name="_Toc351912632"></a><a name="_Toc351914654"></a><a name="_Toc351915088"></a><a
name="_Toc361231126"></a><a name="_Toc361231652"></a><a name="_Toc362444934"></a><a
name="_Toc363908856"></a><a name="_Toc364463278"></a><a name="_Toc366077876"></a><a
name="_Toc366078495"></a><a name="_Toc366079481"></a><a name="_Toc366080093"></a><a
name="_Toc366080705"></a><a name="_Toc366505045"></a><a name="_Toc366508414"></a><a
name="_Toc366512915"></a><a name="_Toc366574106"></a><a name="_Toc366577899"></a><a
name="_Toc366578507"></a><a name="_Toc366579101"></a><a name="_Toc366579692"></a><a
name="_Toc366580284"></a><a name="_Toc366580875"></a><a name="_Toc366581467"></a><a
name="_DFDL_Expressions"></a><span style='color:black;font-weight:normal'>6.3.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>DFDL
Expressions </h3>
<p class=MsoNormal>Some DFDL properties allow DFDL expressions (see Section <span class=MsoHyperlink>18</span><span class=MsoHyperlink> </span><a
href="#_Toc322911718"><span
class=InternetLink>DFDL Expression Language</span></a>) to be used so that the
property can be set dynamically at processing-time.</p>
<p class=MsoNormal>The general syntax of expressions is &quot;{&quot;
expression &quot;}&quot;</p>
<p class=MsoNormal>The rules for recognizing DFDL expressions are</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Discard any leading and trailing whitespace.</li>
<li class=MsoNormal>Must start with a '{' in the first position and end with
'}' in the last position.</li>
<li class=MsoNormal>'{' in any position other than the first is treated as a
literal.</li>
<li class=MsoNormal>'}' in any position other than the last position is
treated as a literal.</li>
<li class=MsoNormal>'{{' as the first characters are treated as the literal
'{' and not as the start of a DFDL expression.</li>
</ul>
<p class=MsoNormal>DFDL expressions reference other items in the Infoset or
augmented Infoset using absolute or relative paths.</p>
<p class=MsoNormal>DFDL expressions that are used to provide the value of DFDL
properties in the dfdl:format annotation on the top level xs:schema declaration
must not contain relative paths.</p>
<h3><a name="_Toc177399035"></a><a name="_Toc175057322"></a><a
name="_Toc194983925"></a><a name="_Toc199516247"></a><a name="_Toc243112765"></a><a
name="_Toc349042643"></a><a name="_Ref52976566"></a><a name="_Toc62570074"></a><a
name="_DFDL_Regular_Expressions_1"></a><span style='color:black;font-weight:
normal'>6.3.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Regular Expressions </h3>
<p class=nobreak>Some properties expect a regular expression to be specified.
The DFDL Regular Expression language is defined in Section <span class=MsoHyperlink>19</span>, <span
class=InternetLink>DFDL Regular Expressions</span>.</p>
<h3><a name="_Toc199516248"></a><a name="_Toc243112766"></a><a
name="_Toc349042645"></a><a name="_Toc62570075"></a><a name="_Toc322911550"></a><a
name="_Toc322912089"></a><a name="_Toc329092939"></a><a name="_Toc332701452"></a><a
name="_Toc332701759"></a><a name="_Toc332711553"></a><a name="_Toc332711861"></a><a
name="_Toc332712163"></a><a name="_Toc332724079"></a><a name="_Toc332724379"></a><a
name="_Toc341102675"></a><a name="_Toc347241407"></a><a name="_Toc347744600"></a><a
name="_Toc348984383"></a><a name="_Toc348984688"></a><a name="_Toc349037851"></a><a
name="_Toc349038156"></a><a name="_Toc349042644"></a><a name="_Toc351912635"></a><a
name="_Toc351914657"></a><a name="_Toc351915091"></a><a name="_Toc361231129"></a><a
name="_Toc361231655"></a><a name="_Toc362444937"></a><a name="_Toc363908859"></a><a
name="_Toc364463281"></a><a name="_Toc366077879"></a><a name="_Toc366078498"></a><a
name="_Toc366079484"></a><a name="_Toc366080096"></a><a name="_Toc366080708"></a><a
name="_Toc366505048"></a><a name="_Toc366508417"></a><a name="_Toc366512918"></a><a
name="_Toc366574109"></a><a name="_Toc366577902"></a><a name="_Toc366578510"></a><a
name="_Toc366579104"></a><a name="_Toc366579695"></a><a name="_Toc366580287"></a><a
name="_Toc366580878"></a><a name="_Toc366581470"></a><span style='color:black;
font-weight:normal'>6.3.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Enumerations in DFDL</h3>
<p class=nobreak>Some DFDL properties accept an enumerated list of valid
values. It is a Schema Definition Error if a value other than one of the
enumerated values is specified. The case of the specified value must match the
enumeration. An enumeration is of type string unless otherwise stated.</p>
<h1><a name="_Toc349042646"></a><a name="_Ref39163686"></a><a
name="_Ref39163697"></a><a name="_Toc62570076">7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Syntax of DFDL Annotation Elements</a></h1>
<p class=nobreak>This section describes the syntax of each of the DFDL
annotation elements along with discussion of their basic meanings. </p>
<p class=MsoNormal>The DFDL annotation elements are listed in <b>Table 2 - DFDL Annotation Elements</b></p>
<h2><a name="_Toc177399036"></a><a name="_Toc175057323"></a><a
name="_Toc199516249"></a><a name="_Toc194983926"></a><a name="_Toc243112767"></a><a
name="_Ref251074571"></a><a name="_Ref251074576"></a><a name="_Toc349042647"></a><a
name="_Ref366097672"></a><a name="_Ref366097687"></a><a name="_Ref366097731"></a><a
name="_Ref366097780"></a><a name="_Ref366097797"></a><a name="_Ref53662686"></a><a
name="_Toc62570077">7.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Component Format Annotations</a></h2>
<p class=MsoNormal>A data format can be 'used' or put into effect for a part of
the schema by use of the component format annotation elements. </p>
<p class=MsoNormal>There are specific annotations for each type of schema
component that supports only the representation properties applicable to that
component. The table below gives the specific annotation for each schema component.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Schema component</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>DFDL annotation</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:choice</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:choice</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:element</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:element reference</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:group reference</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:schema</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:format</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:sequence</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:sequence</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:simpleType</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 6 DFDL Component Format Annotations</p>
<p class=MsoNormal>Below are a few examples followed by sections which describe
each kind of annotation element in detail. Here is an example of DFDL component
format annotation, specifically use of dfdl:element on an xs:element
declaration:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ...&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &lt;xs:element
name=&quot;root&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element ref=&quot;aBaseConfig&quot; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
representation=&quot;text&quot; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encoding=&quot;UTF-8&quot;/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:element&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></span></p>
</div>
<p class=MsoNormal>Note that in the above, the DFDL annotation lives inside
this surrounding context of xs:annotation and xs:appinfo elements. This is just
the standard XSD way of doing annotations. The source attribute is an
identifier that separates different families of appinfo annotations.&nbsp; </p>
<p class=MsoNormal>Belowa dfdl:format annotation is used inside a
dfdl:defineFormat annotation to define a named reusable set of format properties
that can be referenced from another format annotation.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ...&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:defineFormat name=&quot;baseFormat&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format byteOrder=&quot;bigEndian&quot; encoding=&quot;ascii&quot;/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:defineFormat&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></span></p>
</div>
<p class=MsoNormal>A dfdl:format annotation at the top level of a schema, that
is as an annotation child element on the xs:schema, provides a set of default
properties for the lexically enclosed schema document. (See <span class=MsoHyperlink>8.1.2</span> Providing
Defaults for DFDL properties.) </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ...&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
representation=&quot;binary&quot;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
byteOrder=&quot;bigEndian&quot; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
encoding=&quot;ascii&quot;/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></span></p>
</div>
<h3><a name="_Toc194983928"></a><a name="_Toc199516251"></a><a
name="_Toc175057325"></a><a name="_Toc177399038"></a><a name="_Toc113075256"></a><a
name="_Toc112826278"></a><a name="_Toc112836556"></a><a name="_Toc243112771"></a><a
name="_Toc349042652"></a><a name="_Toc62570078"></a><a name="_Toc322911557"></a><a
name="_Toc322912096"></a><a name="_Toc329092946"></a><a name="_Toc332701459"></a><a
name="_Toc332701766"></a><a name="_Toc332711560"></a><a name="_Toc332711868"></a><a
name="_Toc332712170"></a><a name="_Toc332724086"></a><a name="_Toc332724386"></a><a
name="_Toc341102682"></a><a name="_Toc347241414"></a><a name="_Toc347744607"></a><a
name="_Toc348984390"></a><a name="_Toc348984695"></a><a name="_Toc349037858"></a><a
name="_Toc349038163"></a><a name="_Toc349042651"></a><a name="_Toc351912642"></a><a
name="_Toc351914664"></a><a name="_Toc351915098"></a><a name="_Toc361231136"></a><a
name="_Toc361231662"></a><a name="_Toc362444960"></a><a name="_Toc363908882"></a><a
name="_Toc364463305"></a><a name="_Toc366077903"></a><a name="_Toc366078522"></a><a
name="_Toc366079508"></a><a name="_Toc366080120"></a><a name="_Toc366080729"></a><a
name="_Toc366505069"></a><a name="_Toc366508438"></a><a name="_Toc366512939"></a><a
name="_Toc366574130"></a><a name="_Toc366577923"></a><a name="_Toc366578517"></a><a
name="_Toc366579109"></a><a name="_Toc366579700"></a><a name="_Toc366580292"></a><a
name="_Toc366580883"></a><a name="_Toc366581475"></a><span style='color:black;
font-weight:normal'>7.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Property Binding Syntax</h3>
<p class=nobreak>A <i>property binding</i> is the syntax in a DFDL schema that
gives a value to a property. Up to this point, the examples in this document
have all used a specific syntax for property bindings called <i>attribute form</i>.
However, the format properties may be specified in any one of three forms:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Attribute form</li>
<li class=MsoNormal>Element form</li>
<li class=MsoNormal>Short form</li>
</ol>
<p class=MsoNormal>A DFDL property may be specified using any of the forms with
the following exceptions:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>The dfdl:ref property may be specified in attribute or
short form</li>
<li class=MsoNormal>The dfdl:escapeSchemeRef property may be specified in attribute
or short form</li>
<li class=MsoNormal>The dfdl:hiddenGroupRef&nbsp; property may be specified in
attribute or short form</li>
<li class=MsoNormal>The dfdl:prefixLengthType property may be specified in
attribute or short form</li>
<li class=MsoNormal>Short form must not be used on the xs:schema element. </li>
</ul>
<p class=MsoNormal>It is a Schema Definition Error if the same property is
specified in more than one form. That is, there is no priority ordering where
one form takes precedent over another.</p>
<h4><span style='color:black;font-weight:normal'>7.1.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Property Binding Syntax: Attribute Form</h4>
<p class=nobreak>Within the format annotation elements are bindings for
properties of the form:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;PropertyName=&quot;Value&quot; </span></p>
</div>
<p class=MsoNormal>For example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format encoding=&quot;utf-8&quot; separator=&quot;%NL;&quot;</span></span><span
lang=EN-GB style='color:black'>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></span></p>
</div>
<p class=MsoNormal>This is the attribute form of property binding.</p>
<h4><a name="_Ref161823626"></a><a name="_Toc177399039"></a><a
name="_Toc175057326"></a><a name="_Toc199516252"></a><a name="_Toc194983929"><span
style='color:black;font-weight:normal'>7.1.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Property Binding Syntax: Element Form</a></h4>
<p class=nobreak>The representation properties can sometimes have complex
syntax, so an element form for individual property bindings is provided to ease
syntactic expression difficulties. The annotation element is dfdl:property and
it has one attribute 'name' which provides the name of the property. </p>
<p class=MsoNormal>For example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:property name='encoding'&gt;utf-8&lt;/dfdl:property&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:property name='separator'&gt;%NL;&lt;/dfdl:property&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/dfdl:format&gt;
</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
</div>
<p class=MsoNormal>Element form is mostly used for properties that themselves
contain the quotation mark characters and escape characters so that the
property value can be expressed without concerns about confusion with the XSD
syntax use of these same characters. XML's CDATA encapsulation can be used to
allow malformed XML and mismatched quotes to be easily used as representation
property values.</p>
<p class=MsoNormal>Here is an example where a delimiter has a syntax that
overlaps with what XML comments look like. Use of XML's CDATA bracketing makes
this less clumsy to express than using XML escape characters:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;dfdl:property
name='initiator'&gt;&lt;[CDATA[&lt;!-- ]]&gt;&lt;/dfdl:property&gt;</span></span></p>
</div>
<h4><a name="_Toc138694349"></a><a name="_Toc177399040"></a><a
name="_Toc175057327"></a><a name="_Toc199516253"></a><a name="_Toc194983930"><span
style='color:black;font-weight:normal'>7.1.1.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Property Binding Syntax: Short Form </a></h4>
<p class=nobreak>To save textual clutter, short-form syntax for format
annotations is also allowed on xs:element, xs:sequence, xs:choice, xs:group
(for group references only), and xs:simpleType schema elements. The xs:schema
element cannot carry short-form annotations; attribute form must be used instead.
Attributes which are in the namespace '<a
href="http://www.ogf.org/dfdl/dfdl-1.0/">http://www.ogf.org/dfdl/dfdl-1.0/</a>'
and whose local name matches one of the DFDL representation properties are
assumed to be equivalent to specific DFDL attribute form annotations.</p>
<p class=MsoNormal>For example, the two forms below are equivalent in that they
describe the same data format. The first is the short form of the second:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:element
name=&quot;elem1&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:complexType&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence dfdl:separator=&quot;%HT;&quot; &gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:complexType&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:element&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:element
name=&quot;elem2&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:complexType&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:sequence&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:sequence separator=&quot;%HT;&quot; /&gt; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:complexType&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:element&gt;</span></span></p>
</div>
<p class=nobreak>Another example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:sequence
dfdl:separator=&quot;,&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &lt;xs:element
name=&quot;elem1&quot; type=&quot;xs:int&quot; maxOccurs=&quot;unbounded&quot;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation=&quot;text&quot;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:textNumberRep=&quot;standard&quot;</span><span class=CodeCharacter><span
lang=EN-GB style='color:black'> </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:initiator=&quot;[&quot;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:terminator=&quot;]&quot;/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB>&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &lt;xs:element
name=&quot;elem2&quot; type=&quot;xs:int&quot; maxOccurs=&quot;unbounded&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;&lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;text&quot;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
textNumberRep=&quot;standard&quot;</span><span class=CodeCharacter><span
lang=EN-GB style='color:black'> </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
initiator=&quot;[&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
terminator=&quot;]&quot;/&gt; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:element&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></span></p>
</div>
<p class=MsoNormal>The above show use of short-form property binding syntax for
annotating elements and sequences.</p>
<h3><a name="_Toc199516254"></a><a name="_Toc194983931"></a><a
name="_Toc243112772"></a><a name="_Toc349042654"></a><a name="_Toc62570079"></a><a
name="_Toc138694341"></a><a name="_Toc177399041"></a><a name="_Toc175057328"></a><a
name="_Toc322911559"></a><a name="_Toc322912098"></a><a name="_Toc329092948"></a><a
name="_Toc332701461"></a><a name="_Toc332701768"></a><a name="_Toc332711562"></a><a
name="_Toc332711870"></a><a name="_Toc332712172"></a><a name="_Toc332724088"></a><a
name="_Toc332724388"></a><a name="_Toc341102684"></a><a name="_Toc347241416"></a><a
name="_Toc347744609"></a><a name="_Toc348984392"></a><a name="_Toc348984697"></a><a
name="_Toc349037860"></a><a name="_Toc349038165"></a><a name="_Toc349042653"></a><a
name="_Toc351912644"></a><a name="_Toc351914666"></a><a name="_Toc351915100"></a><a
name="_Toc361231138"></a><a name="_Toc361231664"></a><a name="_Toc362444962"></a><a
name="_Toc363908884"></a><a name="_Toc364463307"></a><a name="_Toc366077905"></a><a
name="_Toc366078524"></a><a name="_Toc366079510"></a><a name="_Toc366080122"></a><a
name="_Toc366080731"></a><a name="_Toc366505071"></a><a name="_Toc366508440"></a><a
name="_Toc366512941"></a><a name="_Toc366574132"></a><a name="_Toc366577925"></a><a
name="_Toc366578519"></a><a name="_Toc366579111"></a><a name="_Toc366579702"></a><a
name="_Toc366580294"></a><a name="_Toc366580885"></a><a name="_Toc366581477"></a><span
style='color:black;font-weight:normal'>7.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Empty String as a Representation Property Value</h3>
<p class=MsoNormal>DFDL provides no mechanism to un-set a property. Setting a
representation property's value to the empty string doesn't remove the value
for that property but sets it to the empty string value. This may not be a
valid value for certain properties. </p>
<p class=MsoNormal>For example, in non-delimited text data formats, it is
sensible for the separator to be defined to be the empty string. This turns off
use of separator delimiters. For many other string-valued properties, it is a
Schema Definition Error to assign them the empty string value. For example, the
character set encoding property (dfdl:encoding) cannot be set to the empty
string. </p>
<h2><a name="_Toc138694338"></a><a name="_Ref140934911"></a><a
name="_Ref140934918"></a><a name="_Toc177399042"></a><a name="_Toc175057329"></a><a
name="_Toc199516255"></a><a name="_Toc194983932"></a><a name="_Ref215568985"></a><a
name="_Ref215568992"></a><a name="_Toc243112773"></a><a name="_Ref251074304"></a><a
name="_Ref251074309"></a><a name="_Toc349042655"></a><a name="_Toc62570080"></a><a
name="_Toc137360897"></a><a name="_Toc137360898"></a><a name="_Toc137029569"></a><a
name="_Toc137029570"></a><a name="_Toc137029571"></a><a name="_Toc137029574"></a><a
name="_Toc137029576"></a>7.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>dfdl:defineFormat - Reusable Data Format Definitions</h2>
<p class=nobreak>To avoid error-prone redundant expression of properties in
DFDL schemas, a collection of DFDL properties can be given a name so that they
are reusable by way of a<i> format reference</i>. </p>
<p class=MsoNormal>One or more dfdl:defineFormat annotation elements can appear
within the annotation children of the xs:schema element. </p>
<p class=MsoNormal>Each dfdl:defineFormat has a required name attribute. </p>
<p class=MsoNormal>The construct creates a named data format definition. The
value of the name attribute is of XML type NCName. The format name becomes a
member of the schema's target namespace. These names must be unique within the
namespace. </p>
<p class=MsoNormal>If multiple format definitions have the same 'name'
attribute, in the same namespace, then it is a Schema Definition Error.</p>
<p class=MsoNormal>Here is an example of a format definition:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ...&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:defineFormat name=&quot;baseFormat&quot; &gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format representation=&quot;text&quot; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
encoding=&quot;ascii&quot; /&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:defineFormat&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></span></p>
</div>
<p class=MsoNormal>A dfdl:defineFormat serves only to supply a named definition
for a format for reuse from other places. It does not cause any use of the
representation properties it contains to describe any actual data. </p>
<h3><a name="_Toc62570081"></a><a name="_Toc138694340"></a><a
name="_Toc177399044"></a><a name="_Toc175057331"></a><a name="_Toc199516258"></a><a
name="_Toc194983934"></a><a name="_Toc243112775"></a><a name="_Toc349042659"></a><a
name="_Toc322911562"></a><a name="_Toc322912101"></a><a name="_Toc329092951"></a><a
name="_Toc332701464"></a><a name="_Toc332701771"></a><a name="_Toc332711565"></a><a
name="_Toc332711873"></a><a name="_Toc332712175"></a><a name="_Toc332724091"></a><a
name="_Toc332724391"></a><a name="_Toc341102687"></a><a name="_Toc347241419"></a><a
name="_Toc347744612"></a><a name="_Toc348984395"></a><a name="_Toc348984700"></a><a
name="_Toc349037863"></a><a name="_Toc349038168"></a><a name="_Toc349042656"></a><a
name="_Toc351912647"></a><a name="_Toc351914669"></a><a name="_Toc351915103"></a><a
name="_Toc361231141"></a><a name="_Toc361231667"></a><a name="_Toc362444965"></a><a
name="_Toc363908887"></a><a name="_Toc364463310"></a><a name="_Toc366077908"></a><a
name="_Toc366078527"></a><a name="_Toc366079513"></a><a name="_Toc366080125"></a><a
name="_Toc366080734"></a><a name="_Toc366505074"></a><a name="_Toc366508443"></a><a
name="_Toc366512944"></a><a name="_Toc366574135"></a><a name="_Toc366577928"></a><a
name="_Toc366578522"></a><a name="_Toc366579114"></a><a name="_Toc366579705"></a><a
name="_Toc366580297"></a><a name="_Toc366580888"></a><a name="_Toc366581480"></a><a
name="_Toc199515629"></a><a name="_Toc199515817"></a><a name="_Toc199516256"></a><a
name="_Toc322911564"></a><a name="_Toc322912103"></a><a name="_Toc329092953"></a><a
name="_Toc332701466"></a><a name="_Toc332701773"></a><a name="_Toc332711567"></a><a
name="_Toc332711875"></a><a name="_Toc332712177"></a><a name="_Toc332724093"></a><a
name="_Toc332724393"></a><a name="_Toc341102689"></a><a name="_Toc347241421"></a><a
name="_Toc347744614"></a><a name="_Toc348984397"></a><a name="_Toc348984702"></a><a
name="_Toc349037865"></a><a name="_Toc349038170"></a><a name="_Toc349042658"></a><a
name="_Toc351912649"></a><a name="_Toc351914671"></a><a name="_Toc351915105"></a><a
name="_Toc361231143"></a><a name="_Toc361231669"></a><a name="_Toc362444967"></a><a
name="_Toc363908889"></a><a name="_Toc364463312"></a><a name="_Toc366077910"></a><a
name="_Toc366078529"></a><a name="_Toc366079515"></a><a name="_Toc366080127"></a><a
name="_Toc366080736"></a><a name="_Toc366505076"></a><a name="_Toc366508445"></a><a
name="_Toc366512946"></a><a name="_Toc366574137"></a><a name="_Toc366577930"></a><a
name="_Toc366578524"></a><a name="_Toc366579116"></a><a name="_Toc366579707"></a><a
name="_Toc366580299"></a><a name="_Toc366580890"></a><a name="_Toc366581482"></a><span
style='color:black;font-weight:normal'>7.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Using/Referencing a Named Format Definition<a name="_Toc177399045"></a><a
name="_Toc175057332"></a><a name="_Toc199516259"></a><a name="_Toc194983935"></a><a
name="_Toc243112776"></a><a name="_Ref251072473"></a><a name="_Ref251072479"></a><a
name="_Toc349042661"></a><a name="_Ref384983179"></a><a name="_Ref384983169"></a><a
name="_Toc322911566"></a><a name="_Toc322912105"></a><a name="_Toc329092955"></a><a
name="_Toc332701468"></a><a name="_Toc332701775"></a><a name="_Toc332711569"></a><a
name="_Toc332711877"></a><a name="_Toc332712179"></a><a name="_Toc332724095"></a><a
name="_Toc332724395"></a><a name="_Toc341102691"></a><a name="_Toc347241423"></a><a
name="_Toc347744616"></a><a name="_Toc348984399"></a><a name="_Toc348984704"></a><a
name="_Toc349037867"></a><a name="_Toc349038172"></a><a name="_Toc349042660"></a><a
name="_Toc349642090"></a><a name="_Toc351912651"></a><a name="_Toc351914673"></a><a
name="_Toc351915107"></a><a name="_Toc361231145"></a><a name="_Toc361231671"></a><a
name="_Toc362444969"></a><a name="_Toc363908891"></a><a name="_Toc364463314"></a><a
name="_Toc366077912"></a><a name="_Toc366078531"></a><a name="_Toc366079517"></a><a
name="_Toc366080129"></a><a name="_Toc366080738"></a><a name="_Toc366505078"></a><a
name="_Toc366508447"></a><a name="_Toc366512948"></a><a name="_Toc366574139"></a><a
name="_Toc366577932"></a><a name="_Toc366578526"></a><a name="_Toc366579118"></a><a
name="_Toc366579709"></a><a name="_Toc366580301"></a><a name="_Toc366580892"></a><a
name="_Toc366581484"></a><a name="_The_dfdl:assert_Annotation"></a>: The dfdl:ref
Property</h3>
<p class=nobreak>A named, reusable, dfdl:defineFormat definition is used by
referring to its name from a format annotation using the dfdl:ref property. For
example, here this annotation reuses the format named 'baseFormat':</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;dfdl:element
ref=&quot;baseFormat&quot; encoding=&quot;ebcdic-cp-us&quot; /&gt;</span></span></p>
</div>
<p class=MsoNormal>The behavior of this dfdl:element definition is as if all
representation properties defined by the named dfdl:defineFormat definition for
'baseFormat' were instead written directly on this dfdl:element annotation;
however, these are superseded by any representation properties that are defined
here such as the dfdl:encoding property in the example above.</p>
<h3><a name="_Toc349042657"></a><a name="_Toc243112774"></a><a
name="_Toc194983933"></a><a name="_Toc199516257"></a><a name="_Toc175057330"></a><a
name="_Toc177399043"></a><a name="_Ref161824338"></a><a name="_Toc138694339"></a><a
name="_Toc62570082"><span style='color:black;font-weight:normal'>7.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Inheritance
for dfdl:defineFormat</a></h3>
<p class=nobreak>A dfdl:defineFormat declaration can inherit from another named
format definition by use of the dfdl:ref property of the dfdl:format
annotation. This allows a single-inheritance hierarchy that reuses definitions.
When one definition extends another in this way, any property definitions
contained in its direct elements override those in any inherited definition. </p>
<p class=MsoNormal>An example format that inherits from a named format
definition is:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ...&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:defineFormat name=&quot;myConfig&quot; &gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format representation=&quot;binary&quot; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ref=&quot;baseFormat&quot;
/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:defineFormat&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></span></p>
</div>
<p class=MsoNormal>Conceptually, the dfdl:ref inheritance chains can be <em><span
style='font-family:"Arial",sans-serif'>flattened</span></em> and removed by
copying all inherited property bindings and then superseding those for which
there is a local binding. Throughout this document the discussion assumes
inheritance is fully flattened. That is, all dfdl:ref inheritance is first
removed by flattening before any other examination of properties occurs.</p>
<p class=MsoNormal>It is a Schema Definition Error if use of the dfdl:ref
property results in a circular path.</p>
<h2><a name="_Toc177399047"></a><a name="_Toc175057334"></a><a
name="_Toc199516261"></a><a name="_Toc194983937"></a><a name="_Toc226450743"></a><a
name="_Ref228949039"></a><a name="_Toc243112780"></a><a name="_Ref251074274"></a><a
name="_Ref251074286"></a><a name="_Toc349042667"></a><a name="_Ref362443507"></a><a
name="_Ref362443517"></a><a name="_Toc62570083">7.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The dfdl:defineEscapeScheme Defining Annotation Element</a></h2>
<p class=MsoNormal>One or more dfdl:defineEscapeScheme annotation elements can
appear within the annotation children of the xs:schema. The
dfdl:defineEscapeScheme elements may only appear as annotation children of the
xs:schema.</p>
<p class=MsoNormal>The order of their appearance does not matter, nor does their
position relative to other annotation or non-annotation children of the
xs:schema. </p>
<p class=MsoNormal>Each dfdl:defineEscapeScheme has a required name attribute
and a required dfdl:escapeScheme child element. </p>
<p class=MsoNormal>The construct creates a named escape scheme definition. The value
of the name attribute is of XML type NCName. The name becomes a member of the
schema's target namespace. These names must be unique within the namespace
among escape schemes. </p>
<p class=MsoNormal>If multiple dfdl:defineEscapeScheme definitions have the
same 'name' attribute, in the same namespace, then it is a Schema Definition
Error.</p>
<p class=MsoNormal>Each dfdl:defineEscapeScheme annotation element contains a
dfdl:escapeScheme annotation element as detailed below.</p>
<p class=MsoNormal>Here is an example of an escapeScheme definition:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:schema ...&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:defineEscapeScheme name=&quot;myEscapeScheme&quot;&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:escapeScheme escapeKind=&quot;escapeCharacter&quot;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
escapeCharacter='/'</span></span><span lang=EN-GB style='color:black'> <span
class=CodeCharacter>/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span lang=EN-GB style='color:black'>&lt;/dfdl:defineEscapeScheme&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;
&lt;/xs:annotation&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; ...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></span></p>
</div>
<p class=MsoNormal>A dfdl:defineEscapeScheme serves only to supply a named
definition for a dfdl:escapeScheme for reuse from other places. It does not
cause any use of the representation properties it contains to describe any
actual data. </p>
<h3><a name="_Toc243112781"></a><a name="_Toc349042669"></a><a
name="_Toc62570084"></a><a name="_Toc322911574"></a><a name="_Toc322912113"></a><a
name="_Toc329092963"></a><a name="_Toc332701476"></a><a name="_Toc332701783"></a><a
name="_Toc332711577"></a><a name="_Toc332711885"></a><a name="_Toc332712187"></a><a
name="_Toc332724103"></a><a name="_Toc332724403"></a><a name="_Toc341102699"></a><a
name="_Toc347241431"></a><a name="_Toc347744624"></a><a name="_Toc348984407"></a><a
name="_Toc348984712"></a><a name="_Toc349037875"></a><a name="_Toc349038180"></a><a
name="_Toc349042668"></a><a name="_Toc351912659"></a><a name="_Toc351914681"></a><a
name="_Toc351915115"></a><a name="_Toc361231154"></a><a name="_Toc361231680"></a><a
name="_Toc362444978"></a><a name="_Toc363908900"></a><a name="_Toc364463323"></a><a
name="_Toc366077921"></a><a name="_Toc366078540"></a><a name="_Toc366079526"></a><a
name="_Toc366080138"></a><a name="_Toc366080747"></a><a name="_Toc366505087"></a><a
name="_Toc366508456"></a><a name="_Toc366512957"></a><a name="_Toc366574148"></a><a
name="_Toc366577941"></a><a name="_Toc366578535"></a><a name="_Toc366579127"></a><a
name="_Toc366579718"></a><a name="_Toc366580310"></a><a name="_Toc366580901"></a><a
name="_Toc366581493"></a><span style='color:black;font-weight:normal'>7.3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Using/Referencing
a Named escapeScheme Definition</h3>
<p class=MsoNormal>A named, reusable, escape scheme is used by referring to its
name from a dfdl:escapeSchemeRef property on an element. For example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&lt;xs:element
name=&quot;foo&quot; type=&quot;xs:string&quot; &gt;<br>
&nbsp; &lt;xs:annotation&gt;&lt;xs:appinfo source=&quot;</span></span><a
href="http://www.ogf.org/dfdl/%E2%80%9D"><span class=CodeCharacter><span
lang=EN-GB style='color:black;text-decoration:none'>http://www.ogf.org/dfdl/&quot;</span></span></a><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;dfdl:element representation=&quot;text&quot;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
escapeSchemeRef=&quot;myEscapeScheme&quot;/&gt;</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='color:black'>&nbsp; &lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;<br>
&lt;/xs:element&gt;</span></span><span lang=EN-GB style='color:black'> </span></p>
</div>
<h2><a name="_Toc177399048"></a><a name="_Toc175057335"></a><a
name="_Toc199516262"></a><a name="_Toc194983938"></a><a name="_Ref220489733"></a><a
name="_Toc226450744"></a><a name="_Toc243112782"></a><a name="_Toc349042670"></a><a
name="_Toc62570085"></a><a name="_The_dfdl:escapeScheme_Annotation"></a>7.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
dfdl:escapeScheme Annotation Element</h2>
<p class=MsoNormal>The dfdl:escapeScheme annotation is used within a
dfdl:defineEscapeScheme annotation to group the properties of an escape scheme
and allows a common set of properties to be defined that can be reused. </p>
<p class=MsoNormal>An escape scheme defines the properties that describe the
text escaping rules in force when data such as text delimiters are present in
the data. There are two variants on such schemes, </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The use of a single escape character to cause the next character
to be interpreted literally. The escape character itself is escaped by the
escape-escape character.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The use of a pair of escape strings to cause the enclosed group
of characters to be interpreted literally. The ending escape string is escaped
by the escape-escape character.</p>
<p class=MsoNormal>On parsing, the escape scheme is applied after pad
characters are trimmed and on unparsing before pad characters are added.</p>
<p class=MsoNormal>DFDL does not perform any substitutions for ampersand
notations like &amp;lt;. </p>
<p class=MsoCaption><span style='font-weight:normal'>The properties of
dfdl:escapeScheme are defined in Section </span><span
style='font-weight:normal'>13.2.1</span><span style='font-weight:normal'><a
name="_Toc243112783"></a><a name="_Ref251074718"></a><a name="_Ref251074722"><span
class=MsoHyperlink> </span></a></span><a
href="#_The_dfdl:escapeScheme_Properties"><span style='font-weight:normal'>The
dfdl:escapeScheme Properties</span></a><span style='font-weight:normal'>.</span></p>
<h2><a name="_Ref38541924"></a><a name="_Toc62570086">7.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The dfdl:assert
Statement Annotation Element</a></h2>
<p class=MsoNormal>The dfdl:assert statement annotation element is used to
assert truths about a DFDL model that are used when parsing to ensure that the
data are well-formed. They are not used when unparsing.</p>
<p class=MsoNormal>There is a critical distinction between dfdl:assert checks
and XSD validation checks. </p>
<p class=MsoNormal>The dfdl:assert checks guide parsing and the creation of the
DFDL Infoset by causing Processing Errors on failure. Conversely XSD validation
inspects the values within the Infoset. Validation failures never affect
whether the parser is able to produce a DFDL Infoset. </p>
<p class=MsoNormal>The dfdl:assert checks are performed even when validation is
off.</p>
<p class=MsoNormal>Examples of dfdl:assert elements are below:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:assert message=&quot;Value is not
zero.&quot; test=&quot;{ ../x eq 0}&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:assert message=&quot;Precondition
violation.&quot; &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {../x
le 0 and ../y ne &quot;--&gt;&quot; and ../y ne &quot;&lt;!&#8212;&quot; }</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:assert&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:assert message=&quot;Postcondition
violation.&quot;&nbsp; testKind='expression'&gt;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span style='font-size:10.0pt;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span lang=EN-GB style='color:black'>{../x ne &quot;'&quot;}</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:assert&gt;</span></p>
</div>
<h3><a name="_Toc177399046"></a><a name="_Toc243112777"></a><a
name="_Toc349042664"></a><a name="_Ref363904061"></a><a name="_Ref363904067"></a><a
name="_Toc62570087"></a><a name="_Toc322911568"></a><a name="_Toc322912107"></a><a
name="_Toc329092957"></a><a name="_Toc332701470"></a><a name="_Toc332701777"></a><a
name="_Toc332711571"></a><a name="_Toc332711879"></a><a name="_Toc332712181"></a><a
name="_Toc332724097"></a><a name="_Toc332724397"></a><a name="_Toc341102693"></a><a
name="_Toc347241425"></a><a name="_Toc347744618"></a><a name="_Toc348984401"></a><a
name="_Toc348984706"></a><a name="_Toc349037869"></a><a name="_Toc349038174"></a><a
name="_Toc349042662"></a><a name="_Toc351912653"></a><a name="_Toc351914675"></a><a
name="_Toc351915109"></a><a name="_Toc361231147"></a><a name="_Toc361231673"></a><a
name="_Toc362444971"></a><a name="_Toc363908893"></a><a name="_Toc364463316"></a><a
name="_Toc366077914"></a><a name="_Toc366078533"></a><a name="_Toc366079519"></a><a
name="_Toc366080131"></a><a name="_Toc366080740"></a><a name="_Toc366505080"></a><a
name="_Toc366508449"></a><a name="_Toc366512950"></a><a name="_Toc366574141"></a><a
name="_Toc366577934"></a><a name="_Toc366578528"></a><a name="_Toc366579120"></a><a
name="_Toc366579711"></a><a name="_Toc366580303"></a><a name="_Toc366580894"></a><a
name="_Toc366581486"></a><a name="_Toc322911569"></a><a name="_Toc322912108"></a><a
name="_Toc329092958"></a><a name="_Toc332701471"></a><a name="_Toc332701778"></a><a
name="_Toc332711572"></a><a name="_Toc332711880"></a><a name="_Toc332712182"></a><a
name="_Toc332724098"></a><a name="_Toc332724398"></a><a name="_Toc341102694"></a><a
name="_Toc347241426"></a><a name="_Toc347744619"></a><a name="_Toc348984402"></a><a
name="_Toc348984707"></a><a name="_Toc349037870"></a><a name="_Toc349038175"></a><a
name="_Toc349042663"></a><a name="_Toc351912654"></a><a name="_Toc351914676"></a><a
name="_Toc351915110"></a><a name="_Toc361231148"></a><a name="_Toc361231674"></a><a
name="_Toc362444972"></a><a name="_Toc363908894"></a><a name="_Toc364463317"></a><a
name="_Toc366077915"></a><a name="_Toc366078534"></a><a name="_Toc366079520"></a><a
name="_Toc366080132"></a><a name="_Toc366080741"></a><a name="_Toc366505081"></a><a
name="_Toc366508450"></a><a name="_Toc366512951"></a><a name="_Toc366574142"></a><a
name="_Toc366577935"></a><a name="_Toc366578529"></a><a name="_Toc366579121"></a><a
name="_Toc366579712"></a><a name="_Toc366580304"></a><a name="_Toc366580895"></a><a
name="_Toc366581487"></a><a name="_Toc172733014"></a><span style='color:black;
font-weight:normal'>7.5.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Properties for dfdl:assert</h3>
<p class=nobreak>A dfdl:assert annotation contains a test expression or a test
pattern. The dfdl:assert is said to be successful if the test expression
evaluates to true or the test pattern returns a non-zero length match, and
unsuccessful if the test expression evaluates to false or the test pattern
returns a zero length match. An unsuccessful dfdl:assert causes either a Processing
Error or a Recoverable Error to be issued, as specified by the failureType
property of the dfdl:assert. </p>
<p class=MsoNormal>The testKind property specifies whether an expression or
pattern is used by the dfdl:assert. The expression or pattern can be expressed
as an attribute or as a value. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:assert&nbsp; test=&quot;{test
expression}&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:assert&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span style='font-size:10.0pt;color:black'>&nbsp; </span></span><span
lang=EN-GB style='color:black'>{test expression} </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:assert&gt;</span></p>
</div>
<p class=MsoNormal>It is a Schema Definition Error if a test expression or test
pattern is specified in more than one form.</p>
<p class=MsoNormal>It is a Schema Definition Error if both a test expression
and a test pattern are specified.</p>
<p class=MsoNormal>A dfdl:assert can appear as an annotation on these schema
components: </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>an xs:element declaration (local or global) </li>
<li class=MsoNormal>an xs:element reference </li>
<li class=MsoNormal>an xs:group reference </li>
<li class=MsoNormal>an xs:sequence</li>
<li class=MsoNormal>an xs:choice</li>
<li class=MsoNormal>an xs:simpleType definition (local or global)</li>
</ul>
<p class=MsoNormal><span style='color:black'>If the resolved set of statement
annotations for a schema component contains multiple dfdl:assert statements,
then those with testKind 'pattern' are executed before those with testKind
'expression' (the default). However, within each group the order of execution
among them is not specified. </span></p>
<p class=MsoNormal style='text-autospace:none'>If one of the resolved set of
asserts for a schema component is unsuccessful, and the failureType of the
assert is &#8216;processingError&#8217;, then no further asserts in the set are
executed.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F2F2F2;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>testKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum (optional)</p>
<p class=MsoNormal>Valid values are 'expression',&nbsp; 'pattern'</p>
<p class=MsoNormal>Default value is 'expression'</p>
<p class=MsoNormal>Specifies whether a DFDL expression or DFDL regular
expression pattern is used in the dfdl:assert.</p>
<p class=MsoNormal>Annotation: dfdl:assert</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>test</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
<p class=MsoNormal>Applies when testKind is 'expression'</p>
<p class=MsoNormal>A DFDL expression that evaluates to true or false. If the
expression evaluates to true then parsing continues. If the expression
evaluates to false then a Processing Error is raised.</p>
<p class=MsoNormal>Any element referred to by the expression must have
already been processed or must be a descendent of this element.</p>
<p class=MsoNormal>If a Processing Error occurs during the evaluation of the
test expression then the dfdl:assert also fails.</p>
<p class=MsoNormal>It is a Schema Definition Error if testKind is 'expression'
or not specified, and an expression is not supplied by either the value of
the dfdl:assert element or the value of the test attribute.</p>
<p class=MsoNormal style='text-autospace:none'>Annotation: dfdl:assert</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>testPattern</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Regular Expression</p>
<p class=MsoNormal>Applies when testKind is 'pattern'</p>
<p class=MsoNormal>A DFDL regular expression that is applied against the data
stream starting at the data position corresponding to the beginning of the
representation. Consequently, the framing (including any initiator) is
visible to the pattern.at the start of the component on which the dfdl:assert
is positioned.</p>
<p class=MsoNormal>If the pattern matching of the regular expression reads
data that cannot be decoded into characters of the current encoding, then the
behavior is controlled by the dfdl:encodingErrorPolicy property. See Section
11.2.1&nbsp;&nbsp; Property dfdl:encodingErrorPolicy for details.</p>
<p class=MsoNormal>If the length of the match is zero then the dfdl:assert
evaluates to false and a Processing Error is raised.</p>
<p class=MsoNormal>If the length of the match is non-zero then the
dfdl:assert evaluates to true.</p>
<p class=MsoNormal>If a Processing Error occurs during the evaluation of the
test regular expression then the dfdl:assert also fails.</p>
<p class=MsoNormal>It is a Schema Definition Error if testKind is 'pattern',
and a pattern is not supplied by either the value of the dfdl:assert element
or the value of the testPattern property.</p>
<p class=MsoNormal>It is a Schema Definition Error if there is no value for
the dfdl:encoding property in scope.</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:leadingSkip is
other than 0.</p>
<p class=MsoNormal>It is a Schema Definition Error if the dfdl:alignment is
not 1 or 'implicit'</p>
<p class=MsoNormal>Annotation: dfdl:assert</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>message</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String or DFDL Expression</p>
<p class=MsoNormal>Defines text to be used as a diagnostic code or for use in
an error message, when the assert is unsuccessful.</p>
<p class=MsoNormal>The DFDL Expression must return type xs:string. Any
element referred to by the message expression must have already been
processed or must be a descendent of this element. There is special treatment
for errors that occur while evaluating the message expression. See below for
details.</p>
<p class=MsoNormal>Annotation: dfdl:assert</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>failureType</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum (optional)</p>
<p class=MsoNormal>Valid values are 'processingError', 'recoverableError'.</p>
<p class=MsoNormal>Default value is 'processingError'.</p>
<p class=MsoNormal>Specifies the type of failure that occurs when the dfdl:assert
is unsuccessful. </p>
<p class=MsoNormal>When 'processingError', a Processing Error is raised.</p>
<p class=MsoNormal>When 'recoverableError', a Recoverable Error is raised.</p>
<p class=MsoNormal>If an error occurs while evaluating the test expression, a
Processing Error occurs, not a Recoverable Error.</p>
<p class=MsoNormal>Recoverable Errors do not cause backtracking like Processing
Errors.</p>
<p class=MsoNormal>Annotation: dfdl:assert</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 7 dfdl:assert properties</p>
<p class=MsoNormal style='text-autospace:none'>Example of a dfdl:assert with a
message expression:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:assert message=&quot;{
fn:concat('unknown case ', ../data1) }&quot;&gt;<br>
{&nbsp; if (...pred1...) then ...expr1... <br>
&nbsp;&nbsp; else if (...pred2...) then ...expr2...<br>
&nbsp;&nbsp; else fn:false()<br>
}</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:assert&gt;</span></p>
</div>
<p class=MsoNormal style='text-autospace:none'>The message specified by the
message property is issued only if the dfdl:assert is unsuccessful, that is,
the test expression&nbsp; evaluates to false or the test pattern returns a
zero-length match. If so, and the message property is an expression, the
message expression is evaluated at that time. </p>
<p class=MsoNormal style='text-autospace:none'>If a Processing Error or Schema
Definition Error occurs while evaluating the message expression, a Recoverable
Error is issued to record this error (containing implementation-dependent
content), then processing of the assert continues as if there were no problem
and in a manner consistent with the failureType property, but using an
implementation-dependent substitute message. </p>
<h2><a name="_Toc175057333"></a><a name="_Toc199516260"></a><a
name="_Toc194983936"></a><a name="_Toc243112778"></a><a name="_Ref251074181"></a><a
name="_Ref251074211"></a><a name="_Ref254711418"></a><a name="_Ref254711423"></a><a
name="_Toc349042665"></a><a name="_Toc62570088">7.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The dfdl:discriminator Statement Annotation Element</a></h2>
<p class=MsoNormal>DFDL discriminator statement annotations are used during
parsing to:</p>
<p class=MsoListParagraphCxSpFirst style='margin-left:38.5pt;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>resolve <i>points
of uncertainty</i> (choices, optional elements, array repetition) that cannot
be resolved by speculative parsing. See Section 9.1 <a href="#_Parser_Overview">Parser
Overview</a>.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:38.5pt;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>remove
ambiguity during speculative parsing</p>
<p class=MsoListParagraphCxSpLast style='margin-left:38.5pt;text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>improve
diagnostic behavior when a DFDL parser encounters malformed data.</p>
<p class=MsoNormal>Discriminators are not used during unparsing. </p>
<p class=MsoNormal style='page-break-after:avoid'>A DFDL discriminator may
contain a test expression that evaluates to true or false. The discriminator is
said to be successful if the test evaluates to true and unsuccessful (or fails)
if the test evaluates to false. A discriminator may alternatively contain a
test regular expression pattern and the discriminator is successful if the test
pattern matches with non-zero length and is unsuccessful (or fails) if there is
no match or a zero-length match.</p>
<p class=MsoNormal>A discriminator determines the existence or non-existence of
a schema component in the data stream. If the discriminator is successful, then
the component is said to be <i>known to exist</i>, and any subsequent errors do
not cause backtracking at the nearest point of uncertainty. Details of the
behavior of a DFDL parser and the role of discriminators are given in Section 9.3
Parsing Algorithm.</p>
<p class=MsoNormal>Discriminators can also be used to force a resolution
earlier during the parsing of a model group so that subsequent parsing errors
are treated as Processing Errors of a known schema component rather than a failure
to find that schema component. This may greatly improve the efficiency of DFDL
parsing in some implementations, as well as improving the diagnostic
information provided by a DFDL parser when given malformed data.</p>
<p class=MsoNormal>Examples of dfdl:discriminator annotation are below :</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:discriminator&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; { ../recType eq 0 }</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:discriminator&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:discriminator test=&quot;{ ../recType
eq 0}&quot; /&gt;</span></p>
</div>
<p class=MsoNormal>When the discriminator's expression evaluates to
&quot;false&quot;, then it causes a Processing Error, and the discriminator is
said to fail.</p>
<h3><a name="_Ref253479457"></a><a name="_Ref253479465"></a><a
name="_Toc349042666"></a><a name="_Toc62570089"><span style='color:black;
font-weight:normal'>7.6.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Properties for dfdl:discriminator</a></h3>
<p class=MsoNormal>Within a dfdl:discriminator, the testKind property specifies
whether an expression or pattern is used by the dfdl:discriminator. The
expression or pattern can be expressed as an attribute or as a value. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:discriminator test=&quot;{test
expression}&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:discriminator&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; { test expression }</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:discriminator&gt;</span></p>
</div>
<p class=MsoNormal>It is a Schema Definition Error if the test expression or
test pattern is specified in more than one form.</p>
<p class=MsoNormal>It is a Schema Definition Error if both a test expression
and a test pattern are specified.</p>
<p class=MsoNormal>A dfdl:discriminator can be an annotation on these schema
components:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>an xs:element declaration (local or global)</li>
<li class=MsoNormal>an xs:element reference </li>
<li class=MsoNormal>an xs:group reference </li>
<li class=MsoNormal>an xs:sequence </li>
<li class=MsoNormal>an xs:choice </li>
<li class=MsoNormal>an xs:simpleType definition (local or global)</li>
</ul>
<p class=MsoNormal><span style='color:black'>The resolved set of statement
annotations for a schema component can contain only a single dfdl:discriminator
or one or more dfdl:assert annotations, but not both. To clarify: dfdl:assert
annotations and dfdl:discriminator annotations are exclusive of each other. It
is a Schema Definition Error otherwise. </span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>testKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'expression', 'pattern'</p>
<p class=MsoNormal>Default value is 'expression'</p>
<p class=MsoNormal>Specifies whether a DFDL expression or DFDL regular
expression is used in the dfdl:discriminator .</p>
<p class=MsoNormal>Annotation: dfdl:discriminator</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>test</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
<p class=MsoNormal>Applies when testKind is 'expression'</p>
<p class=MsoNormal>A DFDL expression that evaluates to true or false. If the
expression evaluates to true then the discriminator succeeds, and parsing
continues. If the expression evaluates to false then the discriminator fails,
and a Processing Error is raised.<br>
If a Processing Error occurs during the evaluation of the test expression
then the discriminator also fails.</p>
<p class=MsoNormal>Any element referred to by the expression must have
already been processed or is a descendent of this element.</p>
<p class=MsoNormal>The expression must have been evaluated by the time this
element and its descendants have been processed or when a Processing Error
occurs when processing this element or its descendants.</p>
<p class=MsoNormal>It is a Schema Definition Error if testKind is
'expression' or not specified, and an expression is not supplied by either
the value of the dfdl:discriminator element or the value of the test
attribute.</p>
<p class=MsoNormal>Annotation: dfdl:discriminator</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>testPattern</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Regular Expression</p>
<p class=MsoNormal>Applies when testKind is 'pattern'</p>
<p class=MsoNormal>A DFDL regular expression that is applied against the data
stream starting at the data position corresponding to the beginning of the
representation. Consequently, the framing (including any initiator) is
visible to the pattern.at the start of the component on which the
dfdl:discriminator is positioned.</p>
<p class=MsoNormal>If the pattern matching of the regular expression reads
data that cannot be decoded into characters of the current encoding, then the
behavior is controlled by the dfdl:encodingErrorPolicy property. See Section
11.2.1&nbsp;&nbsp; Property dfdl:encodingErrorPolicy for details.</p>
<p class=MsoNormal>If the length of the match is zero then the
dfdl:discriminator evaluates to false and a Processing Error is raised.</p>
<p class=MsoNormal>If the length of the match is non-zero then the
dfdl:discriminator evaluates to true.</p>
<p class=MsoNormal>It is a Schema Definition Error if testKind is 'pattern',
and a pattern is not supplied by either the value of the dfdl:discriminator
element or the value of the testPattern property.</p>
<p class=MsoNormal>It is a Schema Definition Error if there is no value for
the dfdl:encoding property in scope.</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:leadingSkip is
other than 0.</p>
<p class=MsoNormal>It is a Schema Definition Error if the dfdl:alignment is
not 1 or 'implicit'</p>
<p class=MsoNormal style='text-autospace:none'>Annotation: dfdl:discriminator</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>message</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String or DFDL Expression</p>
<p class=MsoNormal>Defines text to be used as a diagnostic code or for use in
an error message, when the discriminator is unsuccessful.</p>
<p class=MsoNormal>The DFDL Expression must return type xs:string. Any
element referred to by the message expression must have already been
processed or must be a descendent of this element. There is special treatment
for errors that occur while evaluating the message expression. See below for
details.</p>
<p class=MsoNormal style='text-autospace:none'>Annotation: dfdl:discriminator</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 8 dfdl:discriminator properties</p>
<p class=MsoNormal style='text-autospace:none'>The message specified by the message
property is issued only if the discriminator is unsuccessful, that is, the test
expression&nbsp; evaluates to false or the test pattern returns a zero-length
match. If so, and the message property is an expression, the message expression
is evaluated at that time. </p>
<p class=MsoNormal style='text-autospace:none'>If a Processing Error or Schema
Definition Error occurs while evaluating the message expression, a Recoverable
Error is issued to record this error (containing implementation-dependent
content), then processing of the discriminator continues as if there were no
problem, but in the case of failure using an implementation-dependent
substitute message. </p>
<p class=MsoNormal>Examples of dfdl:discriminator annotations:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:choice&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element&nbsp;
name='branchSimple' &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:discriminator test='{. eq
&quot;a&quot;}'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element name='branchComplex'
&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:discriminator test='{./identifier eq &quot;b&quot;}' /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:complexType &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element
name='identifier'&nbsp; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span class=CodeCharacter><span style='font-size:10.0pt;color:black'>...</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element
name='branchNestedComplex' &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:discriminator test='{./Header/identifier eq &quot;c&quot;}'/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:complexType &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name='Header'&nbsp; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:complexType
&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name='identifier'&nbsp; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span style='font-size:10.0pt;color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</span></span><span lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:choice&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<h2><a name="_Toc177399050"></a><a name="_Toc175057337"></a><a
name="_Toc199516264"></a><a name="_Toc194983940"></a><a name="_Ref222567026"></a><a
name="_Toc243112791"></a><a name="_Toc349042672"></a><a name="_Toc62570090"></a><a
name="_Toc322911577"></a><a name="_Toc322912116"></a><a name="_Toc329092966"></a><a
name="_Toc332701479"></a><a name="_Toc332701786"></a><a name="_Toc332711580"></a><a
name="_Toc332711888"></a><a name="_Toc332712190"></a><a name="_Toc332724106"></a><a
name="_Toc332724406"></a><a name="_Toc341102702"></a><a name="_Toc347241434"></a><a
name="_Toc347744627"></a><a name="_Toc348984410"></a><a name="_Toc348984715"></a><a
name="_Toc349037878"></a><a name="_Toc349038183"></a><a name="_Toc349042671"></a><a
name="_Toc349642098"></a><a name="_Toc351912662"></a><a name="_Toc351914684"></a><a
name="_Toc351915118"></a><a name="_Toc361231157"></a><a name="_Toc361231683"></a><a
name="_Toc362444981"></a><a name="_Toc363908903"></a><a name="_Toc364463326"></a><a
name="_Toc366077924"></a><a name="_Toc366078543"></a><a name="_Toc366079529"></a><a
name="_Toc366080141"></a><a name="_Toc366080750"></a><a name="_Toc366505090"></a><a
name="_Toc366508459"></a><a name="_Toc366512960"></a><a name="_Toc366574151"></a><a
name="_Toc366577944"></a><a name="_Toc366578538"></a><a name="_Toc366579130"></a><a
name="_Toc366579721"></a><a name="_Toc366580313"></a><a name="_Toc366580904"></a><a
name="_Toc366581496"></a>7.7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Variable Annotations</h2>
<p class=MsoNormal><i>DFDL Variables</i> provide a means for communication and
parameterization within a DFDL schema. Use of variables increases the
modularity of a schema by enabling some parts of a schema to be parameterized
so that they are reusable.</p>
<p class=MsoNormal>There are 3 DFDL annotation elements associated with DFDL
variables:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:defineVariable - defines a variable and creates a global
instance of it.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:newVariableInstance - creates a scoped instance of a
variable.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:setVariable - assigns the value of a variable instance,
which can be global or scoped.</p>
<p class=MsoNormal>Variables are defined at the top-level of a schema and have
a specific simple type. </p>
<p class=MsoNormal>A distinction is made between the variable as defined, and
an <i>instance</i> of the variable where a value can be stored. </p>
<p class=MsoNormal>The dfdl:defineVariable annotation defines the name, type,
and optionally default value for the variable. It is like defining a class of
variables, instances of which actually store values. The dfdl:defineVariable
also introduces a single unique global instance of the variable. Additional
instances may be allocated in a stack-like fashion using
dfdl:newVariableInstance which causes new instances to come into existence upon
entry to the scope of a model group, and these instances go away on exit from
the same. </p>
<p class=MsoNormal>DFDL variables only <i>vary</i> in the sense that different
instances of the same variable can have different values. A single instance of
a variable only ever takes on a single value. Each variable instance is a <i>single-assignment</i>
location for a value<a href="#_ftn9" name="_ftnref9" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[9]</span></span></span></a>.
Once a variable instance's value has been read, it can never be assigned again.
If it has not yet been assigned, and its default value has not been read, then
a variable instance can be assigned <i>once</i> using dfdl:setVariable.</p>
<p class=MsoNormal>Variables are used by referencing them in DFDL expressions
by prefixing their QNames with '$'. </p>
<p class=MsoNormal>More information about variables and how they work
operationally is in Section <span
class=MsoHyperlink>18.2</span> <span
class=InternetLink>Variables</span>. The remaining sub-sections of this section
focus only on the variable-related DFDL annotations and their syntax. </p>
<h3><a name="_Toc62570091"><span style='color:black;font-weight:normal'>7.7.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>dfdl:defineVariable
Annotation Element</a></h3>
<p class=MsoNormal>A global variable is introduced using dfdl:defineVariable:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:defineVariable</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = <i>NCName</i></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type? = <i>QName</i></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultValue? = </span><span
lang=EN-GB style='color:black'>logical value or dfdl expression </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; external?</span><span
lang=EN-GB style='color:black'> = 'false' | 'true' </span><span
style='color:black'>&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;!-- Contains:<i> logical value or
dfdl expression</i> (default value) --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:defineVariable&gt;</span></p>
</div>
<p class=MsoNormal>The name of a newly defined variable is placed into the
target namespace of the schema containing the annotation. Variable names are
distinct from format and escape scheme names and so cannot conflict with
them.&nbsp; A variable can have any type from the DFDL subset of XML schema
simple types. If no type is specified, the type is xs:string.</p>
<p class=MsoNormal>The defaultValue is optional. This is a literal value or an
expression which evaluates to a constant, and it can be specified as an
attribute or as the element value. If specified, the default value must match
the type of the variable (otherwise it is a Schema Definition Error). If the
defaultValue is given by an expression that expression must not contain any
relative path (otherwise it is a Schema Definition Error).</p>
<p class=MsoNormal>Note that the syntax supports both a defaultValue attribute
and the default value being specified by the element value. Only one or the
other may be present (otherwise it is a Schema Definition Error). To set the
default value to &quot;&quot; (empty string), the defaultValue attribute syntax
must be used, or the expression { &quot;&quot; } must be used as the element
value. </p>
<p class=MsoNormal>Note also that the value of the name attribute is an NCName
(non-colon name - that is, may not have a prefix). The name of a variable is
defined in the target namespace of the schema containing the definition. If
multiple dfdl:defineVariable definitions have the same 'name' attribute in the
same namespace then it is a Schema Definition Error.</p>
<p class=MsoNormal>A default <em><span style='font-family:"Arial",sans-serif'>instance</span></em>
of the variable is automatically created (with global scope) at the start of a
DFDL parse or unparse. Additional instances of a variable can be created with
the scope of other schema components. See Section <span
class=MsoHyperlink>7.7.2</span><span class=MsoHyperlink> </span><span class=InternetLink>The dfdl:newVariableInstance Statement Annotation Element</span>.</p>
<p class=MsoNormal>The external property is optional. If not specified it takes
the default value 'false'. If true, the value may be provided by the DFDL
processor and this external value is used as the global default value
overriding any defaultValue specified on the dfdl:defineVariable annotation.
The mechanism by which the processor provides this value is<i>
implementation-defined</i>.</p>
<p class=MsoNormal>A variable instance gets its value either from the default
value provided in the dfdl:defineVariable definition, from an external binding
of the variable if the definition has the external attribute, from a
dfdl:setVariable statement (See Section 7.7.3, <a
href="#_The_dfdl:setVariable_Statement"><span
class=InternetLink>The dfdl:setVariable Statement Annotation Element</span></a>),
or from the default value of a dfdl:newVariableInstance statement (See Section <span class=MsoHyperlink>7.7.2</span><span class=MsoHyperlink> </span><span class=InternetLink>The dfdl:newVariableInstance Statement Annotation Element</span>.)</p>
<p class=MsoNormal>There is no required order between dfdl:defineVariable and
other schema level defining annotations or a dfdl:format annotation that may
refer to the variable. </p>
<p class=MsoNormal>A defaultValue expression MUST be evaluated before
processing of the data stream begins. </p>
<p class=MsoNormal>A defaultValue expression can refer to other variables but
not to the Infoset (so no path locations).When a defaultValue expression
references other variables, the referenced variables each must either have a
defaultValue or be external. It is a Schema Definition Error otherwise.</p>
<p class=MsoNormal>If a defaultValue expression references another variable
then the single-assignment nature of variables prevents the referenced
variable's value from ever changing, that is, it is considered to be a read of
the variable's value, and once read, a variable's value cannot be changed.</p>
<p class=MsoNormal>If a defaultValue expression references another variable and
this causes a circular reference, it is a Schema Definition Error.</p>
<p class=MsoNormal>It is a Schema Definition Error if the type of the variable
is a user-defined simple type restriction.</p>
<h4><a name="_Toc243112792"></a><a name="_Toc349042674"></a><a
name="_Toc322911579"></a><a name="_Toc322912118"></a><a name="_Toc329092968"></a><a
name="_Toc332701481"></a><a name="_Toc332701788"></a><a name="_Toc332711582"></a><a
name="_Toc332711890"></a><a name="_Toc332712192"></a><a name="_Toc332724108"></a><a
name="_Toc332724408"></a><a name="_Toc341102704"></a><a name="_Toc347241436"></a><a
name="_Toc347744629"></a><a name="_Toc348984412"></a><a name="_Toc348984717"></a><a
name="_Toc349037880"></a><a name="_Toc349038185"></a><a name="_Toc349042673"></a><a
name="_Toc351912664"></a><a name="_Toc351914686"></a><a name="_Toc351915120"></a><a
name="_Toc361231159"></a><a name="_Toc361231685"></a><a name="_Toc362444983"></a><a
name="_Toc363908905"></a><a name="_Toc364463328"></a><a name="_Toc366077926"></a><a
name="_Toc366078545"></a><a name="_Toc366079531"></a><a name="_Toc366080143"></a><a
name="_Toc366080752"></a><a name="_Toc366505092"></a><a name="_Toc366508461"></a><a
name="_Toc366512962"></a><a name="_Toc366574153"></a><a name="_Toc366577946"></a><a
name="_Toc366578540"></a><a name="_Toc366579132"></a><a name="_Toc366579723"></a><a
name="_Toc366580315"></a><a name="_Toc366580906"></a><a name="_Toc366581498"></a><span
style='color:black;font-weight:normal'>7.7.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Examples</h4>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;</span><span lang=EN-GB style='color:black'>&lt;dfdl:defineVariable
name=&quot;EDIFACT_DS&quot; type=&quot;xs:string&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;defaultValue=&quot;,&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:defineVariable
name=&quot;codepage&quot; type=&quot;xs:string&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
external=&quot;true&quot;&gt;utf-8&lt;/dfdl:defineVariable&gt;</span></p>
</div>
<h4><a name="_Toc349042676"></a><a name="_Ref393373377"></a><a
name="_Ref393373408"></a><a name="_Toc322911581"></a><a name="_Toc322912120"></a><a
name="_Toc329092970"></a><a name="_Toc332701483"></a><a name="_Toc332701790"></a><a
name="_Toc332711584"></a><a name="_Toc332711892"></a><a name="_Toc332712194"></a><a
name="_Toc332724110"></a><a name="_Toc332724410"></a><a name="_Toc341102706"></a><a
name="_Toc347241438"></a><a name="_Toc347744631"></a><a name="_Toc348984414"></a><a
name="_Toc348984719"></a><a name="_Toc349037882"></a><a name="_Toc349038187"></a><a
name="_Toc349042675"></a><a name="_Toc351912666"></a><a name="_Toc351914688"></a><a
name="_Toc351915122"></a><a name="_Toc361231161"></a><a name="_Toc361231687"></a><a
name="_Toc362444985"></a><a name="_Toc363908907"></a><a name="_Toc364463330"></a><a
name="_Toc366077928"></a><a name="_Toc366078547"></a><a name="_Toc366079533"></a><a
name="_Toc366080145"></a><a name="_Toc366080754"></a><a name="_Toc366505094"></a><a
name="_Toc366508463"></a><a name="_Toc366512964"></a><a name="_Toc366574155"></a><a
name="_Toc366577948"></a><a name="_Toc366578542"></a><a name="_Toc366579134"></a><a
name="_Toc366579725"></a><a name="_Toc366580317"></a><a name="_Toc366580908"></a><a
name="_Toc366581500"></a><span style='color:black;font-weight:normal'>7.7.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Predefined
Variables</h4>
<p class=MsoNormal>The following variables are predefined, and their names are
in the DFDL namespace (http://www.ogf.org/dfdl/dfdl-1.0/)</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Type</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Default value</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>External</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:encoding</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:string</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'UTF-8'</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:byteOrder</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:string</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'bigEndian'</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:binaryFloatRep </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:string</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'ieee'</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:outputNewLine</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:string</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'%LF;'</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 9 Pre-defined variables</p>
<p class=MsoNormal>These variables are expected to be commonly set externally
so are predefined for convenience. Below the DFDL encoding property is being
set to the value of a DFDL expression (between &quot;{&quot; and
&quot;}&quot;), and that expression just returns the value of the dfdl:encoding
variable which is being referenced as $dfdl:encoding below. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;title&quot; type=&quot;xs:string&quot;&gt;<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:annotation&gt;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:element<b>
encoding=&quot;{$dfdl:encoding}&quot;</b> /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &lt;/xs:appinfo&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;</span></p>
</div>
<h3><a name="_Toc177399051"></a><a name="_Toc175057338"></a><a
name="_Toc199516265"></a><a name="_Toc194983941"></a><a name="_Ref37945094"></a><a
name="_Toc243112793"></a><a name="_Ref255466447"></a><a name="_Toc349042677"></a><a
name="_Toc62570092"><span style='color:black;font-weight:normal'>7.7.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>The
dfdl:newVariableInstance Statement Annotation Element</a></h3>
<p class=MsoNormal>Scoped instances of defined variables are created using
dfdl:newVariableInstance:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:newVariableInstance</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ref = <i>QName</i></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultValue? = </span><span
lang=EN-GB style='color:black'>logical value or dfdl expression &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp; &lt;!-- Contains: </span><span lang=EN-GB
style='color:black'>logical value or dfdl expression</span><span
style='color:black'> (value) --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:newVariableInstance&gt;</span></p>
</div>
<p class=MsoNormal>All instances share the same name, type, and default value
if provided, but they have distinct storage for separate values using a
stack-like mechanism where a new instance is introduced for a model group.
These new instances are associated with a schema component using dfdl:newVariableInstance.
These instances have the lifetime of the schema component. While that schema
component is being parsed/unparsed, the new variable instance is used and other
scoped variable instances for the same variable are not available. </p>
<p class=MsoNormal>Since an initial global instance is created when the
variable is defined, the use of dfdl:newVariableInstance is optional.</p>
<p class=MsoNormal>The dfdl:newVariableInstance annotation can be used on a
group reference, sequence or choice only. It is a Schema Definition Error
otherwise.</p>
<p class=MsoNormal>The lifetime of the instance of a variable is the <em><span
style='font-family:"Arial",sans-serif'>dynamic scope</span></em> of the schema
component and its content model and so is inherited by any contained constructs
or construct references. </p>
<p class=MsoNormal>The ref property is a QName. That is, it may be qualified
with a namespace prefix.</p>
<p class=MsoNormal>An optional defaultValue <em><span style='font-family:"Arial",sans-serif'>for
the instance</span></em> may be specified. It can be specified as an attribute
or as the element value. The expression must not contain forward references to
elements which have not yet been processed nor to the current component. If
specified the default value must match the type of the variable as specified by
dfdl:defineVariable. If the instance is not assigned a new default value then
it inherits the default value specified by dfdl:defineVariable or externally
provided by the DFDL processor. If a default value is not specified (and has
not been specified by dfdl:defineVariable) then the value of this instance is
undefined until explicitly set (using dfdl:setVariable).</p>
<p class=MsoNormal>If a default value is specified this initial value of the
instance is created when the instance is created. The value overrides any (global)
default value which was specified by dfdl:defineVariable or which was provided
externally to the DFDL processor. A variable instance with a valid value
(specified or default) can be referenced anywhere within the scope of the
element on which the instance was created. </p>
<p class=MsoNormal>Note that the syntax supports both a defaultValue attribute
and the default value being specified by the annotation element value. Only one
or the other may be present. (Schema definition error otherwise.)</p>
<p class=MsoNormal>To set the default value to &quot;&quot; (empty string), the
defaultValue attribute syntax must be used, or the expression { &quot;&quot; }
must be used as the element value. </p>
<p class=MsoNormal style='text-autospace:none'>The resolved set of annotations
for a component may contain multiple dfdl:newVariableInstance statements. They
must all be for unique variables; it is a Schema Definition Error otherwise.
The order of execution is specified in Section <span
class=MsoHyperlink>9.5</span> Evaluation
Order for Statement Annotations.</p>
<p class=MsoNormal>There is no short form syntax for creating variable
instances.</p>
<h4><a name="_Toc243112794"></a><a name="_Toc349042679"></a><a
name="_Toc322911584"></a><a name="_Toc322912123"></a><a name="_Toc329092973"></a><a
name="_Toc332701486"></a><a name="_Toc332701793"></a><a name="_Toc332711587"></a><a
name="_Toc332711895"></a><a name="_Toc332712197"></a><a name="_Toc332724113"></a><a
name="_Toc332724413"></a><a name="_Toc341102709"></a><a name="_Toc347241441"></a><a
name="_Toc347744634"></a><a name="_Toc348984417"></a><a name="_Toc348984722"></a><a
name="_Toc349037885"></a><a name="_Toc349038190"></a><a name="_Toc349042678"></a><a
name="_Toc351912669"></a><a name="_Toc351914691"></a><a name="_Toc351915125"></a><a
name="_Toc361231164"></a><a name="_Toc361231690"></a><a name="_Toc362444988"></a><a
name="_Toc363908910"></a><a name="_Toc364463333"></a><a name="_Toc366077931"></a><a
name="_Toc366078550"></a><a name="_Toc366079536"></a><a name="_Toc366080148"></a><a
name="_Toc366080757"></a><a name="_Toc366505097"></a><a name="_Toc366508466"></a><a
name="_Toc366512967"></a><a name="_Toc366574158"></a><a name="_Toc366577951"></a><a
name="_Toc366578545"></a><a name="_Toc366579137"></a><a name="_Toc366579728"></a><a
name="_Toc366580320"></a><a name="_Toc366580911"></a><a name="_Toc366581503"></a><span
style='color:black;font-weight:normal'>7.7.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Examples </h4>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:newVariableInstance
ref=&quot;EDIFACT_DS&quot; defaultValue=&quot;,&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:newVariableInstance ref=&quot;lengthUnitBits&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; { if (../hdr/fmtCode eq
&quot;bits&quot;) then 1 else 8 }&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:newVariableInstance&gt;</span></p>
</div>
<h3><a name="_Toc243112795"></a><a name="_Ref251074807"></a><a
name="_Toc349042681"></a><a name="_Ref52284287"></a><a name="_Ref52284301"></a><a
name="_Ref53072549"></a><a name="_Toc62570093"></a><a name="_Toc322911586"></a><a
name="_Toc322912125"></a><a name="_Toc329092975"></a><a name="_Toc332701488"></a><a
name="_Toc332701795"></a><a name="_Toc332711589"></a><a name="_Toc332711897"></a><a
name="_Toc332712199"></a><a name="_Toc332724115"></a><a name="_Toc332724415"></a><a
name="_Toc341102711"></a><a name="_Toc347241443"></a><a name="_Toc347744636"></a><a
name="_Toc348984419"></a><a name="_Toc348984724"></a><a name="_Toc349037887"></a><a
name="_Toc349038192"></a><a name="_Toc349042680"></a><a name="_Toc349642104"></a><a
name="_Toc351912671"></a><a name="_Toc351914693"></a><a name="_Toc351915127"></a><a
name="_Toc361231166"></a><a name="_Toc361231692"></a><a name="_Toc362444990"></a><a
name="_Toc363908912"></a><a name="_Toc364463335"></a><a name="_Toc366077933"></a><a
name="_Toc366078552"></a><a name="_Toc366079538"></a><a name="_Toc366080150"></a><a
name="_Toc366080759"></a><a name="_Toc366505099"></a><a name="_Toc366508468"></a><a
name="_Toc366512969"></a><a name="_Toc366574160"></a><a name="_Toc366577953"></a><a
name="_Toc366578547"></a><a name="_Toc366579139"></a><a name="_Toc366579730"></a><a
name="_Toc366580322"></a><a name="_Toc366580913"></a><a name="_Toc366581505"></a><a
name="_The_dfdl:setVariable_Statement"></a><span style='color:black;font-weight:
normal'>7.7.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The dfdl:setVariable Statement Annotation Element</h3>
<p class=MsoNormal>Variable instances get their values either by default, by
external definition, or by subsequent assignment using the dfdl:setVariable
statement annotation.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;dfdl:setVariable</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ref = <i>QName</i></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value? = </span><span
lang=EN-GB style='color:black'>logical value or dfdl expression </span><span
style='color:black'>&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp; &lt;!-- Contains: </span><span lang=EN-GB
style='color:black'>logical value or dfdl expression</span><span
style='color:black'> (value) --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/dfdl:setVariable&gt;</span></p>
</div>
<p class=MsoNormal>The dfdl:setVariable annotation can be used on a simple type,
group reference, sequence or choice. It may be used on an element or element
reference only if the element is of simple type. It is a Schema Definition
Error if dfdl:setVariable appears on an element of complex type, or an element
reference to an element of complex type.</p>
<p class=MsoNormal>The ref property is a QName. That is, it may be qualified
with a namespace prefix.</p>
<p class=MsoNormal>The syntax supports both a value attribute and the 'value'
being specified by the element value. Only one or the other may be present
(otherwise it is a Schema Definition Error). To set the value to &quot;&quot;
(empty string), the value attribute syntax must be used, or the expression {
&quot;&quot; } must be used as the element value. </p>
<p class=MsoNormal>The value must match the type of the variable as specified
by dfdl:defineVariable.</p>
<p class=MsoNormal>A dfdl:setVariable value expression may refer to the value
of this element using a relative path value &quot;.&quot;. Use of relative path
expressions is recommended wherever possible as this allows the behavior of the
parser to be more effectively scoped. However, this practice is not enforced
and there may be situations in which use of an absolute path is in fact
necessary. </p>
<p class=MsoNormal>The expression must not contain forward references to
elements which have not yet been processed.</p>
<p class=MsoNormal>In normal processing, the value of an instance can only be
set once using dfdl:setVariable.&nbsp; Attempting to set the value of the
variable instance for a second time is a Schema Definition Error. In addition,
if a reference to the variable's value has already occurred and returned a
default or an externally supplied value, then no assignment (even a first one)
can occur. An exception to this behavior occurs whenever the DFDL processor
backtracks because it is processing multiple branches of a choice or as a
result of speculative parsing. In this case the variable state is also rewound.
See Section 9 <a href="#_DFDL_Processing_Introduction">DFDL Processing
Introduction</a>.</p>
<p class=MsoNormal>A dfdl:setVariable overrides any default value specified on
either dfdl:defineVariable or dfdl:newVariableInstance, or externally.</p>
<p class=MsoNormal style='text-autospace:none'>The resolved set of annotations
for an annotation point may contain multiple dfdl:setVariable statements. They
must all be for unique variables (different name and/or namespace) and it is a
Schema Definition Error otherwise. The order of execution is specified in
Section <span class=MsoHyperlink>9.5</span> Evaluation
Order for Statement Annotations.</p>
<p class=MsoNormal>There is no short form syntax for variable assignment.</p>
<h4><a name="_Toc243112796"></a><a name="_Toc349042683"></a><a
name="_Toc322911588"></a><a name="_Toc322912127"></a><a name="_Toc329092977"></a><a
name="_Toc332701490"></a><a name="_Toc332701797"></a><a name="_Toc332711591"></a><a
name="_Toc332711899"></a><a name="_Toc332712201"></a><a name="_Toc332724117"></a><a
name="_Toc332724417"></a><a name="_Toc341102713"></a><a name="_Toc347241445"></a><a
name="_Toc347744638"></a><a name="_Toc348984421"></a><a name="_Toc348984726"></a><a
name="_Toc349037889"></a><a name="_Toc349038194"></a><a name="_Toc349042682"></a><a
name="_Toc351912673"></a><a name="_Toc351914695"></a><a name="_Toc351915129"></a><a
name="_Toc361231168"></a><a name="_Toc361231694"></a><a name="_Toc362444992"></a><a
name="_Toc363908914"></a><a name="_Toc364463337"></a><a name="_Toc366077935"></a><a
name="_Toc366078554"></a><a name="_Toc366079540"></a><a name="_Toc366080152"></a><a
name="_Toc366080761"></a><a name="_Toc366505101"></a><a name="_Toc366508470"></a><a
name="_Toc366512971"></a><a name="_Toc366574162"></a><a name="_Toc366577955"></a><a
name="_Toc366578549"></a><a name="_Toc366579141"></a><a name="_Toc366579732"></a><a
name="_Toc366580324"></a><a name="_Toc366580915"></a><a name="_Toc366581507"></a><span
style='color:black;font-weight:normal'>7.7.3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Examples </h4>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:element name=&quot;ds&quot;
type=&quot;xs:string&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;xs:annotation&gt;&lt;
xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:setVariable
ref=&quot;EDI:EDIFACT_DS&quot; value=&quot;{.}&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:setVariable
ref=&quot;delimiter&quot;&gt; {.} &lt;/dfdl:setVariable&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;
&lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:element&gt;</span></p>
</div>
<p class=MsoNormal>In the above example, the element named &quot;ds&quot;
contains the string to be used as the EDI:EDIFACT_DS delimiter at other places
in the data, so the above defines the value of the EDI:EDIFACT_DS variable to
take on the value of this element. The variable delimiter (in the default
namespace) is also being assigned the same value using other syntax. </p>
<h1><a name="_Toc138694342"></a><a name="_Ref114888535"></a><a
name="_Toc138694358"></a><a name="_Toc124764818"></a><a name="_Toc177399064"></a><a
name="_Toc175057351"></a><a name="_Toc194983954"></a><a name="_Toc199516289"></a><a
name="_Toc243112809"></a><a name="_Ref251144384"></a><a name="_Ref251144393"></a><a
name="_Ref39163832"></a><a name="_Ref39163838"></a><a name="_Toc62570094"></a><a
name="_Toc137029593"></a><a name="_Toc137029594"></a><a name="_Toc137029598"></a><a
name="_Toc229802957"></a><a name="_Toc229804926"></a><a name="_Toc229813755"></a><a
name="_Toc229813949"></a><a name="_Toc229802960"></a><a name="_Toc229804929"></a><a
name="_Toc229813758"></a><a name="_Toc229813952"></a><a name="_Toc229802961"></a><a
name="_Toc229804930"></a><a name="_Toc229813759"></a><a name="_Toc229813953"></a><a
name="_Toc229802962"></a><a name="_Toc229804931"></a><a name="_Toc229813760"></a><a
name="_Toc229813954"></a><a name="_Toc229802963"></a><a name="_Toc229804932"></a><a
name="_Toc229813761"></a><a name="_Toc229813955"></a><a name="_Toc322911590"></a><a
name="_Toc322912129"></a><a name="_Toc329092979"></a><a name="_Toc332701492"></a><a
name="_Toc332701799"></a><a name="_Toc332711593"></a><a name="_Toc332711901"></a><a
name="_Toc332712203"></a><a name="_Toc332724119"></a><a name="_Toc332724419"></a><a
name="_Toc341102715"></a><a name="_Toc347241447"></a><a name="_Toc347744640"></a><a
name="_Toc348984423"></a><a name="_Toc348984728"></a><a name="_Toc349037891"></a><a
name="_Toc349038196"></a><a name="_Toc349042684"></a><a name="_Toc349642107"></a><a
name="_Toc351912675"></a><a name="_Toc351914697"></a><a name="_Toc351915131"></a><a
name="_Toc361231170"></a><a name="_Toc361231696"></a><a name="_Toc362444994"></a><a
name="_Toc363908916"></a><a name="_Toc364463339"></a><a name="_Toc366077937"></a><a
name="_Toc366078556"></a><a name="_Toc366079542"></a><a name="_Toc366080154"></a><a
name="_Toc366080763"></a><a name="_Toc366505103"></a><a name="_Toc366508472"></a><a
name="_Toc366512973"></a><a name="_Toc366574164"></a><a name="_Toc366577957"></a><a
name="_Toc366578551"></a><a name="_Toc366579143"></a><a name="_Toc366579734"></a><a
name="_Toc366580326"></a><a name="_Toc366580917"></a><a name="_Toc366581509"></a><a
name="_Toc322911591"></a><a name="_Toc322912130"></a><a name="_Toc329092980"></a><a
name="_Toc332701493"></a><a name="_Toc332701800"></a><a name="_Toc332711594"></a><a
name="_Toc332711902"></a><a name="_Toc332712204"></a><a name="_Toc332724120"></a><a
name="_Toc332724420"></a><a name="_Toc341102716"></a><a name="_Toc347241448"></a><a
name="_Toc347744641"></a><a name="_Toc348984424"></a><a name="_Toc348984729"></a><a
name="_Toc349037892"></a><a name="_Toc349038197"></a><a name="_Toc349042685"></a><a
name="_Toc349642108"></a><a name="_Toc351912676"></a><a name="_Toc351914698"></a><a
name="_Toc351915132"></a><a name="_Toc361231171"></a><a name="_Toc361231697"></a><a
name="_Toc362444995"></a><a name="_Toc363908917"></a><a name="_Toc364463340"></a><a
name="_Toc366077938"></a><a name="_Toc366078557"></a><a name="_Toc366079543"></a><a
name="_Toc366080155"></a><a name="_Toc366080764"></a><a name="_Toc366505104"></a><a
name="_Toc366508473"></a><a name="_Toc366512974"></a><a name="_Toc366574165"></a><a
name="_Toc366577958"></a><a name="_Toc366578552"></a><a name="_Toc366579144"></a><a
name="_Toc366579735"></a><a name="_Toc366580327"></a><a name="_Toc366580918"></a><a
name="_Toc366581510"></a><a name="_Property_Scoping_and"></a>8<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Property
Scoping<a name="_Toc349042686"> and DFDL Schema Checking</a></h1>
<h2><a name="_Toc62570095">8.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Property Scoping</a></h2>
<h3><a name="_Toc62570096"><span style='color:black;font-weight:normal'>8.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Property
Scoping Rules</a></h3>
<p class=MsoNormal>This section describes the rules that govern the scope over
which DFDL representation properties apply</p>
<p class=MsoNormal>The scope of the representational properties on each of the
component format annotations is given in <b>Table
10 DFDL annotation scoping</b></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Annotation Po<span style='color:black'>int</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Property Scope</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Schema declaration</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:format representation properties apply <em><span
style='font-family:"Arial",sans-serif'>lexically</span></em> as default
properties over all components in the schema </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Element declaration</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:element properties apply locally </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Element reference</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:element properties apply locally</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Simple type definition</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:simpleType properties apply locally</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Sequence </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:sequence properties apply locally</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Choice </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:choice properties apply locally</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Group reference</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:group properties apply locally</p>
</td>
</tr>
</table>
<p class=MsoNormal><a name="_Ref243814390"><b>Table </b></a><b>10</b><b>
DFDL annotation scoping</b></p>
<p class=MsoNormal>Note: This table lists DFDL annotations on schema
components. DFDL annotations can also be placed on other DFDL annotations, such
as a dfdl:format within a dfdl:defineFormat, to provide a named reusable format
definition. In this case the annotation applies only where the named format is
referenced.</p>
<p class=MsoNormal>DFDL representation properties explicitly defined on
annotations, other than a dfdl:format on an xs:schema declaration, apply
locally to that component only. The explicitly defined properties are the
combination of any defined locally on the annotation and any defined on the
dfdl:defineFormat annotation referenced by a local dfdl:ref property. When a
property is defined both locally and on the dfdl:defineFormat, the locally
defined property takes precedence. </p>
<p class=MsoNormal>The dfdl:format annotation on the top level xs:schema
declaration provides defaults for the DFDL representation properties at every
DFDL-annotatable component contained in the schema document. They do not apply
to any components in any included or imported schema document (these may have
their own defaults).</p>
<h3><a name="_Toc124764819"></a><a name="_Toc177399072"></a><a
name="_Toc175057359"></a><a name="_Toc199516298"></a><a name="_Toc194983962"></a><a
name="_Ref215569784"></a><a name="_Ref215569794"></a><a name="_Ref215569885"></a><a
name="_Ref247448493"></a><a name="_Toc349042688"></a><a name="_Toc62570097"></a><a
name="_Toc322911593"></a><a name="_Toc322912132"></a><a name="_Toc329092982"></a><a
name="_Toc332701495"></a><a name="_Toc332701802"></a><a name="_Toc332711596"></a><a
name="_Toc332711904"></a><a name="_Toc332712206"></a><a name="_Toc332724122"></a><a
name="_Toc332724422"></a><a name="_Toc341102718"></a><a name="_Toc347241450"></a><a
name="_Toc347744643"></a><a name="_Toc348984426"></a><a name="_Toc348984731"></a><a
name="_Toc349037894"></a><a name="_Toc349038199"></a><a name="_Toc349042687"></a><a
name="_Toc349642110"></a><a name="_Toc351912678"></a><a name="_Toc351914700"></a><a
name="_Toc351915134"></a><a name="_Toc361231173"></a><a name="_Toc361231699"></a><a
name="_Toc362444997"></a><a name="_Toc363908919"></a><a name="_Toc364463342"></a><a
name="_Toc366077940"></a><a name="_Toc366078559"></a><a name="_Toc366079545"></a><a
name="_Toc366080157"></a><a name="_Toc366080766"></a><a name="_Toc366505106"></a><a
name="_Toc366508475"></a><a name="_Toc366512976"></a><a name="_Toc366574167"></a><a
name="_Toc366577960"></a><a name="_Toc366578554"></a><a name="_Toc366579146"></a><a
name="_Toc366579737"></a><a name="_Toc366580329"></a><a name="_Toc366580920"></a><a
name="_Toc366581512"></a><span style='color:black;font-weight:normal'>8.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Providing
Defaults for DFDL properties</h3>
<p class=MsoNormal>A dfdl:format annotation on the top level xs:schema
declaration may provide defaults for some or all the DFDL representation
properties at every annotation point within the schema document. The default
properties may be specified in attribute or element form. (Short form is not
allowed on the xs:schema element.) </p>
<p class=MsoNormal>The dfdl:ref property is not a representation property so no
default can be set.</p>
<p class=MsoNormal>The dfdl:escapeSchemeRef property provides a default
reference to a dfdl:defineEscapeScheme, the properties of dfdl:escapeScheme are
not defaulted individually.</p>
<p class=MsoNormal>DFDL representation properties defined explicitly on a
component apply only to that component and override the default value of that
property provided by a default format specified by an xs:schema dfdl:format
annotation. </p>
<p class=MsoNormal>The example below demonstrates the overriding of the
encoding property. The&nbsp; value <span class=CodeCharacter>'ASCII'</span> is
the default value for the <span class=CodeblockChar0><span lang=EN-GB
style='font-size:9.0pt;color:black'>title</span></span> element, but then it is
overridden by the locally defined <span class=CodeCharacter>utf-8</span> value
for the encoding property, which takes precedence.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:schema&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:format<b> encoding=&quot;ASCII&quot;</b>
/&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;<br>
&nbsp;&nbsp;&lt;/xs:annotation&gt;<br>
<br>
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;book&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;</span></b><span lang=EN-GB
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;title&quot; type=&quot;xs:string&quot;&gt;<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:annotation&gt;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element<b> encoding=&quot;utf-8&quot;</b> /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;pages&quot;
type=&quot;xs:int&quot;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br>
&nbsp;&nbsp; &nbsp;&lt;/xs:complexType&gt;<br>
&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></p>
</div>
<h3><a name="_Toc349042690"></a><a name="_Toc62570098"></a><a
name="_Toc322911595"></a><a name="_Toc322912134"></a><a name="_Toc329092984"></a><a
name="_Toc332701497"></a><a name="_Toc332701804"></a><a name="_Toc332711598"></a><a
name="_Toc332711906"></a><a name="_Toc332712208"></a><a name="_Toc332724124"></a><a
name="_Toc332724424"></a><a name="_Toc341102720"></a><a name="_Toc347241452"></a><a
name="_Toc347744645"></a><a name="_Toc348984428"></a><a name="_Toc348984733"></a><a
name="_Toc349037896"></a><a name="_Toc349038201"></a><a name="_Toc349042689"></a><a
name="_Toc349642112"></a><a name="_Toc351912680"></a><a name="_Toc351914702"></a><a
name="_Toc351915136"></a><a name="_Toc361231175"></a><a name="_Toc361231701"></a><a
name="_Toc362444999"></a><a name="_Toc363908921"></a><a name="_Toc364463344"></a><a
name="_Toc366077942"></a><a name="_Toc366078561"></a><a name="_Toc366079547"></a><a
name="_Toc366080159"></a><a name="_Toc366080768"></a><a name="_Toc366505108"></a><a
name="_Toc366508477"></a><a name="_Toc366512978"></a><a name="_Toc366574169"></a><a
name="_Toc366577962"></a><a name="_Toc366578556"></a><a name="_Toc366579148"></a><a
name="_Toc366579739"></a><a name="_Toc366580331"></a><a name="_Toc366580922"></a><a
name="_Toc366581514"></a><span style='color:black;font-weight:normal'>8.1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Combining
DFDL Representation Properties from a dfdl:defineFormat</h3>
<p class=MsoNormal>The DFDL representation properties contained in a referenced
dfdl:defineFormat are combined with any DFDL representation properties defined
locally on a construct as if they had been defined locally. If the same
property is defined locally in and in the referenced dfdl:defineFormat then the
local property takes precedence. The combined set of explicit DFDL properties
has precedence over any defaults set by a dfdl:format on the xs:schema.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:schema&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:defineFormat name='myFormat'&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:format encoding=&quot;ASCII&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:defineFormat&gt; <br>
&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;<br>
&nbsp;&nbsp;&lt;/xs:annotation&gt;<br>
<br>
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;book&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;</span></b><span lang=EN-GB
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;title&quot; type=&quot;xs:string&quot;&gt;<br>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element<b> ref='myFormat' encoding=&quot;UTF-8&quot; </b>/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;pages&quot;
type=&quot;xs:int&quot;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;<br>
&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></p>
</div>
<p class=MsoNormal>The example above demonstrates the overriding of an encoding
property. The 'ASCII' format encoding from the 'myFormat' is overridden by the
UTF-8 format encoding, which as a locally defined property takes precedence.</p>
<h3><a name="_Toc349042691"></a><a name="_Toc62570099"><span style='color:black;
font-weight:normal'>8.1.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Combining DFDL Properties from References</a></h3>
<p class=MsoNormal><a name="_Toc151286659">The DFDL properties from the
following types of reference are combined using the rules below:</a></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An xs:element and its referenced xs:simpleType restriction</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An xs:element reference and its referenced global xs:element</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An xs:group reference and an xs:sequence or xs:choice in its
referenced global xs:group</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An xs:simpleType restriction and its base xs:simpleType
restriction</p>
<p class=MsoNormal>Rules</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Create (a) an empty working set of &quot;explicit&quot;
properties, and (b) an empty working set of &quot;default&quot;
properties. </li>
<li class=MsoNormal>Move to the innermost schema component in the chain of
references. </li>
<li class=MsoNormal>Assemble its applicable &quot;explicit&quot; properties
from its local dfdl:ref (if present) and its local properties (if
present), the latter overriding the former (that is, local wins over
referenced).</li>
<li class=MsoNormal>Combine these with the current working set of
&quot;explicit&quot; properties. It is a Schema Definition Error if the
same property appears twice. The result is a new working set of
&quot;explicit&quot; properties.</li>
<li class=MsoNormal>Obtain applicable &quot;default&quot; properties from a
dfdl:format annotation on the xs:schema that contains the component (if
such annotation is present).&nbsp; Combine these with the current working
set of &quot;default&quot; properties, the latter overriding the former
(that is, inner wins). Result is a new working set of &quot;default&quot;
properties. </li>
<li class=MsoNormal>Move to the schema component that references the current
component and repeat starting at step 3. If there is no referencing
component, carry out step 5 and then go to step 7. </li>
<li class=MsoNormal>Combine the resultant sets of properties. The
&quot;explicit&quot; properties take priority, &quot;defaults&quot; only
used when no &quot;explicit&quot; property is present. It is a Schema
Definition Error if a required property is in neither the
&quot;explicit&quot; nor the &quot;default&quot; working sets.</li>
</ol>
<p class=MsoNormal>The &quot;Applicable&quot; properties are all the DFDL
properties that apply to that schema component. For example, all the DFDL
properties that apply to a particular xs:simpleType (as defined by Section 13).</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:simpleType name=&quot;newType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>&lt;dfdl:simpleType
alignment=&quot;16&quot;/&gt;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:restriction
base=&quot;xs:integer&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &nbsp;&nbsp;&lt;xs:maxInclusive
value=&quot;10&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:restriction&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:simpleType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:element name=&quot;testElement1&quot;
type=&quot;newType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:element <b>representation=&quot;binary&quot;</b>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:element&gt;</span></p>
</div>
<p class=MsoNormal>The locally defined dfdl:alignment property with value '16'
from the xs:simpleType 'newType' is combined with the locally defined
dfdl:representation property with value 'binary' and applied to element
'testElement1', </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:simpleType
name=&quot;otherNewType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:simpleType <b>alignment=&quot;64&quot;</b>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:restriction
base=&quot;newType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:maxInclusive
value=&quot;5&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:restriction&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:simpleType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:simpleType name=&quot;newType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:simpleType <b>representation='binary</b>'/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:restriction
base=&quot;xs:int&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:maxInclusive
value=&quot;10&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:restriction&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:simpleType&gt;</span></p>
</div>
<p class=MsoNormal>The locally defined dfdl:representation property with value
'binary' is combined with the locally defined dfdl:alignment property with
value '64' from the xs:simpleType restriction 'otherNewType'.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element ref=&quot;testElement1<b>&quot;</b>&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element </span><b><span lang=EN-GB style='color:black'>binaryNumberRep</span><span
lang=EN-GB style='color:black'> =&quot;binary&quot;</span></b><span lang=EN-GB
style='color:black'>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:element name=&quot;testElement1&quot; type=&quot;newType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:element <b>representation=&quot;binary&quot;</b>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:simpleType name=&quot;newType&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:annotation&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:appinfo source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:simpleType <b>alignment=&quot;16&quot;</b>/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:restriction
base=&quot;xs:int&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:maxInclusive
value=&quot;10&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:restriction&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:simpleType&gt;</span></p>
</div>
<p class=MsoNormal>The locally defined dfdl:alignment property with value '16'
from the xs:simpleType 'newType' is combined with the locally defined
dfdl:representation property with value 'binary' and locally defined dfdl:binaryNumberRep
with a value of 'binary'</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;!-- SCHEMA1 --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:schema targetNamespace=&quot;&quot;
xmlns:tns1=&quot;http://tns1&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; </span><span style='color:black'>&lt;xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:format</span><b><span lang=EN-GB
style='color:black'> encoding=&quot;ASCII&quot; </span></b><b><span
style='color:black'>byteOrder=&quot;littleEndian&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
initiator=&quot;&quot; terminator=&quot;&quot;</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sequenceKind=&quot;ordered&quot;</span></b><span style='color:black'>&nbsp;
/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/xs:appinfo&gt;<br>
&nbsp; &lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xsd:import namespace=&quot;</span><a
href="http://tns2/"><span lang=DE style='color:black;text-decoration:none'>http://tns2</span></a><span
lang=EN-GB style='color:black'>&quot;
schemaLocation=&quot;SCHEMA2.xsd&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'><br>
&nbsp; </span><span style='color:black'>&lt;xs:element
name=&quot;book&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:group
ref=&quot;tns2:ggrp1&quot; <b>dfdl:separator=&quot;,&quot;</b>&gt;&lt;/xs:group&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp; </span><span lang=EN-GB
style='color:black'>&lt;/xs:complexType&gt;<br>
&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:schema&gt;</span></p>
</div>
<p class=MsoNormal><b><span lang=DE>&nbsp;</span></b></p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;!-- SCHEMA2 --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&lt;xs:schema targetNamespace=&quot;&quot;
xmlns:tns2=&quot;http://tns2&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'>&nbsp;</p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&lt;xs:annotation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;dfdl:format<b> </b>encoding=&quot;UTF-8&quot;<b>
byteOrder=&quot;littleEndian&quot;</b></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;initiator=&quot;&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sequenceKind=&quot;ordered&quot;</span></b><span style='color:black'>&nbsp;
/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/xs:appinfo&gt;<br>
&nbsp;&nbsp;&lt;/xs:annotation&gt;<br>
<br>
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp; &lt;xs:group name=&quot;ggrp1&quot; &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:sequence <b>dfdl:separatorPosition=&quot;infix&quot;</b>
&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;customer&quot; type=&quot;xs:string&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>dfdl:length=&quot;8&quot; dfdl:lengthKind=&quot;explicit&quot;</b>
/&gt;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp; &lt;/xs:group&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&lt;/xs:schema&gt;</span></p>
</div>
<p class=MsoNormal>The DFDL properties applied to the xs:sequence in xs:group
&quot;ggrp1&quot; in SCHEMA2 when referenced from the group reference in
SCHEMA1 are </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>dfdl:separator &quot;,&quot; from the group reference in
SCHEMA1</li>
<li class=MsoNormal>dfdl:separatorPosition &quot;infix&quot; from the group
declaration in SCHEMA2</li>
<li class=MsoNormal>dfdl:encoding &quot;UTF-8&quot;, dfdl:initiator
''&quot;&nbsp; from the default dfdl:format annotation in SCHEMA2</li>
<li class=MsoNormal>dfdl:terminator &quot;&quot;&nbsp;&nbsp; from the default
dfdl:format annotation in SCHEMA1<a name="_Toc322911598"></a><a
name="_Toc322912137"></a><a name="_Toc329092987"></a><a
name="_Toc332701500"></a><a name="_Toc332701807"></a><a
name="_Toc332711601"></a><a name="_Toc332711909"></a><a
name="_Toc332712211"></a><a name="_Toc332724127"></a><a
name="_Toc332724427"></a><a name="_Toc341102723"></a><a
name="_Toc347241455"></a><a name="_Toc347744648"></a><a
name="_Toc348984431"></a><a name="_Toc348984736"></a><a
name="_Toc349037899"></a><a name="_Toc349038204"></a><a
name="_Toc349042692"></a><a name="_Toc349642115"></a><a
name="_Toc351912683"></a><a name="_Toc351914705"></a><a
name="_Toc351915139"></a><a name="_Toc361231178"></a><a
name="_Toc361231704"></a><a name="_Toc362445002"></a><a
name="_Toc363908924"></a><a name="_Toc364463347"></a><a
name="_Toc366077945"></a><a name="_Toc366078564"></a><a
name="_Toc366079550"></a><a name="_Toc366080162"></a><a
name="_Toc366080771"></a><a name="_Toc366505111"></a><a
name="_Toc366508480"></a><a name="_Toc366512981"></a><a
name="_Toc322911599"></a><a name="_Toc322912138"></a><a
name="_Toc329092988"></a><a name="_Toc332701501"></a><a
name="_Toc332701808"></a><a name="_Toc332711602"></a><a
name="_Toc332711910"></a><a name="_Toc332712212"></a><a
name="_Toc332724128"></a><a name="_Toc332724428"></a><a
name="_Toc341102724"></a><a name="_Toc347241456"></a><a
name="_Toc347744649"></a><a name="_Toc348984432"></a><a
name="_Toc348984737"></a><a name="_Toc349037900"></a><a
name="_Toc349038205"></a><a name="_Toc349042693"></a><a
name="_Toc349642116"></a><a name="_Toc351912684"></a><a
name="_Toc351914706"></a><a name="_Toc351915140"></a><a
name="_Toc361231179"></a><a name="_Toc361231705"></a><a
name="_Toc362445003"></a><a name="_Toc363908925"></a><a
name="_Toc364463348"></a><a name="_Toc366077946"></a><a
name="_Toc366078565"></a><a name="_Toc366079551"></a><a
name="_Toc366080163"></a><a name="_Toc366080772"></a><a
name="_Toc366505112"></a><a name="_Toc366508481"></a><a
name="_Toc366512982"></a></li>
</ol>
<h2><a name="_Toc62570100">8.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Schema Checking</a></h2>
<p class=nobreak>When the DFDL schema itself contains an error, it implies that
the DFDL processor cannot process data because the DFDL schema is not
meaningful. All conforming DFDL processors MUST detect all Schema Definition
Errors and MUST issue appropriate diagnostic messages. The behavior of a DFDL
processor after a Schema Definition Error is detected is out of scope for this specification.
There is no centralized listing of the Schema Definition Errors; they are
defined throughout this specification.</p>
<p class=MsoNormal>When a Schema Definition Error can be detected <i>statically</i>,
that is given only the schema, it is desirable, though not required by the DFDL
1.0 specification, that diagnostic messages SHOULD be issued before any data
are processed. However, because some representation properties may obtain their
values from the data, not all Schema Definition Errors can be detected without
reference to data so some Schema Definition Error diagnostics MAY of necessity be
issued once data is being processed. </p>
<p class=MsoNormal>The expression language included within DFDL is strongly,
statically type checkable. This means that type checking of expressions MAY be
performed statically, that is, without processing data, and implementations are
encouraged to perform this checking statically so that <i>Static Type Errors</i>
(Schema Definition Errors having to do with type inconsistencies) can be
detected before processing data.</p>
<h3><a name="_Toc62570101"><span style='color:black;font-weight:normal'>8.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Schema
Component Constraint: Unique Particle Attribution</a></h3>
<p class=MsoNormal>The term <i>particle</i> is used in XSD to refer to a schema
component that can have dimension (XSD minOccurs and/or XSD maxOccurs)
expressed on it. In DFDL only local element declarations and element references
are particles. </p>
<p class=MsoNormal>A DFDL processor MUST implement the Schema Component
Constraint: Unique Particle Attribution defined in <em><span style='font-family:
"Arial",sans-serif'>XML Schema Part 1: Structures </span></em>[<a
href="#a_XSDL_Part1">XSDLV1</a>]<em><span style='font-family:"Arial",sans-serif'>
</span></em>that applies to the DFDL schema subset.</p>
<p class=MsoNormal>Two elements <b>overlap</b> if </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>They are both element declaration particles whose
declarations have the same name and target namespace.</li>
</ul>
<p class=MsoNormal>A schema violates the unique attribution constraint if it
contains two particles which overlap and which either </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>are both in the particles of a <em><span style='font-family:
"Arial",sans-serif'>choice</span></em> group.</li>
</ul>
<p class=MsoNormal>or </p>
<p class=MsoListParagraph style='text-indent:-.25in'><span style='font-family:
Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>either describes adjacent information items in an xs:sequence and
the first has XSD minOccurs less than XSD maxOccurs.</p>
<h3><a name="_Toc243112810"></a><a name="_Ref247453451"></a><a
name="_Ref247453463"></a><a name="_Toc349042694"></a><a name="_Toc62570102"><span
style='color:black;font-weight:normal'>8.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Optional Checks and Warnings</a></h3>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A DFDL processor that only implements a DFDL parser does not have
to perform Schema Definition Error checking for properties that are solely used
when unparsing, though it is RECOMMENDED that it does so for portability reasons.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A DFDL processor that does not implement some optional DFDL
language features does not have to check properties or annotations needed by those
optional language features but MUST issue a warning that an unrecognized
property or annotation has been encountered.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A DFDL processor MUST NOT check global element declarations nor
type or group definitions as they may legitimately be incomplete due to
properties intended to be supplied based on scoping rules and the context at
the point of use. There are two exceptions to this, which MUST be checked:</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Global simple
type definitions that are referenced by the dfdl:prefixLengthType property</p>
<p class=MsoListParagraphCxSpLast style='margin-left:1.0in;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Global element
declarations that are the document root.</p>
<p class=MsoNormal>Some situations suggest likely errors, but a DFDL processor
cannot be certain. In these situations, a DFDL processor MAY issue warnings to
assist a DFDL schema author in identifying likely errors. An important case of
this is when the DFDL processor encounters a schema component and annotation
where there are explicitly properties that are not relevant to the component as
defined. Depending on the specifics of the component and property the DFDL
processor MUST take certain actions. If the:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Property is not applicable to the component's DFDL annotation.</li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>Schema Definition Error. Example is dfdl:lengthKind on xs:sequence.</li>
</ul>
</ul>
<p class=MsoNormal>However, for these situations, the DFDL processor MAY take
certain actions:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Property is not applicable because of simple type. </li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>Warning (optional). Example is dfdl:calendarPatternKind on
xs:string.</li>
</ul>
<li class=MsoNormal>Property is not applicable because of another DFDL property
setting. </li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>Warning (optional). Example is dfdl:binaryNumberRep when dfdl:representation
is text.</li>
</ul>
<li class=MsoNormal>Invalid value for a property that is unused or ignored.</li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>Warning (optional). Example is dfdl:lengthKind is not
&#8216;explicit&#8217; but dfdl:length is an expression and that
expression contains invalid syntax.</li>
</ul>
</ul>
<h1><a name="_Ref39164053"></a><a name="_Ref39164057"></a><a name="_Toc62570103"></a><a
name="_DFDL_Processing_Introduction"></a>9<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>DFDL Processing Introduction</h1>
<p class=MsoNormal>A <em><span style='font-family:"Arial",sans-serif'>DFDL
Parser</span></em> is an application or code library that takes as input:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>A DFDL annotated XML schema </li>
<li class=MsoNormal>A data stream</li>
</ul>
<p class=MsoNormal>It uses the DFDL schema description to interpret the data
stream and realize the DFDL Information Set. If successful the data stream is
said to be <i>well-formed</i> for the data format described by the DFDL Schema.
The information set can then be written out (for example it could be realized
as an XML or JSON text string) or it can be accessed by an application through
an API (for example, a DOM-like tree could be created in memory for access by
applications). </p>
<p class=MsoNormal>Symmetrically, there is a notion of a <em><span
style='font-family:"Arial",sans-serif'>DFDL Unparser.</span></em> The unparser
works from an instance of the DFDL Information Set, a DFDL annotated schema and
writes out to a target data stream in the appropriate representation formats. </p>
<p class=MsoNormal>Often both parser and unparser are implemented in the same
body of software and so are not always distinguished. Collectively they are
called a <em><span style='font-family:"Arial",sans-serif'>DFDL</span></em> <em><span
style='font-family:"Arial",sans-serif'>Processor</span></em>. The parser and
unparser MAY, of course, be different bodies of software. Conforming DFDL
processors MAY implement only a parser, because the unparser is an optional
feature of DFDL.</p>
<h2><a name="_Toc177399074"></a><a name="_Toc175057361"></a><a
name="_Toc199516300"></a><a name="_Toc194983964"></a><a name="_Toc243112812"></a><a
name="_Toc349042696"></a><a name="_Ref52978585"></a><a name="_Ref52980841"></a><a
name="_Toc62570104"></a><a name="_Toc322911601"></a><a name="_Toc322912140"></a><a
name="_Toc329092990"></a><a name="_Toc332701503"></a><a name="_Toc332701810"></a><a
name="_Toc332711604"></a><a name="_Toc332711912"></a><a name="_Toc332712214"></a><a
name="_Toc332724130"></a><a name="_Toc332724430"></a><a name="_Toc341102726"></a><a
name="_Toc347241458"></a><a name="_Toc347744651"></a><a name="_Toc348984434"></a><a
name="_Toc348984739"></a><a name="_Toc349037902"></a><a name="_Toc349038207"></a><a
name="_Toc349042695"></a><a name="_Toc349642118"></a><a name="_Toc351912686"></a><a
name="_Toc351914708"></a><a name="_Toc351915142"></a><a name="_Toc361231181"></a><a
name="_Toc361231707"></a><a name="_Toc362445005"></a><a name="_Toc363908927"></a><a
name="_Toc364463350"></a><a name="_Toc366077948"></a><a name="_Toc366078567"></a><a
name="_Toc366079553"></a><a name="_Toc366080165"></a><a name="_Toc366080774"></a><a
name="_Toc366505114"></a><a name="_Toc366508483"></a><a name="_Toc366512984"></a><a
name="_Toc366574173"></a><a name="_Toc366577966"></a><a name="_Toc366578560"></a><a
name="_Toc366579152"></a><a name="_Toc366579743"></a><a name="_Toc366580335"></a><a
name="_Toc366580926"></a><a name="_Toc366581518"></a><a name="_Parser_Overview"></a>9.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parser
Overview</h2>
<p class=MsoNormal>The DFDL logical parser is a recursive-descent parser<a
href="#_ftn10" name="_ftnref10" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[10]</span></span></span></a>
having guided, but potentially unbounded look ahead<em><span style='font-family:
"Arial",sans-serif'>.</span></em> A DFDL parser reads a specification (the DFDL
schema) and it recursively walks down and up the schema as it processes the
data. This is done in a manner consistent with the scoping of properties and
variables described in Section <span
class=MsoHyperlink>8</span> <span
class=MsoHyperlink>Property Scoping and DFDL Schema Checking</span></p>
<p class=MsoNormal><span class=MsoHyperlink>Property</span> Scoping</p>
<p class=MsoNormal>Property Scoping RulesThe unbounded look ahead means that
there are situations where the parser MUST speculatively attempt to parse data
where the occurrence of a Processing Error causes the parser to suppress the
error, back out and make another attempt. </p>
<p class=MsoNormal>Implementations of DFDL MAY provide control mechanisms for
limiting the speculative search behavior of DFDL parsers. The nature of these
mechanisms is beyond the scope of the DFDL specification which defines the
behavior of conforming parsers only on data that does not cause an
implementation to reach such a control-mechanism limit. Any such control
mechanisms MUST be documented by the implementation and are thus <i>implementation-defined</i>.</p>
<p class=MsoNormal>The logical parser recursively descends the DFDL schema
beginning with the global element that is the document root. This is specified
for the processor in an implementation-defined manner, see Section<span
class=MsoHyperlink> </span><span
class=MsoHyperlink>20</span><span class=MsoHyperlink> </span><a
href="#_External_Control_of">External Control of the DFDL Processor</a>. Depending
on the kind of schema construct that is encountered and the DFDL annotations on
it, and the pre-existing context, the parser performs specific parsing
operations on the data stream. These parsing operations typically recognize and
consume data from the stream and construct values in the logical model. For
values of complex types and for arrays, these logical model values may
incorporate values created by recursive parsing. </p>
<p class=MsoNormal>DFDL Implementations are free to use whatever techniques for
parsing they wish so long as the semantics are equivalent to that of the
speculative recursive-descent logical parser described in this specification. Implementations
MUST distinguish the various kinds of errors (Schema Definition Error, Processing
Error, etc.) no matter what time they are detected. Some implementations MAY
not detect certain Schema Definition Errors until data are being parsed;
however, they MUST still distinguish Schema Definition Errors from Processing Errors.
</p>
<h3><a name="_Toc62570105"><span style='color:black;font-weight:normal'>9.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Points
of Uncertainty</a></h3>
<p class=MsoNormal>A <i>point of uncertainty</i> occurs when there is more than
one schema component that might be applied based on parsing up to the current point
in the data stream.</p>
<p class=MsoNormal>Any one of the following constructs is a point of
uncertainty:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>An xs:choice</li>
<li class=MsoNormal>All xs:elements in an unordered xs:sequence
(dfdl:sequenceKind<a href="#_ftn11" name="_ftnref11" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[11]</span></span></span></a>
is 'unordered')</li>
<li class=MsoNormal>All xs:elements in an xs:sequence containing one or more
dfdl:floating<a href="#_ftn12" name="_ftnref12" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[12]</span></span></span></a>
xs:elements</li>
</ul>
<p class=MsoNormal>Any one of the following constructs is a <i>potential</i>
point of uncertainty:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>An optional<a href="#_ftn13" name="_ftnref13" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[13]</span></span></span></a>
xs:element </li>
<li class=MsoNormal>An array xs:element. </li>
</ul>
<p class=MsoNormal>Examples of potential points of uncertainty are in Section 9.3.3
<span class=InternetLink>Resolving Points of Uncertainty</span><span
class=InternetLink>.</span></p>
<h3><a name="_Toc62570106"></a><a name="_Toc53131269"></a><a name="_Toc53134054"></a><span
style='color:black;font-weight:normal'>9.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Processing Error</h3>
<p class=nobreak>If a DFDL schema contains no Schema Definition Errors, then
there is the additional possibility of a <i>Processing Error</i> when
processing data using a DFDL schema. A Processing Error occurs when parsing if
the data does not conform to the format described by the schema, that is to
say, the data is not well-formed relative to the schema. A Processing Error
occurs when unparsing<i> </i>when the incoming Infoset does not conform to the
logical structure described by the schema.</p>
<p class=MsoNormal>Processing Errors interact with the schema&#8217;s points of
uncertainty. When a DFDL parser encounters a Processing Error, then that error
is said to be <i>suppressed</i> by a point of uncertainty if there is another
schema component that can be selected by the parsing algorithm. The details of
the DFDL parsing algorithm are described in Section <span
class=MsoHyperlink>9.3</span>. </p>
<p class=MsoNormal>Processing Errors MUST be able to be suppressed by a point
of uncertainty. See Section <span
class=MsoHyperlink>9.3.3</span>.</p>
<p class=MsoNormal>Note that unlike Processing Errors, Schema Definition Errors
cannot be suppressed by points of uncertainty when parsing data. That is, a
Schema Definition Error is fatal. It does not trigger search or backtracking to
find alternative ways to parse the data. </p>
<h3><a name="_Toc179788280"></a><a name="_Toc199516301"></a><a
name="_Toc194983965"></a><a name="_Toc243112813"></a><a name="_Ref348976487"></a><a
name="_Ref348976498"></a><a name="_Toc349042701"></a><a name="_Ref38549907"></a><a
name="_Ref38560357"></a><a name="_Toc62570107"></a><a name="_Toc53134056"></a><a
name="_Toc53134057"></a><a name="_Toc322911603"></a><a name="_Toc322912142"></a><a
name="_Toc329092992"></a><a name="_Toc332701505"></a><a name="_Toc332701812"></a><a
name="_Toc332711606"></a><a name="_Toc332711914"></a><a name="_Toc332712216"></a><a
name="_Toc332724132"></a><a name="_Toc332724432"></a><a name="_Toc341102728"></a><a
name="_Toc347241460"></a><a name="_Toc347744653"></a><a name="_Toc348984436"></a><a
name="_Toc348984741"></a><a name="_Toc349037904"></a><a name="_Toc349038209"></a><a
name="_Toc349042697"></a><a name="_Toc351914710"></a><a name="_Toc351915144"></a><a
name="_Toc361231183"></a><a name="_Toc361231709"></a><a name="_Toc362445007"></a><a
name="_Toc363908929"></a><a name="_Toc364463352"></a><a name="_Toc366077950"></a><a
name="_Toc366078569"></a><a name="_Toc366079555"></a><a name="_Toc366080167"></a><a
name="_Toc366080776"></a><a name="_Toc366505116"></a><a name="_Toc366508485"></a><a
name="_Toc366512986"></a><a name="_Toc366574175"></a><a name="_Toc366577968"></a><a
name="_Toc366578562"></a><a name="_Toc366579154"></a><a name="_Toc366579745"></a><a
name="_Toc366580337"></a><a name="_Toc366580928"></a><a name="_Toc366581520"></a><a
name="_Toc351914711"></a><a name="_Toc351915145"></a><a name="_Toc361231184"></a><a
name="_Toc361231710"></a><a name="_Toc362445008"></a><a name="_Toc363908930"></a><a
name="_Toc364463353"></a><a name="_Toc366077951"></a><a name="_Toc366078570"></a><a
name="_Toc366079556"></a><a name="_Toc366080168"></a><a name="_Toc366080777"></a><a
name="_Toc366505117"></a><a name="_Toc366508486"></a><a name="_Toc366512987"></a><a
name="_Toc366574176"></a><a name="_Toc366577969"></a><a name="_Toc366578563"></a><a
name="_Toc366579155"></a><a name="_Toc366579746"></a><a name="_Toc366580338"></a><a
name="_Toc366580929"></a><a name="_Toc366581521"></a><a name="_Toc351915146"></a><a
name="_Toc361231185"></a><a name="_Toc361231711"></a><a name="_Toc362445009"></a><a
name="_Toc363908931"></a><a name="_Toc364463354"></a><a name="_Toc366077952"></a><a
name="_Toc366078571"></a><a name="_Toc366079557"></a><a name="_Toc366080169"></a><a
name="_Toc366080778"></a><a name="_Toc366505118"></a><a name="_Toc366508487"></a><a
name="_Toc366512988"></a><a name="_Toc366574177"></a><a name="_Toc366577970"></a><a
name="_Toc366578564"></a><a name="_Toc366579156"></a><a name="_Toc366579747"></a><a
name="_Toc366580339"></a><a name="_Toc366580930"></a><a name="_Toc366581522"></a><a
name="_Toc351915147"></a><a name="_Toc361231186"></a><a name="_Toc361231712"></a><a
name="_Toc362445010"></a><a name="_Toc363908932"></a><a name="_Toc364463355"></a><a
name="_Toc366077953"></a><a name="_Toc366078572"></a><a name="_Toc366079558"></a><a
name="_Toc366080170"></a><a name="_Toc366080779"></a><a name="_Toc366505119"></a><a
name="_Toc366508488"></a><a name="_Toc366512989"></a><a name="_Toc366574178"></a><a
name="_Toc366577971"></a><a name="_Toc366578565"></a><a name="_Toc366579157"></a><a
name="_Toc366579748"></a><a name="_Toc366580340"></a><a name="_Toc366580931"></a><a
name="_Toc366581523"></a><a name="_Toc351915148"></a><a name="_Toc361231187"></a><a
name="_Toc361231713"></a><a name="_Toc362445011"></a><a name="_Toc363908933"></a><a
name="_Toc364463356"></a><a name="_Toc366077954"></a><a name="_Toc366078573"></a><a
name="_Toc366079559"></a><a name="_Toc366080171"></a><a name="_Toc366080780"></a><a
name="_Toc366505120"></a><a name="_Toc366508489"></a><a name="_Toc366512990"></a><a
name="_Toc366574179"></a><a name="_Toc366577972"></a><a name="_Toc366578566"></a><a
name="_Toc366579158"></a><a name="_Toc366579749"></a><a name="_Toc366580341"></a><a
name="_Toc366580932"></a><a name="_Toc366581524"></a><a name="_Toc351915149"></a><a
name="_Toc361231188"></a><a name="_Toc361231714"></a><a name="_Toc362445012"></a><a
name="_Toc363908934"></a><a name="_Toc364463357"></a><a name="_Toc366077955"></a><a
name="_Toc366078574"></a><a name="_Toc366079560"></a><a name="_Toc366080172"></a><a
name="_Toc366080781"></a><a name="_Toc366505121"></a><a name="_Toc366508490"></a><a
name="_Toc366512991"></a><a name="_Toc366574180"></a><a name="_Toc366577973"></a><a
name="_Toc366578567"></a><a name="_Toc366579159"></a><a name="_Toc366579750"></a><a
name="_Toc366580342"></a><a name="_Toc366580933"></a><a name="_Toc366581525"></a><a
name="_Toc351915150"></a><a name="_Toc361231189"></a><a name="_Toc361231715"></a><a
name="_Toc362445013"></a><a name="_Toc363908935"></a><a name="_Toc364463358"></a><a
name="_Toc366077956"></a><a name="_Toc366078575"></a><a name="_Toc366079561"></a><a
name="_Toc366080173"></a><a name="_Toc366080782"></a><a name="_Toc366505122"></a><a
name="_Toc366508491"></a><a name="_Toc366512992"></a><a name="_Toc366574181"></a><a
name="_Toc366577974"></a><a name="_Toc366578568"></a><a name="_Toc366579160"></a><a
name="_Toc366579751"></a><a name="_Toc366580343"></a><a name="_Toc366580934"></a><a
name="_Toc366581526"></a><a name="_Toc351915151"></a><a name="_Toc361231190"></a><a
name="_Toc361231716"></a><a name="_Toc362445014"></a><a name="_Toc363908936"></a><a
name="_Toc364463359"></a><a name="_Toc366077957"></a><a name="_Toc366078576"></a><a
name="_Toc366079562"></a><a name="_Toc366080174"></a><a name="_Toc366080783"></a><a
name="_Toc366505123"></a><a name="_Toc366508492"></a><a name="_Toc366512993"></a><a
name="_Toc366574182"></a><a name="_Toc366577975"></a><a name="_Toc366578569"></a><a
name="_Toc366579161"></a><a name="_Toc366579752"></a><a name="_Toc366580344"></a><a
name="_Toc366580935"></a><a name="_Toc366581527"></a><a name="_Toc351915152"></a><a
name="_Toc361231191"></a><a name="_Toc361231717"></a><a name="_Toc362445015"></a><a
name="_Toc363908937"></a><a name="_Toc364463360"></a><a name="_Toc366077958"></a><a
name="_Toc366078577"></a><a name="_Toc366079563"></a><a name="_Toc366080175"></a><a
name="_Toc366080784"></a><a name="_Toc366505124"></a><a name="_Toc366508493"></a><a
name="_Toc366512994"></a><a name="_Toc366574183"></a><a name="_Toc366577976"></a><a
name="_Toc366578570"></a><a name="_Toc366579162"></a><a name="_Toc366579753"></a><a
name="_Toc366580345"></a><a name="_Toc366580936"></a><a name="_Toc366581528"></a><a
name="_Toc351915153"></a><a name="_Toc361231192"></a><a name="_Toc361231718"></a><a
name="_Toc362445016"></a><a name="_Toc363908938"></a><a name="_Toc364463361"></a><a
name="_Toc366077959"></a><a name="_Toc366078578"></a><a name="_Toc366079564"></a><a
name="_Toc366080176"></a><a name="_Toc366080785"></a><a name="_Toc366505125"></a><a
name="_Toc366508494"></a><a name="_Toc366512995"></a><a name="_Toc366574184"></a><a
name="_Toc366577977"></a><a name="_Toc366578571"></a><a name="_Toc366579163"></a><a
name="_Toc366579754"></a><a name="_Toc366580346"></a><a name="_Toc366580937"></a><a
name="_Toc366581529"></a><a name="_Toc351915154"></a><a name="_Toc361231193"></a><a
name="_Toc361231719"></a><a name="_Toc362445017"></a><a name="_Toc363908939"></a><a
name="_Toc364463362"></a><a name="_Toc366077960"></a><a name="_Toc366078579"></a><a
name="_Toc366079565"></a><a name="_Toc366080177"></a><a name="_Toc366080786"></a><a
name="_Toc366505126"></a><a name="_Toc366508495"></a><a name="_Toc366512996"></a><a
name="_Toc366574185"></a><a name="_Toc366577978"></a><a name="_Toc366578572"></a><a
name="_Toc366579164"></a><a name="_Toc366579755"></a><a name="_Toc366580347"></a><a
name="_Toc366580938"></a><a name="_Toc366581530"></a><a name="_Toc351915155"></a><a
name="_Toc361231194"></a><a name="_Toc361231720"></a><a name="_Toc362445018"></a><a
name="_Toc363908940"></a><a name="_Toc364463363"></a><a name="_Toc366077961"></a><a
name="_Toc366078580"></a><a name="_Toc366079566"></a><a name="_Toc366080178"></a><a
name="_Toc366080787"></a><a name="_Toc366505127"></a><a name="_Toc366508496"></a><a
name="_Toc366512997"></a><a name="_Toc366574186"></a><a name="_Toc366577979"></a><a
name="_Toc366578573"></a><a name="_Toc366579165"></a><a name="_Toc366579756"></a><a
name="_Toc366580348"></a><a name="_Toc366580939"></a><a name="_Toc366581531"></a><a
name="_Toc351915156"></a><a name="_Toc361231195"></a><a name="_Toc361231721"></a><a
name="_Toc362445019"></a><a name="_Toc363908941"></a><a name="_Toc364463364"></a><a
name="_Toc366077962"></a><a name="_Toc366078581"></a><a name="_Toc366079567"></a><a
name="_Toc366080179"></a><a name="_Toc366080788"></a><a name="_Toc366505128"></a><a
name="_Toc366508497"></a><a name="_Toc366512998"></a><a name="_Toc366574187"></a><a
name="_Toc366577980"></a><a name="_Toc366578574"></a><a name="_Toc366579166"></a><a
name="_Toc366579757"></a><a name="_Toc366580349"></a><a name="_Toc366580940"></a><a
name="_Toc366581532"></a><a name="_Toc351915157"></a><a name="_Toc361231196"></a><a
name="_Toc361231722"></a><a name="_Toc362445020"></a><a name="_Toc363908942"></a><a
name="_Toc364463365"></a><a name="_Toc366077963"></a><a name="_Toc366078582"></a><a
name="_Toc366079568"></a><a name="_Toc366080180"></a><a name="_Toc366080789"></a><a
name="_Toc366505129"></a><a name="_Toc366508498"></a><a name="_Toc366512999"></a><a
name="_Toc366574188"></a><a name="_Toc366577981"></a><a name="_Toc366578575"></a><a
name="_Toc366579167"></a><a name="_Toc366579758"></a><a name="_Toc366580350"></a><a
name="_Toc366580941"></a><a name="_Toc366581533"></a><a name="_Toc351915158"></a><a
name="_Toc361231197"></a><a name="_Toc361231723"></a><a name="_Toc362445021"></a><a
name="_Toc363908943"></a><a name="_Toc364463366"></a><a name="_Toc366077964"></a><a
name="_Toc366078583"></a><a name="_Toc366079569"></a><a name="_Toc366080181"></a><a
name="_Toc366080790"></a><a name="_Toc366505130"></a><a name="_Toc366508499"></a><a
name="_Toc366513000"></a><a name="_Toc366574189"></a><a name="_Toc366577982"></a><a
name="_Toc366578576"></a><a name="_Toc366579168"></a><a name="_Toc366579759"></a><a
name="_Toc366580351"></a><a name="_Toc366580942"></a><a name="_Toc366581534"></a><a
name="_Toc351915159"></a><a name="_Toc361231198"></a><a name="_Toc361231724"></a><a
name="_Toc362445022"></a><a name="_Toc363908944"></a><a name="_Toc364463367"></a><a
name="_Toc366077965"></a><a name="_Toc366078584"></a><a name="_Toc366079570"></a><a
name="_Toc366080182"></a><a name="_Toc366080791"></a><a name="_Toc366505131"></a><a
name="_Toc366508500"></a><a name="_Toc366513001"></a><a name="_Toc366574190"></a><a
name="_Toc366577983"></a><a name="_Toc366578577"></a><a name="_Toc366579169"></a><a
name="_Toc366579760"></a><a name="_Toc366580352"></a><a name="_Toc366580943"></a><a
name="_Toc366581535"></a><a name="_Toc351915160"></a><a name="_Toc361231199"></a><a
name="_Toc361231725"></a><a name="_Toc362445023"></a><a name="_Toc363908945"></a><a
name="_Toc364463368"></a><a name="_Toc366077966"></a><a name="_Toc366078585"></a><a
name="_Toc366079571"></a><a name="_Toc366080183"></a><a name="_Toc366080792"></a><a
name="_Toc366505132"></a><a name="_Toc366508501"></a><a name="_Toc366513002"></a><a
name="_Toc366574191"></a><a name="_Toc366577984"></a><a name="_Toc366578578"></a><a
name="_Toc366579170"></a><a name="_Toc366579761"></a><a name="_Toc366580353"></a><a
name="_Toc366580944"></a><a name="_Toc366581536"></a><a name="_Toc351915161"></a><a
name="_Toc361231200"></a><a name="_Toc361231726"></a><a name="_Toc362445024"></a><a
name="_Toc363908946"></a><a name="_Toc364463369"></a><a name="_Toc366077967"></a><a
name="_Toc366078586"></a><a name="_Toc366079572"></a><a name="_Toc366080184"></a><a
name="_Toc366080793"></a><a name="_Toc366505133"></a><a name="_Toc366508502"></a><a
name="_Toc366513003"></a><a name="_Toc366574192"></a><a name="_Toc366577985"></a><a
name="_Toc366578579"></a><a name="_Toc366579171"></a><a name="_Toc366579762"></a><a
name="_Toc366580354"></a><a name="_Toc366580945"></a><a name="_Toc366581537"></a><a
name="_Toc351915162"></a><a name="_Toc361231201"></a><a name="_Toc361231727"></a><a
name="_Toc362445025"></a><a name="_Toc363908947"></a><a name="_Toc364463370"></a><a
name="_Toc366077968"></a><a name="_Toc366078587"></a><a name="_Toc366079573"></a><a
name="_Toc366080185"></a><a name="_Toc366080794"></a><a name="_Toc366505134"></a><a
name="_Toc366508503"></a><a name="_Toc366513004"></a><a name="_Toc366574193"></a><a
name="_Toc366577986"></a><a name="_Toc366578580"></a><a name="_Toc366579172"></a><a
name="_Toc366579763"></a><a name="_Toc366580355"></a><a name="_Toc366580946"></a><a
name="_Toc366581538"></a><a name="_Toc351915163"></a><a name="_Toc361231202"></a><a
name="_Toc361231728"></a><a name="_Toc362445026"></a><a name="_Toc363908948"></a><a
name="_Toc364463371"></a><a name="_Toc366077969"></a><a name="_Toc366078588"></a><a
name="_Toc366079574"></a><a name="_Toc366080186"></a><a name="_Toc366080795"></a><a
name="_Toc366505135"></a><a name="_Toc366508504"></a><a name="_Toc366513005"></a><a
name="_Toc366574194"></a><a name="_Toc366577987"></a><a name="_Toc366578581"></a><a
name="_Toc366579173"></a><a name="_Toc366579764"></a><a name="_Toc366580356"></a><a
name="_Toc366580947"></a><a name="_Toc366581539"></a><a name="_Toc351915164"></a><a
name="_Toc361231203"></a><a name="_Toc361231729"></a><a name="_Toc362445027"></a><a
name="_Toc363908949"></a><a name="_Toc364463372"></a><a name="_Toc366077970"></a><a
name="_Toc366078589"></a><a name="_Toc366079575"></a><a name="_Toc366080187"></a><a
name="_Toc366080796"></a><a name="_Toc366505136"></a><a name="_Toc366508505"></a><a
name="_Toc366513006"></a><a name="_Toc366574195"></a><a name="_Toc366577988"></a><a
name="_Toc366578582"></a><a name="_Toc366579174"></a><a name="_Toc366579765"></a><a
name="_Toc366580357"></a><a name="_Toc366580948"></a><a name="_Toc366581540"></a><a
name="_Toc351915165"></a><a name="_Toc361231204"></a><a name="_Toc361231730"></a><a
name="_Toc362445028"></a><a name="_Toc363908950"></a><a name="_Toc364463373"></a><a
name="_Toc366077971"></a><a name="_Toc366078590"></a><a name="_Toc366079576"></a><a
name="_Toc366080188"></a><a name="_Toc366080797"></a><a name="_Toc366505137"></a><a
name="_Toc366508506"></a><a name="_Toc366513007"></a><a name="_Toc366574196"></a><a
name="_Toc366577989"></a><a name="_Toc366578583"></a><a name="_Toc366579175"></a><a
name="_Toc366579766"></a><a name="_Toc366580358"></a><a name="_Toc366580949"></a><a
name="_Toc366581541"></a><a name="_Toc351915166"></a><a name="_Toc361231205"></a><a
name="_Toc361231731"></a><a name="_Toc362445029"></a><a name="_Toc363908951"></a><a
name="_Toc364463374"></a><a name="_Toc366077972"></a><a name="_Toc366078591"></a><a
name="_Toc366079577"></a><a name="_Toc366080189"></a><a name="_Toc366080798"></a><a
name="_Toc366505138"></a><a name="_Toc366508507"></a><a name="_Toc366513008"></a><a
name="_Toc366574197"></a><a name="_Toc366577990"></a><a name="_Toc366578584"></a><a
name="_Toc366579176"></a><a name="_Toc366579767"></a><a name="_Toc366580359"></a><a
name="_Toc366580950"></a><a name="_Toc366581542"></a><a name="_Toc351915167"></a><a
name="_Toc361231206"></a><a name="_Toc361231732"></a><a name="_Toc362445030"></a><a
name="_Toc363908952"></a><a name="_Toc364463375"></a><a name="_Toc366077973"></a><a
name="_Toc366078592"></a><a name="_Toc366079578"></a><a name="_Toc366080190"></a><a
name="_Toc366080799"></a><a name="_Toc366505139"></a><a name="_Toc366508508"></a><a
name="_Toc366513009"></a><a name="_Toc366574198"></a><a name="_Toc366577991"></a><a
name="_Toc366578585"></a><a name="_Toc366579177"></a><a name="_Toc366579768"></a><a
name="_Toc366580360"></a><a name="_Toc366580951"></a><a name="_Toc366581543"></a><a
name="_Toc351915168"></a><a name="_Toc361231207"></a><a name="_Toc361231733"></a><a
name="_Toc362445031"></a><a name="_Toc363908953"></a><a name="_Toc364463376"></a><a
name="_Toc366077974"></a><a name="_Toc366078593"></a><a name="_Toc366079579"></a><a
name="_Toc366080191"></a><a name="_Toc366080800"></a><a name="_Toc366505140"></a><a
name="_Toc366508509"></a><a name="_Toc366513010"></a><a name="_Toc366574199"></a><a
name="_Toc366577992"></a><a name="_Toc366578586"></a><a name="_Toc366579178"></a><a
name="_Toc366579769"></a><a name="_Toc366580361"></a><a name="_Toc366580952"></a><a
name="_Toc366581544"></a><a name="_Toc351915169"></a><a name="_Toc361231208"></a><a
name="_Toc361231734"></a><a name="_Toc362445032"></a><a name="_Toc363908954"></a><a
name="_Toc364463377"></a><a name="_Toc366077975"></a><a name="_Toc366078594"></a><a
name="_Toc366079580"></a><a name="_Toc366080192"></a><a name="_Toc366080801"></a><a
name="_Toc366505141"></a><a name="_Toc366508510"></a><a name="_Toc366513011"></a><a
name="_Toc366574200"></a><a name="_Toc366577993"></a><a name="_Toc366578587"></a><a
name="_Toc366579179"></a><a name="_Toc366579770"></a><a name="_Toc366580362"></a><a
name="_Toc366580953"></a><a name="_Toc366581545"></a><a name="_Toc351915170"></a><a
name="_Toc361231209"></a><a name="_Toc361231735"></a><a name="_Toc362445033"></a><a
name="_Toc363908955"></a><a name="_Toc364463378"></a><a name="_Toc366077976"></a><a
name="_Toc366078595"></a><a name="_Toc366079581"></a><a name="_Toc366080193"></a><a
name="_Toc366080802"></a><a name="_Toc366505142"></a><a name="_Toc366508511"></a><a
name="_Toc366513012"></a><a name="_Toc366574201"></a><a name="_Toc366577994"></a><a
name="_Toc366578588"></a><a name="_Toc366579180"></a><a name="_Toc366579771"></a><a
name="_Toc366580363"></a><a name="_Toc366580954"></a><a name="_Toc366581546"></a><a
name="_Toc351915171"></a><a name="_Toc361231210"></a><a name="_Toc361231736"></a><a
name="_Toc362445034"></a><a name="_Toc363908956"></a><a name="_Toc364463379"></a><a
name="_Toc366077977"></a><a name="_Toc366078596"></a><a name="_Toc366079582"></a><a
name="_Toc366080194"></a><a name="_Toc366080803"></a><a name="_Toc366505143"></a><a
name="_Toc366508512"></a><a name="_Toc366513013"></a><a name="_Toc366574202"></a><a
name="_Toc366577995"></a><a name="_Toc366578589"></a><a name="_Toc366579181"></a><a
name="_Toc366579772"></a><a name="_Toc366580364"></a><a name="_Toc366580955"></a><a
name="_Toc366581547"></a><a name="_Toc351915172"></a><a name="_Toc361231211"></a><a
name="_Toc361231737"></a><a name="_Toc362445035"></a><a name="_Toc363908957"></a><a
name="_Toc364463380"></a><a name="_Toc366077978"></a><a name="_Toc366078597"></a><a
name="_Toc366079583"></a><a name="_Toc366080195"></a><a name="_Toc366080804"></a><a
name="_Toc366505144"></a><a name="_Toc366508513"></a><a name="_Toc366513014"></a><a
name="_Toc366574203"></a><a name="_Toc366577996"></a><a name="_Toc366578590"></a><a
name="_Toc366579182"></a><a name="_Toc366579773"></a><a name="_Toc366580365"></a><a
name="_Toc366580956"></a><a name="_Toc366581548"></a><a name="_Toc351915173"></a><a
name="_Toc361231212"></a><a name="_Toc361231738"></a><a name="_Toc362445036"></a><a
name="_Toc363908958"></a><a name="_Toc364463381"></a><a name="_Toc366077979"></a><a
name="_Toc366078598"></a><a name="_Toc366079584"></a><a name="_Toc366080196"></a><a
name="_Toc366080805"></a><a name="_Toc366505145"></a><a name="_Toc366508514"></a><a
name="_Toc366513015"></a><a name="_Toc366574204"></a><a name="_Toc366577997"></a><a
name="_Toc366578591"></a><a name="_Toc366579183"></a><a name="_Toc366579774"></a><a
name="_Toc366580366"></a><a name="_Toc366580957"></a><a name="_Toc366581549"></a><a
name="_Toc351915174"></a><a name="_Toc361231213"></a><a name="_Toc361231739"></a><a
name="_Toc362445037"></a><a name="_Toc363908959"></a><a name="_Toc364463382"></a><a
name="_Toc366077980"></a><a name="_Toc366078599"></a><a name="_Toc366079585"></a><a
name="_Toc366080197"></a><a name="_Toc366080806"></a><a name="_Toc366505146"></a><a
name="_Toc366508515"></a><a name="_Toc366513016"></a><a name="_Toc366574205"></a><a
name="_Toc366577998"></a><a name="_Toc366578592"></a><a name="_Toc366579184"></a><a
name="_Toc366579775"></a><a name="_Toc366580367"></a><a name="_Toc366580958"></a><a
name="_Toc366581550"></a><a name="_Toc351915175"></a><a name="_Toc361231214"></a><a
name="_Toc361231740"></a><a name="_Toc362445038"></a><a name="_Toc363908960"></a><a
name="_Toc364463383"></a><a name="_Toc366077981"></a><a name="_Toc366078600"></a><a
name="_Toc366079586"></a><a name="_Toc366080198"></a><a name="_Toc366080807"></a><a
name="_Toc366505147"></a><a name="_Toc366508516"></a><a name="_Toc366513017"></a><a
name="_Toc366574206"></a><a name="_Toc366577999"></a><a name="_Toc366578593"></a><a
name="_Toc366579185"></a><a name="_Toc366579776"></a><a name="_Toc366580368"></a><a
name="_Toc366580959"></a><a name="_Toc366581551"></a><a name="_Toc351915176"></a><a
name="_Toc361231215"></a><a name="_Toc361231741"></a><a name="_Toc362445039"></a><a
name="_Toc363908961"></a><a name="_Toc364463384"></a><a name="_Toc366077982"></a><a
name="_Toc366078601"></a><a name="_Toc366079587"></a><a name="_Toc366080199"></a><a
name="_Toc366080808"></a><a name="_Toc366505148"></a><a name="_Toc366508517"></a><a
name="_Toc366513018"></a><a name="_Toc366574207"></a><a name="_Toc366578000"></a><a
name="_Toc366578594"></a><a name="_Toc366579186"></a><a name="_Toc366579777"></a><a
name="_Toc366580369"></a><a name="_Toc366580960"></a><a name="_Toc366581552"></a><a
name="_Toc351915177"></a><a name="_Toc361231216"></a><a name="_Toc361231742"></a><a
name="_Toc362445040"></a><a name="_Toc363908962"></a><a name="_Toc364463385"></a><a
name="_Toc366077983"></a><a name="_Toc366078602"></a><a name="_Toc366079588"></a><a
name="_Toc366080200"></a><a name="_Toc366080809"></a><a name="_Toc366505149"></a><a
name="_Toc366508518"></a><a name="_Toc366513019"></a><a name="_Toc366574208"></a><a
name="_Toc366578001"></a><a name="_Toc366578595"></a><a name="_Toc366579187"></a><a
name="_Toc366579778"></a><a name="_Toc366580370"></a><a name="_Toc366580961"></a><a
name="_Toc366581553"></a><a name="_Toc351912691"></a><a name="_Toc351914712"></a><a
name="_Toc351915178"></a><a name="_Toc361231217"></a><a name="_Toc361231743"></a><a
name="_Toc362445041"></a><a name="_Toc363908963"></a><a name="_Toc364463386"></a><a
name="_Toc366077984"></a><a name="_Toc366078603"></a><a name="_Toc366079589"></a><a
name="_Toc366080201"></a><a name="_Toc366080810"></a><a name="_Toc366505150"></a><a
name="_Toc366508519"></a><a name="_Toc366513020"></a><a name="_Toc366574209"></a><a
name="_Toc366578002"></a><a name="_Toc366578596"></a><a name="_Toc366579188"></a><a
name="_Toc366579779"></a><a name="_Toc366580371"></a><a name="_Toc366580962"></a><a
name="_Toc366581554"></a><a name="_Toc351912692"></a><a name="_Toc351914713"></a><a
name="_Toc351915179"></a><a name="_Toc361231218"></a><a name="_Toc361231744"></a><a
name="_Toc362445042"></a><a name="_Toc363908964"></a><a name="_Toc364463387"></a><a
name="_Toc366077985"></a><a name="_Toc366078604"></a><a name="_Toc366079590"></a><a
name="_Toc366080202"></a><a name="_Toc366080811"></a><a name="_Toc366505151"></a><a
name="_Toc366508520"></a><a name="_Toc366513021"></a><a name="_Toc366574210"></a><a
name="_Toc366578003"></a><a name="_Toc366578597"></a><a name="_Toc366579189"></a><a
name="_Toc366579780"></a><a name="_Toc366580372"></a><a name="_Toc366580963"></a><a
name="_Toc366581555"></a><a name="_Toc322911605"></a><a name="_Toc322912144"></a><a
name="_Toc329092994"></a><a name="_Toc332701507"></a><a name="_Toc332701814"></a><a
name="_Toc332711608"></a><a name="_Toc332711916"></a><a name="_Toc332712218"></a><a
name="_Toc332724134"></a><a name="_Toc332724434"></a><a name="_Toc341102730"></a><a
name="_Toc347241463"></a><a name="_Toc347744656"></a><a name="_Toc348984439"></a><a
name="_Toc348984744"></a><a name="_Toc349037907"></a><a name="_Toc349038212"></a><a
name="_Toc349042700"></a><a name="_Toc349642122"></a><a name="_Toc351912693"></a><a
name="_Toc351914714"></a><a name="_Toc351915180"></a><a name="_Toc361231219"></a><a
name="_Toc361231745"></a><a name="_Toc362445043"></a><a name="_Toc363908965"></a><a
name="_Toc364463388"></a><a name="_Toc366077986"></a><a name="_Toc366078605"></a><a
name="_Toc366079591"></a><a name="_Toc366080203"></a><a name="_Toc366080812"></a><a
name="_Toc366505152"></a><a name="_Toc366508521"></a><a name="_Toc366513022"></a><a
name="_Toc366574211"></a><a name="_Toc366578004"></a><a name="_Toc366578598"></a><a
name="_Toc366579190"></a><a name="_Toc366579781"></a><a name="_Toc366580373"></a><a
name="_Toc366580964"></a><a name="_Toc366581556"></a><a name="_Toc254776199"></a><a
name="_Toc254776225"></a><span style='color:black;font-weight:normal'>9.1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Recoverable
Error</h3>
<p class=MsoNormal>This error type is used with the dfdl:assert annotation when
parsing to permit the checking of physical format constraints without terminating
a parse. For example, some formats have redundancy by having known lengths, as
well as delimiters. A Recoverable Error can be issued, using an assert to check
a physical length constraint when property lengthKind is 'delimited'. </p>
<p class=MsoNormal>Recoverable Errors are independent of validation, and when
resolving points of uncertainty, Recoverable Errors are ignored.</p>
<h2><a name="_Ref39164191"></a><a name="_Toc62570108">9.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DFDL
Data Syntax Grammar</a></h2>
<p class=nobreak>Data in a format describable via a DFDL schema obeys the
grammar given here. A given DFDL schema is read by the DFDL processor to
provide specific meaning to the terminals and decisions in this grammar. </p>
<p class=MsoNormal>The bits of the data are divided into two broad categories:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Content </li>
<li class=MsoNormal>Framing</li>
</ol>
<p class=MsoNormal>The content is the bits of data that are interpreted to
compute a logical value. </p>
<p class=nobreak><i>Framing</i> is the term used to describe the delimiters,
length fields, and other parts of the data stream which are present and may be
necessary to determine the length or position of the content of DFDL Infoset
items. </p>
<p class=nobreak>Note that sometimes the framing is not strictly necessary for
parsing, but adds useful redundancy to the data format, allowing corrupt data
to be more robustly detected, and sometimes the framing adds human readability
to the data format. </p>
<p class=MsoNormal><a name="_Toc322911607"></a><a name="_Toc322912146"></a><a
name="_Toc329092996"></a><a name="_Toc332701509"></a><a name="_Toc332701816"></a><a
name="_Toc332711610"></a><a name="_Toc332711918"></a><a name="_Toc332712220"></a><a
name="_Toc332724136"></a><a name="_Toc332724436"></a><a name="_Toc341102732"></a><a
name="_Toc347241465"></a><a name="_Toc347744658"></a><a name="_Toc348984441"></a><a
name="_Toc348984746"></a><a name="_Toc349037909"></a><a name="_Toc349038214"></a>In
the grammar tables below, the terminal symbols are shown in bold italic font.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Productions</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>Document <b>= SimpleElement | ComplexElement</b></p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>SimpleElement = SimpleLiteralNilElementRep |
SimpleEmptyElementRep | </p>
<p class=TableContents>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
SimpleNormalRep </p>
<p class=TableContents>SimpleEnclosedElement = SimpleElement |
AbsentElementRep </p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>ComplexElement = ComplexLiteralNilElementRep |
ComplexNormalRep | </p>
<p class=TableContents>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ComplexEmptyElementRep
</p>
<p class=TableContents>ComplexEnclosedElement = ComplexElement |
AbsentElementRep </p>
<p class=TableContents>&nbsp;</p>
<p class=MsoNormal>EnclosedElement = SimpleEnclosedElement |
ComplexEnclosedElement</p>
<p class=TableContents>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>AbsentElementRep = <b><i>Absent</i></b></p>
<p class=TableContents>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>SimpleEmptyElementRep = &nbsp;EmptyElementLeftFraming EmptyElementRightFraming</p>
<p class=TableContents>ComplexEmptyElementRep = &nbsp;EmptyElementLeftFraming
EmptyElementRightFraming</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>EmptyElementLeftFraming = LeadingAlignment <b><i>EmptyElementInitiator
</i></b>PrefixLength</p>
<p class=TableContents>EmptyElementRightFraming = <b><i>EmptyElementTerminator</i></b>
TrailingAlignment</p>
<p class=TableContents>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>SimpleLiteralNilElementRep = NilElementLeftFraming [<b><i>NilLiteralCharacters</i></b>
| </p>
<p class=TableContents>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
NilElementLiteralContent] NilElementRightFraming</p>
<p class=TableContents>ComplexLiteralNilElementRep = NilElementLeftFraming <b><i>NilLiteralValue</i></b></p>
<p class=TableContents>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NilElementRightFraming</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>NilElementLeftFraming = LeadingAlignment <b><i>NilElementInitiator
</i></b>PrefixLength</p>
<p class=TableContents>NilElementRightFraming = <b><i>NilElementTerminator</i></b>
TrailingAlignment</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>NilElementLiteralContent = <b><i>LeftPadding</i></b> <b><i>NilLiteralValue
</i></b>RightPadOrFill</p>
<p class=TableContents>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>SimpleNormalRep = LeftFraming PrefixLength SimpleContent
RightFraming</p>
<p class=TableContents>ComplexNormalRep = LeftFraming PrefixLength
ComplexContent RightFraming</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>LeftFraming = LeadingAlignment <b><i>Initiator</i></b>
</p>
<p class=TableContents>RightFraming = <b><i>Terminator</i></b>
TrailingAlignment</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>PrefixLength = SimpleContent | PrefixPrefixLength
SimpleContent</p>
<p class=TableContents>PrefixPrefixLength = SimpleContent </p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>SimpleContent =&nbsp;&nbsp; <b><i>LeftPadding</i></b>
[ SimpleLogicalValue ]&nbsp; RightPadOrFill </p>
<p class=TableContents>SimpleLogicalValue = <b><i>SimpleNormalValue</i></b> |
<b><i>NilLogicalValue</i></b></p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>ComplexContent = ComplexValue <b><i>ElementUnused</i></b></p>
<p class=TableContents>ComplexValue = Sequence | Choice</p>
<p class=TableContents>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>Sequence = &nbsp;LeftFraming SequenceContent
RightFraming </p>
<p class=TableContents>SequenceContent = [ <b><i>PrefixSeparator </i></b>&nbsp;EnclosedContent
[ <b><i>Separator</i></b> EnclosedContent ]* </p>
<p class=TableContents>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b><i>PostfixSeparator</i></b> ]</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>Choice = LeftFraming<b><i> </i></b>ChoiceContent
RightFraming</p>
<p class=TableContents>ChoiceContent = [ EnclosedContent ] <b><i>ChoiceUnused</i></b></p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>EnclosedContent = [ EnclosedElement | Array | Sequence
| Choice ]</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>Array = [ EnclosedElement [ <b><i>Separator</i></b>
EnclosedElement ]*&nbsp; [ <b><i>Separator</i></b> StopValue] ]</p>
<p class=TableContents>&nbsp;</p>
<p class=TableContents>StopValue = SimpleElement</p>
<p class=TableContents>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents style='page-break-after:avoid'>&nbsp;</p>
<p class=TableContents style='page-break-after:avoid'>LeadingAlignment = <b><i>LeadingSkip</i></b>
<b><i>AlignmentFill</i></b></p>
<p class=TableContents style='page-break-after:avoid'>TrailingAlignment = <b><i>TrailingSkip</i></b></p>
<p class=TableContents style='page-break-after:avoid'>RightPadOrFill = <b><i>RightPadding</i></b>
| <b><i>RightFill</i></b> | <b><i>RightPadding RightFill</i></b></p>
<p class=TableContents style='page-break-after:avoid'>&nbsp;</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 11 DFDL Grammar Productions</p>
<p class=MsoNormal>XML Schema and DFDL properties are used to control
constraints on the terminals of the above grammar, as well as repetition (the
&quot;*&quot; operator), and alternatives (the &quot;|&quot; operator). For a
given set of XML Schema and DFDL properties, and prior data, any terminal may
be allowed to be length zero, to contain specific data, or to contain a variety
of different admissible data.&nbsp; </p>
<p class=MsoNormal>Some definitions are needed to cover the range of
representations that are possible in the data stream for an occurrence of an element.
The representations are:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Nil Representation</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Empty Representation</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Normal Representation</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Absent Representation</p>
<p class=MsoNormal>These additional concepts are also defined:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Zero-Length Representation</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Missing</p>
<p class=MsoNormal>These definitions are with respect to the grammar above, and
they do reference some DFDL properties necessary for their definitions. These
properties are defined in Sections 11 and beyond. </p>
<p class=MsoNormal>Some examples follow the definitions.</p>
<h3><a name="_Ref50556410"></a><a name="_Toc62570109"><span style='color:black;
font-weight:normal'>9.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Nil Representation</a></h3>
<p class=MsoNormal>An element occurrence has a <em><span style='font-family:
"Arial",sans-serif'>nil representation</span></em> if the element declaration
has XSD nillable property 'true' and the occurrence either:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>conforms to the grammar for SimpleNilLiteralElementRep or
ComplexNilLiteralElementRep. Specifically, the <b><i>NilElementInitiator</i></b>
and <b><i>NilElementTerminator</i></b> regions must be conformant with
property dfdl:nilValueDelimiterPolicy<a href="#_ftn14" name="_ftnref14"
title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[14]</span></span></span></a>.
(If non-conformant it is not a Processing Error and the representation is
not nil).</li>
<li class=MsoNormal>conforms to the grammar for SimpleNormalRep and its SimpleLogicalValue
is <b><i>NilLogicalValue</i></b>. </li>
</ul>
<p class=MsoNormal>The LeadingAlignment, TrailingAlignment, PrefixLength
regions may be present.</p>
<h3><a name="_Ref357760880"></a><a name="_Toc62570110"><span style='color:black;
font-weight:normal'>9.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Empty Representation</a></h3>
<p class=MsoNormal>An element occurrence has an <em><span style='font-family:
"Arial",sans-serif'>empty representation</span></em> if the occurrence does not
have a nil representation and it conforms to the grammar for
SimpleEmptyElementRep or ComplexEmptyElementRep. Specifically, the <b><i>EmptyElementInitiator</i></b>
and <b><i>EmptyElementTerminator</i></b> regions must be conformant with
dfdl:emptyValueDelimiterPolicy<a href="#_ftn15" name="_ftnref15" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[15]</span></span></span></a>
and the occurrence's SimpleContent or ComplexContent region in the data must be
of length zero. (If non-conformant it is not a Processing Error and the representation
is not empty).</p>
<p class=MsoNormal>LeadingAlignment, TrailingAlignment, PrefixLength regions
may be present. </p>
<p class=MsoNormal>The <i>empty representation</i> is special in DFDL because
when parsing it is used to determine when default values are created in the
Infoset. The empty representation can require initiators or terminators be
present to enable data formats which explicitly distinguish occurrences with
empty string/hexBinary values from occurrences that are <i>missing </i>or are<i>
absent</i>. See Section <span class=MsoHyperlink>9.4</span> Element Defaults below about default values. Hence, the empty representation might not
be zero-length. it may require specific non-zero-length syntax in the data
stream. </p>
<p class=MsoNormal>The empty representation is not possible for fixed-length
elements with a non-zero length.</p>
<h3><a name="_Toc62570111"><span style='color:black;font-weight:normal'>9.2.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Normal
Representation</a></h3>
<p class=MsoNormal>An element occurrence has a normal representation if the
occurrence does not have the nil representation or the empty representation and
it conforms to the grammar for SimpleNormalRep or ComplexNormalRep. </p>
<p class=MsoNormal>Note that it is possible for the normal representation to be
of zero length, but this can only happen when zero-length is not the nil nor
empty representation, and the simple type is xs:string or xs:hexBinary. For all
other simple types, the normal representation cannot be zero length. </p>
<h3><a name="_Toc62570112"><span style='color:black;font-weight:normal'>9.2.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Absent
Representation</a></h3>
<p class=MsoNormal>Often,it is possible to know the location where an element
or group's representation would be in the data based on the delimiters of an
enclosing group. (An example: if there are adjacent delimiters of an enclosing
sequence.) When this location in the data, which is of zero length, cannot be a
nil, empty, or normal representation, then it is said to have <i>absent
representation</i>, or &quot;the representation is absent&quot;. </p>
<p class=MsoNormal>More formally, an element occurrence has an <em><span
style='font-family:"Arial",sans-serif;font-style:normal'>absent representation</span></em>
if the occurrence does not have a nil or empty or normal representation, and it
conforms to the grammar for AbsentElementRep. Specifically, the occurrence's
representation in the data stream must be of length zero. Consequently, the
Initiator, Terminator, LeadingAlignment, TrailingAlignment, PrefixLength
regions must not be present. </p>
<p class=MsoNormal>As an example of an absent representation: during unparsing,
if an optional element does not have an item in the Infoset then nothing is
output. However, if a separator of an enclosing structure is subsequently
output as the immediate next thing, then a subsequent parse of the element may
return a representation of length zero. If this happens, and this zero-length
representation does not conform to any of the nil representation, the empty
representation, or the normal representation, then it is the absent
representation, and it behaves <em><span style='font-family:"Arial",sans-serif'>as
if the element occurrence is 'missing'</span></em>. (The term 'missing' is
defined below.)</p>
<h3><a name="_Ref365390854"></a><a name="_Ref365390858"></a><a
name="_Toc62570113"><span style='color:black;font-weight:normal'>9.2.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Zero-length
Representation</a></h3>
<p class=MsoNormal>The term <i>zero-length representation</i> is used to describe
the situations where any of the above representations turn out to be of length
zero due to specific combinations of data type and format properties: </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The nil representation can be a zero-length representation if
dfdl:nilValue is &#8216;%ES;&#8217; or &#8216;%WSP*;&#8217; appearing on its
own as a literal nil value and there is no framing or framing is suppressed by
dfdl:nilValueDelimiterPolicy.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The empty representation can be a zero-length representation if there
is no framing or framing is suppressed by dfdl:emptyValueDelimiterPolicy.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The normal representation can be a zero-length representation if
the type is xs:string or xs:hexBinary and there is no framing. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The absent representation always has a zero-length
representation. </p>
<p class=MsoNormal>If the nil representation may be zero-length, then the
absent representation cannot occur because zero-length is interpreted as nil
representation.</p>
<p class=MsoNormal>If the nil representation may not be zero length, but the
empty representation is zero-length, then the absent representation cannot
occur because zero-length is interpreted as the empty representation.</p>
<p class=MsoNormal>If the nil and empty representations cannot be zero-length,
but the normal representation may be zero length then the absent representation
cannot occur because zero length is interpreted as a normal representation.</p>
<p class=MsoNormal>If the nil representation may not be zero-length, the empty
representation may not be zero-length, and the normal representation may not be
zero-length, then a zero-length representation is the absent representation, or
&quot;is absent&quot;.</p>
<h3><a name="_Toc62570114"><span style='color:black;font-weight:normal'>9.2.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Missing</a></h3>
<p class=MsoNormal>When parsing, an element occurrence is missing if it does
not have nil, empty, or normal representations, or it has the absent
representation. </p>
<p class=MsoNormal>When parsing, the term missing really covers two situations.
First, it subsumes absent representation. Secondly it applies when an element
does not have a representation at all in the data stream, that is, when there
are insufficient constructs in the data stream to determine the location of the
representation of the element; hence, none of the concepts above apply. This is
made clearer in the examples below. If an element occurrence is missing when
parsing, no item is ever added to the Infoset.</p>
<p class=MsoNormal>When unparsing, an element occurrence is missing if there is
no item in the Infoset. For a required element occurrence, it is this condition
that can trigger the creation of a default value in the augmented Infoset. See
Section <span class=MsoHyperlink>9.4</span> <span
class=InternetLink>Element Defaults</span> below about default values. For an
optional element occurrence, no item is ever added to the augmented Infoset nor
any representation ever output in the data stream.</p>
<h3><a name="_Toc62570115"><span style='color:black;font-weight:normal'>9.2.7<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Examples
of Missing and Empty Representation</a></h3>
<p class=MsoNormal>The following examples illustrate missing and empty
representation.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator=&quot;,&quot;
dfdl:terminator=&quot;@&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:separatorSuppressionPolicy=&quot;trailingEmpty&quot; ...&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;A&quot; type=&quot;xs:string&quot;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;B&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfdl:lengthKind=&quot;delimited&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;C&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>In data stream '<span class=CodeblockChar0><span lang=EN-GB
style='font-size:9.0pt;color:black'>aaa,@</span></span>' element B has the
empty representation, and element C does not have a representation so is
missing.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator=&quot;,&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:separatorSuppressionPolicy=&quot;trailingEmpty&quot;...&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;A&quot; type=&quot;xs:string&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot; dfdl:initiator=&quot;A:&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:emptyValueDelimiterPolicy=initiator&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;B&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot; dfdl:initiator=&quot;B:&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfdl:emptyValueDelimiterPolicy=&quot;initiator&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;C&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot; dfdl:initiator=&quot;C:&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:emptyValueDelimiterPolicy=initiator&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>In data stream '<span class=CodeCharacter>A:aaaa,C:cccc</span>'
element B does not have a representation at all, so is missing.</p>
<p class=MsoNormal>In data stream '<span class=CodeCharacter>A:aaaa,B:,C:cccc</span>'
element B has the empty representation. The format definition requires element
B to have its initiator in order to indicate the empty representation. </p>
<p class=MsoNormal>In the data stream '<span class=CodeCharacter>A:aaaa,,C:cccc</span>'
element B has the absent representation, because the processor is able to tell
where element B would appear, but the syntax there does not contain the needed
initiator delimiter; hence, it does not satisfy any of nil, empty, or normal
representation. Since the processor knows its location, and the data stream
there (between the two separators) is zero-length, it is the absent
representation, and so is missing.</p>
<h3><a name="_Toc62570116"><span style='color:black;font-weight:normal'>9.2.8<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Round
Trip Ambiguities</a></h3>
<p class=MsoNormal>The overlapping nature of the possible representations:
normal, empty, nil, and absent, creates a number of ambiguities where taking an
Infoset, unparsing it, and reparsing it results in a second Infoset that is not
the same as the original.&nbsp; However, taking the second Infoset, unparsing
it, and reparsing it, results in a third Infoset which is the same as the
second.</p>
<p class=MsoNormal>When unparsing, if a string Infoset item happens to contain
a string that matches either one of the dfdl:nilValue list values or the
default value, it is not given any special treatment. The string's characters
are output, or if the value is the empty string, zero length content is output.
(In both cases along with an initiator or terminator if applicable.) This
creates an ambiguity where one can unparse an Infoset item which has member <b>[nilled]</b>
true, but when reparsed produces an Infoset item which has member <b>[nilled]</b>
false. </p>
<p class=MsoNormal>These ambiguities are natural and unavoidable. For example,
if the dfdl:nilValue is the 3-character string &quot;nil&quot;, then
encountering the characters &quot;nil&quot; in the data stream results in an
Infoset item with <b>[nilled]</b> true. If a processor unparsed a string Infoset
item with contents of the 3 characters &quot;nil&quot;, this is output as the
letters &quot;nil&quot;, which on parse does not produce a string with the
characters &quot;nil&quot;, but rather an Infoset item with no data value and
member <b>[nilled]</b> true. </p>
<p class=MsoNormal>To avoid this issue, one can use validation, along with a
pattern that prevents the string from matching any of the nil values. </p>
<h2><a name="_Ref37335786"></a><a name="_Ref37335737"></a><a name="_Toc62570117">9.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Parsing
Algorithm</a></h2>
<p class=nobreak>A DFDL parser proceeds by determining the existence of
occurrences of schema components. It does this by examining the data and the
schema, to:</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'>a)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Establish
representation</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'>b)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>Resolve points
of uncertainty</p>
<p class=MsoNormal>These two activities are defined below. They are mutually
recursive in the expected way as a DFDL schema is a recursive nest of schema
components. </p>
<p class=MsoNormal>The parsing algorithm described here has many aspects which depend
on the definitions of numerous DFDL properties. The properties are defined in sections
<a href="#_Overview:_Core_Representation"><span
class=InternetLink>10</span></a> and beyond. </p>
<p class=nobreak>Establishing the representation of an occurrence of a schema
component and resolving points of uncertainty involve the concepts of <i>known-to-exist</i>
and <i>known-not-to-exist</i>. </p>
<h3><a name="_Toc62570118"><span style='color:black;font-weight:normal'>9.3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Known-to-exist
and Known-not-to-exist</a></h3>
<h4><span style='color:black;font-weight:normal'>9.3.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Known-to-exist</h4>
<p class=MsoNormal>An occurrence of a schema component is said to be <i>known-to-exist</i>
when any of these positive determinations hold:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>There is a
dfdl:discriminator<a href="#_ftn16" name="_ftnref16" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[16]</span></span></span></a>
applying to the component and its expression evaluates to true or regular
expression pattern matches.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>The
component is a direct child of an xs:sequence or xs:choice with dfdl:initiatedContent<a
href="#_ftn17" name="_ftnref17" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[17]</span></span></span></a>
'yes' and a dfdl:initiator defined for the component is found.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>The
component is a direct child of an xs:choice with dfdl:choiceDispatchKey<a
href="#_ftn18" name="_ftnref18" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[18]</span></span></span></a>
and the result of the dfdl:choiceDispatchKey expression matches one of the
dfdl:choiceBranchKey property values of the child. </p>
<p class=MsoNormal>If none of those hold because they are not applicable then
the occurrence is still known-to-exist if ALL of the following hold, and no Processing
Error occurs during their determination:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>When there are dfdl:assert<a href="#_ftn19"
name="_ftnref19" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[19]</span></span></span></a>
statements with failureType 'processingError' on the component, all their
expressions evaluate to true or their regular expression patterns match.</li>
<li class=MsoNormal>It has nil, empty, or normal representation.</li>
<li class=MsoNormal>When it has normal representation the content of the
representation is convertible to the element type without error.</li>
</ol>
<p class=MsoNormal>Note that Validation Errors or Recoverable Errors do not
prevent determination that a component is known-to-exist.</p>
<h4><span style='color:black;font-weight:normal'>9.3.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Processing Error After Determining Known-to-exist</h4>
<p class=MsoNormal>Note that it is possible for an occurrence of a schema
component to be known-to-exist due to a positive discrimination, but then
subsequently a Processing Error occurs when evaluating a statement annotation
such as a dfdl:assert or a dfdl:setVariable, or a Processing Error occurs when
determining the representation, or in the case of normal representation and
simple type, when converting that representation's content into a value of the
type. This Processing Error does not change the fact that the schema component
was determined to be known-to-exist. This is important in the discussion in
Section 9.3.3, <span
class=InternetLink>Resolving Points of Uncertainty</span> below.</p>
<h4><span style='color:black;font-weight:normal'>9.3.1.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Known-not-to-exist</h4>
<p class=MsoNormal style='text-autospace:none'>An occurrence of a schema
component is <em><span style='font-family:"Arial",sans-serif'>known-not-to-exist</span></em>
when any of these <em><span style='font-family:"Arial",sans-serif;font-style:
normal'>negative determinations</span></em><i> </i>holds:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal style='text-autospace:none'>There is a dfdl:discriminator
applying to the component and its expression evaluates to false or regular
expression pattern fails to match, or a Processing Error occurs while
processing the dfdl:discriminator.</li>
<li class=MsoNormal style='text-autospace:none'>The component is a direct
child of an xs:sequence or xs:choice with dfdl:initiatedContent 'yes' and
an initiator defined for the component is not found.</li>
<li class=MsoNormal style='text-autospace:none'>The component is a direct
child of an xs:choice with dfdl:choiceDispatchKey and the result of the
dfdl:choiceDispatchKey expression does not match any of the
dfdl:choiceBranchKey property values of the child.</li>
<li class=MsoNormal style='text-autospace:none'>The component is an element of
complex type, the model group of which is a sequence group, and the
sequence group is known not to exist.</li>
</ol>
<p class=MsoNormal style='text-autospace:none'>If none of those hold because
they are not applicable, then a schema component is known-not-to-exist when any
of the following hold:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal style='text-autospace:none'>The occurrence is missing </li>
<li class=MsoNormal style='text-autospace:none'>There is a dfdl:assert with
failureType 'processingError' on the component and its expression
evaluates to false or its regular expression pattern fails to match, or a Processing
Error occurs while processing the dfdl:assert.</li>
<li class=MsoNormal style='text-autospace:none'>A Processing Error occurs when
parsing the component. Processing Errors include, but are not limited to,
inability to identify any of nil, empty, normal or absent representations,
or failure to convert a value to the built-in logical type. </li>
</ol>
<p class=MsoNormal>Note that Validation Errors or Recoverable Errors do not
cause a component to be known-not-to-exist.</p>
<p class=MsoNormal>Note: based on the above, when processing a sequence for
which a separator is defined, the presence of a match in the data for the
separator is not sufficient to cause the parser to determine that an associated
component is known-to-exist. See Section <span
class=MsoHyperlink>14.2</span> <span
class=InternetLink>Sequence Groups with Separators</span>&nbsp; for details.</p>
<h3><a name="_Ref37169058"></a><a name="_Toc62570119"><span style='color:black;
font-weight:normal'>9.3.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Establishing Representation</a></h3>
<p class=MsoNormal>Unless an element occurrence is known-not-to-exist, the
parsing algorithm establishes if it has the nil, empty, normal, or absent
representation. </p>
<p class=MsoNormal>The first step is to see if the SimpleContent or
ComplexContent region is of length zero as a first approximation. This is
dfdl:lengthKind dependent.</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>explicit =&gt; length is zero (either fixed or from
expression evaluation) </li>
<li class=MsoNormal>prefixed =&gt; length given by the prefix is zero</li>
<li class=MsoNormal>implicit (simple) =&gt; length is zero<a href="#_ftn20"
name="_ftnref20" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[20]</span></span></span></a><span
class=MsoFootnoteReference> </span></li>
<li class=MsoNormal>implicit (complex) =&gt; not possible.&nbsp; </li>
<li class=MsoNormal>delimited =&gt; length is zero (in scope delimiter is
immediately encountered) </li>
<li class=MsoNormal>pattern =&gt; pattern returns zero length match </li>
<li class=MsoNormal>endOfParent =&gt; already positioned at parent's end so
length is zero </li>
</ul>
<h4><span style='color:black;font-weight:normal'>9.3.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple element</h4>
<p class=MsoNormal>If the result is length zero as described above, the
representation is then established by checking, in order, for:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>nil representation (if %ES; or %WSP*; on its own is a
literal nil value). </li>
<li class=MsoNormal>empty representation.</li>
<li class=MsoNormal>normal representation (xs:string or xs:hexBinary only)</li>
<li class=MsoNormal>absent representation (if none of the prior
representations apply). </li>
</ol>
<p class=MsoNormal>If the result is not length zero, the representation is then
established by checking, in order, for:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>nil representation (as a literal nil value)</li>
<li class=MsoNormal>nil representation (as a logical nil value)</li>
<li class=MsoNormal>normal representation</li>
</ol>
<h4><span style='color:black;font-weight:normal'>9.3.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex element</h4>
<p class=MsoNormal>If the result is length zero as described above, the
representation is then established by checking for:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>nil representation (if %ES; is a literal nil value).<a
href="#_ftn21" name="_ftnref21" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[21]</span></span></span></a>
</li>
</ul>
<p class=MsoNormal>To establish any other representations requires that the
parser descends into the complex type for the element, and returns successfully
(that is, no unsuppressed Processing Error occurs). If the result is zero bits
consumed, the representation is then established by checking, in order, for:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>empty representation.</li>
<li class=MsoNormal>absent representation (if none of the prior
representations apply).</li>
</ol>
<p class=MsoNormal>Otherwise the element has normal representation.</p>
<p class=MsoNormal>Note: The DFDL parser SHALL NOT recursively parse the schema
components inside a complex element when it has already established that the
element occurrence is missing<a href="#_ftn22" name="_ftnref22" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[22]</span></span></span></a>.
</p>
<h3><a name="_Ref362445434"></a><a name="_Ref362445435"></a><a
name="_Ref362445436"></a><a name="_Ref362446233"></a><a name="_Ref362446248"></a><a
name="_Ref362446661"></a><a name="_Ref362446685"></a><a name="_Ref362446808"></a><a
name="_Toc62570120"><span style='color:black;font-weight:normal'>9.3.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Resolving
Points of Uncertainty</a></h3>
<p class=MsoNormal>A point of uncertainty occurs when there is more than one
schema component that might be applied at the current point in the data stream.
Points of uncertainty can be nested. </p>
<p class=MsoNormal>The parser resolves these points of uncertainty by way of a
set of construct-specific rules given below along with determining whether
schema components are known-to-exist or known-not-to-exist. For some of these
constructs, whether there is an actual point of uncertainty depends on the
representation of the constructs in the data.</p>
<p class=MsoNormal>An xs:choice is always a point of uncertainty. It is
resolved sequentially, or by direct dispatch. Sequential choice resolution
occurs by parsing each choice branch in schema definition order until one is
known-to-exist. It is a Processing Error if none of the choice branches are
known-to-exist. Direct-dispatch choice resolution occurs by matching the value
of the dfdl:choiceDispatchKey property to the value of one of the dfdl:choiceBranchKey
property values of one of the choice branches. It is a Processing Error if none
of the choice branches have a matching value in their dfdl:choiceBranchKey
property.</p>
<p class=MsoNormal>An element in an unordered xs:sequence is always a point of
uncertainty. It is resolved by parsing for the child components of the sequence
in schema definition order at each point in the data stream where a component
can exist until the required number of occurrences of each child component is
known-to-exist or the sequence is terminated by delimiters or specified length.</p>
<p class=MsoNormal>An element in a sequence with one or more floating elements
is always a point of uncertainty. It is resolved by parsing for the expected
element at that point in the data stream. If the expected element is known-not-to-exist
then an occurrence of each floating element is parsed in schema definition
order. </p>
<p class=MsoNormal>When parsing an array or optional element, points of
uncertainty only occur for certain values of dfdl:occursCountKind<a
href="#_ftn23" name="_ftnref23" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[23]</span></span></span></a>,
as follows:</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:<span style='color:black'>occursCountKind</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Details of Point of
Uncertainty</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>fixed</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>No point of uncertainty (XSD maxOccurs occurrences
expected).</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>implicit</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>A point of uncertainty exists after XSD minOccurs
occurrences are found and until XSD maxOccurs occurrences are found.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>parsed</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>A point of uncertainty exists for all occurrences</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>expression</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>No point of uncertainty (dfdl:occursCount<a
href="#_ftn24" name="_ftnref24" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[24]</span></span></span></a>
values are expected)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>stopValue</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>No point of uncertainty (The stop value must always be
present, even when XSD minOccurs is 0). </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 12: Points of Uncertainty and dfdl:occursCountKind</p>
<p class=MsoNormal>An optional element point of uncertainty is resolved by
parsing the element until it is either known-to-exist or known-not-to-exist.
Whether an optional element is an actual point of uncertainty depends on
property dfdl:occursCountKind as described above. </p>
<p class=MsoNormal>For an array element, the point of uncertainty is resolved
for each occurrence separately by parsing the occurrence until it is either
known-to-exist or known-not-to-exist.</p>
<h4><span style='color:black;font-weight:normal'>9.3.3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Nested Points of Uncertainty</h4>
<p class=MsoNormal>A point of uncertainty can be resolved because a schema
component has been determined to be known-to-exist due to positive
discrimination. In that case, if a subsequent Processing Error occurs when
completing the parsing of that schema component this causes the next enclosing
schema component surrounding this point of uncertainty to be determined to be
known-not-to exist. </p>
<p class=MsoNormal>For example, when parsing an element occurrence for an array
with a variable number of occurrences, a positive discrimination tells the
parser that the currently-being-parsed occurrence is known-to-exist. If a
subsequent Processing Error occurs while completing the parsing of this
occurrence, then the entire array is then known-not-to-exist. </p>
<p class=MsoNormal>Another example is a choice. If a discriminator resolves the
choice point of uncertainty to the first of the choice's alternatives, a
subsequent Processing Error causes the entire choice construct to be determined
to be known-not-to-exist.</p>
<p class=MsoNormal>This causes the next enclosing point of uncertainty to try
the next possible alternative, or if there isn't one, causes an unsuppressed Processing
Error.&nbsp; </p>
<p class=MsoNormal>The behavior of a DFDL processor on an unsuppressed Processing
Error is not specified, but it is allowable for implementations to abort
further parsing. Any other behavior is implementation-defined.</p>
<p class=MsoNormal>A discriminator always resolves the nearest enclosing point
of uncertainty that is unresolved. If more than one discriminator is evaluated,
the first resolves the nearest enclosing point of uncertainty, the second the
next nearest enclosing point of uncertainty, and so on. </p>
<h2><a name="_Ref362445437"></a><a name="_Ref362445438"></a><a
name="_Ref362445513"></a><a name="_Ref362445526"></a><a name="_Ref362447391"></a><a
name="_Ref351914183"></a><a name="_Ref351914483"></a><a name="_Toc62570121">9.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Element
Defaults</a></h2>
<p class=nobreak>A DFDL processor can create element defaults in the Infoset
for both simple and complex elements. This happens quite differently for
parsing and unparsing as is explained in this section.</p>
<h3><a name="_Toc62570122"><span style='color:black;font-weight:normal'>9.4.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Definitions</a></h3>
<h4><span style='color:black;font-weight:normal'>9.4.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Default Value </h4>
<p class=nobreak>A simple element has a default value if any of these are true:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>The XSD default property exists. The default value is the
XSD default property's value.</li>
<li class=MsoNormal>The XSD fixed<a href="#_ftn25" name="_ftnref25" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[25]</span></span></span></a>
property exists. The default value is the XSD fixed property's value.</li>
<li class=MsoNormal>The element has XSD nillable is 'true' and
dfdl:useNilForDefault<a href="#_ftn26" name="_ftnref26" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[26]</span></span></span></a>
is 'yes'. The corresponding Infoset item has the <b>[nilled]</b> member
true, and the <b>[dataValue]</b> member has no value.</li>
</ol>
<h4><span style='color:black;font-weight:normal'>9.4.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Required/Optional Occurrence</h4>
<p class=MsoNormal>An occurrence of an element with an index less than or equal
to XSD minOccurs is said to be a <i>required occurrence</i>.</p>
<p class=MsoNormal>An occurrence of an element with an index greater than XSD
minOccurs is said to be an <i>optional occurrence</i>.</p>
<h3><a name="_Ref366081769"></a><a name="_Toc62570123"><span style='color:black;
font-weight:normal'>9.4.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Element </a><a name="_Ref351913987"></a><a name="_Ref351914003"></a><a
name="_Ref362447158">Defaults When Parsing</a> </h3>
<p class=MsoNormal>If <em><span style='font-family:"Arial",sans-serif'>empty</span></em>
representation is established when parsing, the possibility of applying an
element default arises. Essentially, if a required occurrence of an element has
empty representation, then an element default is applied if present, though
there are a couple of variations on this rule. Remember that in order to have
established empty representation, the occurrence must be compliant with the
dfdl:emptyValueDelimiterPolicy for the element, and for a complex element the
parser must have descended into the type and returned with no unsuppressed Processing
Error.</p>
<p class=MsoNormal>The rules for applying element defaults are not dependent on
dfdl:occursCountKind. However, if a required occurrence does not produce an
item in the Infoset after the rules have been applied, then whether it is a Processing
Error or a Validation Error (if validation is enabled) <em><span
style='font-family:"Arial",sans-serif'>does</span></em> depend on
dfdl:occursCountKind (see Section <span
class=MsoHyperlink>16.1</span> <span
class=InternetLink>dfdl:occursCountKind property</span>). </p>
<p class=MsoNormal>The sections below indicate when an item is added to the Infoset,
and whether it has a default or other value. If there is no Processing Error
then regardless of whether an item is added to the Infoset or not, any
side-effects due to dfdl:discriminator statements evaluating to true, or
dfdl:setVariable statements, are retained.</p>
<p class=MsoNormal>Assuming the empty representation has been established,
there are three cases to consider: </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple element (not type xs:string or xs:hexBinary)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple element (type xs:string or xs:hexBinary)</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex element</p>
<p class=MsoNormal>Each is described in a section below.</p>
<h4><span style='color:black;font-weight:normal'>9.4.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple element (not xs:string and not xs:hexBinary)</h4>
<p class=MsoNormal>Required occurrence: If the element has a default value then
an item is added to the Infoset using the default value, otherwise nothing is
added to the Infoset. </p>
<p class=MsoNormal>Optional occurrence: Nothing is added to the Infoset. </p>
<h4><span style='color:black;font-weight:normal'>9.4.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple element (xs:string or xs:hexBinary)</h4>
<p class=MsoNormal>Required occurrence: If the element has a default value then
an item is added to the Infoset using the default value, otherwise an item is
added to the Infoset using empty string (type xs:string) or empty hexBinary
(type xs:hexBinary) as the value. </p>
<p class=MsoNormal>Optional occurrence: if dfdl:emptyValueDelimiterPolicy is
applicable and is not 'none'<a href="#_ftn27" name="_ftnref27" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[27]</span></span></span></a>,
then an item is added to the Infoset using empty string (type xs:string) or
empty hexBinary (type xs:hexBinary) as the value, otherwise nothing is added to
the Infoset. </p>
<p class=MsoNormal>Note: To prevent unwanted empty strings or empty hexBinary
values from being added to the Infoset, use XSD minLength &gt; '0' and a
dfdl:assert that uses the dfdl:checkConstraints()<a href="#_ftn28"
name="_ftnref28" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[28]</span></span></span></a>
function, to raise a Processing Error.</p>
<h4><span style='color:black;font-weight:normal'>9.4.2.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex element </h4>
<p class=MsoNormal>Required occurrence: An item is added to the Infoset. </p>
<p class=MsoNormal>Optional occurrence: if dfdl:emptyValueDelimiterPolicy is
applicable and is not 'none'<a href="#_ftn29" name="_ftnref29" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[29]</span></span></span></a>,
then an item is added to the Infoset, otherwise nothing is added to the
Infoset. </p>
<p class=MsoNormal>For both required and optional occurrences, the parser, by
recursive descent, may create the Infoset item and a single child Infoset item.
This can occur when:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>the first child element of the complex type is a required
simple element, then an empty string (type xs:string), empty hexBinary
(type xs:hexBinary), or default value is alsoadded to the Infoset. </li>
<li class=MsoNormal>the first child element of the complex type is a required
complex element, then an item is added to the Infoset (which may itself have
a child via (1))</li>
</ol>
<h4><span style='color:black;font-weight:normal'>9.4.2.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Example: Complex Optional Empty Element Not Added to Infoset</h4>
<p class=MsoNormal>Below is an example where an optional complex element with
empty representation has nothing added to the infoset. consider the following:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator=&quot;|&quot;&gt;
&lt;!-- sequence S0 --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; ...prior schema components ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;E1&quot;
minOccurs=&quot;0&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; dfdl:occursCountKind=&quot;implicit&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence
dfdl:separator=&quot;;&quot;&gt; &lt;!-- sequence S1 --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;E2&quot; type=&quot;xs:string&quot;
dfdl:lengthKind=&quot;delimited&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
other optional content ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>In the above there is a sequence S0 with a separator that
contains among other content an optional, non-nillable, non-initiated,
non-terminated element E1 of complex type. The content of the E1 type is a
sequence S1 with a different separator and the first child is a required,
non-initiated, non-terminated element E2 of type xs:string. The dfdl:lengthKind
of both E1 and E2 is 'delimited'. </p>
<p class=MsoNormal>Now consider a data stream <span style='font-family:"Courier New"'>'</span><span
class=CodeblockChar0><span lang=EN-GB style='font-size:9.0pt;color:black'>...||...</span></span><span
style='font-family:"Courier New"'>'</span> which has two adjacent S0
separators, and where the parser has successfully parsed the schema components
prior to E1 within S0, which is what the &quot;...&quot; prior to the two
separators represents. That prior parse is delimited by the first S0
&quot;|&quot; separator, and E1's representation begins immediately after that
first S0 separator. </p>
<p class=MsoNormal>The representation of E1 has zero length because of these
two adjacent S0 separators. On processing E1, the parser establishes a point of
uncertainty with the data stream positioned after the first S0 separator. The
parserthen descends into E1's complex type to process E2. It scans for in-scope
delimiters and immediately encounters the second S0 separator. E2 has the empty
representation, so E1 is added to the Infoset along with a value of empty
string for E2. All other content of S1 is missing, so the parser returns from
the descent into E1 with this temporary Infoset (illustrated as XML):</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;E1&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;E2&gt;&lt;/E2&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/E1&gt;</span></p>
</div>
<p class=MsoNormal>Upon this successful parse of E1, it is therefore
known-to-exist. However, because the position in the data has not changed, E1
therefore has the empty representation. Because E1 is empty and optional (it
has XSD minOccurs='0') and dfdl:emptyValueDelimiterPolicy does not apply, it is
not added to the Infoset, and the temporary Infoset item for E1 containing E2
is discarded.</p>
<h4><span style='color:black;font-weight:normal'>9.4.2.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Example: Complex Optional Empty Element with Delimiters</h4>
<p class=MsoNormal>This example is similar, but the E1 element has a few additional
DFDL properties highlighted in bold below:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator=&quot;|&quot;&gt;
&lt;!-- sequence S0 --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;...prior schema components ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;E1&quot;
minOccurs=&quot;0&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; dfdl:initiator=&quot;(&quot; </span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; dfdl:terminator=&quot;)&quot;
</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><b><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; dfdl:emptyValueDelimiterPolicy=&quot;both&quot;
</span></b></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;delimited&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
dfdl:occursCountKind=&quot;implicit&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence
dfdl:separator=&quot;;&quot;&gt; &lt;!-- sequence S1 --&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;E2&quot; type=&quot;xs:string&quot;
dfdl:lengthKind=&quot;delimited&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
other optional content ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>This changes the definition of element E1 to have an empty
representation only if the initiator and terminator are present in the data
stream. </p>
<p class=MsoNormal>Consider has the same data stream '<span
class=CodeblockChar0><span lang=EN-GB style='font-size:9.0pt;color:black'>...||...</span></span>'
where there are two adjacent S0 separators. In this case the representation of
E1 does not match the empty representation, because the initiator and
terminator are not present as the dfdl:emptyValueDelimiterPolicy requires. It
also does not have the normal representation, again as the initiator and terminator
are not present. E1's representation is absent. Hence, nothing is added to the
infoset.</p>
<p class=MsoNormal>However, if the data stream '...|()|...' is encountered, there
are two S0 separators, but between them there are the initiator and terminator
of element E1. This satisfies the requirements for the empty representation,
but it is not zero length. The recursive parse of E1's complex type constructs
these elements (illustrated as XML):</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;E1&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;E2&gt;&lt;/E2&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/E1&gt;</span></p>
</div>
<p class=MsoNormal>These elements for E1 with E2 child would be added to the
infoset.</p>
<h3><a name="_Toc349042703"></a><a name="_Ref351914022"></a><a
name="_Ref351914031"></a><a name="_Toc62570124"><span style='color:black;
font-weight:normal'>9.4.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Element Defaults When Unparsing</a></h3>
<p class=MsoNormal>If an element is <em><span style='font-family:"Arial",sans-serif'>missing</span></em>
from the Infoset when unparsing, the possibility of applying an element default
arises.&nbsp; Essentially if a required occurrence of an element is missing,
then an element default is applied if present, and the resulting item is added
to the <em><span style='font-family:"Arial",sans-serif'>augmented Infoset </span></em><em><span
style='font-family:"Arial",sans-serif;font-style:normal'>(See Section </span></em><em><span
style='font-family:"Arial",sans-serif;font-style:normal'>9.7</span></em><em><span
style='font-family:"Arial",sans-serif'>)</span></em></p>
<p class=MsoNormal>The rules for applying element defaults are not dependent on
dfdl:occursCountKind. However if a required occurrence does not produce an item
in the augmented Infoset after the rules have been applied then whether it is a
Processing Error or a Validation Error (if enabled) <em><span style='font-family:
"Arial",sans-serif'>is</span></em>&nbsp; dependent on dfdl:occursCountKind (see
Section <span class=MsoHyperlink>16.1</span> dfdl:occursCountKind
property). </p>
<p class=MsoNormal>There are two cases to consider. </p>
<h4><span style='color:black;font-weight:normal'>9.4.3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Simple element</h4>
<p class=MsoNormal>Required occurrence: If an element has a default value then
an item is added to the augmented Infoset using the default value, otherwise
nothing is added. </p>
<p class=MsoNormal>Optional occurrence: Nothing is added to the augmented
Infoset.</p>
<h4><span style='color:black;font-weight:normal'>9.4.3.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Complex element </h4>
<p class=MsoNormal>Required occurrence: An item is added to the augmented
Infoset as specified below.</p>
<p class=MsoNormal>Optional occurrence: Nothing is added to the augmented
Infoset. </p>
<p class=MsoNormal>For a required occurrence, the unparser descends into the
complex type: </p>
<p class=MsoNormal>For a sequence, each child element is examined in schema
order and the rules for simple and complex elements applied (recursively). The
lack of a default may give rise to a Processing Error, as described above. </p>
<p class=MsoNormal>For a choice, each branch is examined in schema order and
the above rules applied recursively to the branch. The lack of a default may
give rise to a Processing Error, as described above, and if so the error is
suppressed and the next branch is tried, otherwise that branch is selected. It
is a Processing Error if no choice branch is ultimately selected. If no choice
branch is selected, then there must be a choice branch with no required
elements, and the first such branch would be selected. </p>
<h2><a name="_Ref384899121"></a><a name="_Ref384899136"></a><a
name="_Toc62570125"></a><a name="_Toc361231238"></a><a name="_Toc361231764"></a><a
name="_Toc362445062"></a><a name="_Toc363908984"></a><a name="_Toc364463407"></a><a
name="_Toc366078005"></a><a name="_Toc366078624"></a><a name="_Toc366079609"></a><a
name="_Toc366080221"></a><a name="_Toc366080830"></a><a name="_Toc366505170"></a><a
name="_Toc366508539"></a><a name="_Toc366513040"></a><a name="_Toc366574229"></a><a
name="_Toc366578022"></a><a name="_Toc366578616"></a><a name="_Toc366579208"></a><a
name="_Toc366579799"></a><a name="_Toc366580391"></a><a name="_Toc366580982"></a><a
name="_Toc366581574"></a><a name="_Toc361231239"></a><a name="_Toc361231765"></a><a
name="_Toc362445063"></a><a name="_Toc363908985"></a><a name="_Toc364463408"></a><a
name="_Toc366078006"></a><a name="_Toc366078625"></a><a name="_Toc366079610"></a><a
name="_Toc366080222"></a><a name="_Toc366080831"></a><a name="_Toc366505171"></a><a
name="_Toc366508540"></a><a name="_Toc366513041"></a><a name="_Toc366574230"></a><a
name="_Toc366578023"></a><a name="_Toc366578617"></a><a name="_Toc366579209"></a><a
name="_Toc366579800"></a><a name="_Toc366580392"></a><a name="_Toc366580983"></a><a
name="_Toc366581575"></a><a name="_Toc361231240"></a><a name="_Toc361231766"></a><a
name="_Toc362445064"></a><a name="_Toc363908986"></a><a name="_Toc364463409"></a><a
name="_Toc366078007"></a><a name="_Toc366078626"></a><a name="_Toc366079611"></a><a
name="_Toc366080223"></a><a name="_Toc366080832"></a><a name="_Toc366505172"></a><a
name="_Toc366508541"></a><a name="_Toc366513042"></a><a name="_Toc366574231"></a><a
name="_Toc366578024"></a><a name="_Toc366578618"></a><a name="_Toc366579210"></a><a
name="_Toc366579801"></a><a name="_Toc366580393"></a><a name="_Toc366580984"></a><a
name="_Toc366581576"></a><a name="_Toc361231241"></a><a name="_Toc361231767"></a><a
name="_Toc362445065"></a><a name="_Toc363908987"></a><a name="_Toc364463410"></a><a
name="_Toc366078008"></a><a name="_Toc366078627"></a><a name="_Toc366079612"></a><a
name="_Toc366080224"></a><a name="_Toc366080833"></a><a name="_Toc366505173"></a><a
name="_Toc366508542"></a><a name="_Toc366513043"></a><a name="_Toc366574232"></a><a
name="_Toc366578025"></a><a name="_Toc366578619"></a><a name="_Toc366579211"></a><a
name="_Toc366579802"></a><a name="_Toc366580394"></a><a name="_Toc366580985"></a><a
name="_Toc366581577"></a><a name="_Toc361231242"></a><a name="_Toc361231768"></a><a
name="_Toc362445066"></a><a name="_Toc363908988"></a><a name="_Toc364463411"></a><a
name="_Toc366078009"></a><a name="_Toc366078628"></a><a name="_Toc366079613"></a><a
name="_Toc366080225"></a><a name="_Toc366080834"></a><a name="_Toc366505174"></a><a
name="_Toc366508543"></a><a name="_Toc366513044"></a><a name="_Toc366574233"></a><a
name="_Toc366578026"></a><a name="_Toc366578620"></a><a name="_Toc366579212"></a><a
name="_Toc366579803"></a><a name="_Toc366580395"></a><a name="_Toc366580986"></a><a
name="_Toc366581578"></a><a name="_Toc361231243"></a><a name="_Toc361231769"></a><a
name="_Toc362445067"></a><a name="_Toc363908989"></a><a name="_Toc364463412"></a><a
name="_Toc366078010"></a><a name="_Toc366078629"></a><a name="_Toc366079614"></a><a
name="_Toc366080226"></a><a name="_Toc366080835"></a><a name="_Toc366505175"></a><a
name="_Toc366508544"></a><a name="_Toc366513045"></a><a name="_Toc366574234"></a><a
name="_Toc366578027"></a><a name="_Toc366578621"></a><a name="_Toc366579213"></a><a
name="_Toc366579804"></a><a name="_Toc366580396"></a><a name="_Toc366580987"></a><a
name="_Toc366581579"></a>9.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Evaluation Order for Statement Annotations</h2>
<p class=MsoNormal><span style='color:black'>Given a component of a DFDL
schema, there is a resolved set of annotations for it.</span></p>
<p class=MsoNormal>Of these, some are statement annotations and the order of
their evaluation relative to the actual processing of the schema component
itself (parsing or unparsing via its format annotations) is as defined in the
ordered lists below.</p>
<p class=MsoNormal>For elements and element references: </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:discriminator
or dfdl:assert(s) with testKind 'pattern' (parsing only)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:element
following property scoping rules, which includes establishing representation as
described in Section 9.3.2 and conversion to the element type for simple types </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:setVariable(s)
- in lexical order, innermost schema component first </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'>4.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>dfdl:discriminator
or dfdl:assert(s) with testKind 'expression' (parsing only)</p>
<p class=MsoNormal>For sequences, choices and group references: </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>dfdl:discriminator or dfdl:assert(s) with testKind
'pattern' (parsing only) </li>
<li class=MsoNormal>dfdl:newVariableInstance(s) - in lexical order, innermost
schema component first </li>
<li class=MsoNormal>dfdl:setVariable(s) - in lexical order, innermost schema
component first</li>
<li class=MsoNormal>dfdl:sequence or dfdl:choice or dfdl:group following
property scoping rules and evaluating any property expressions
(corresponds to ComplexContent grammar region)</li>
<li class=MsoNormal>dfdl:discriminator or dfdl:assert(s) with testKind
'expression' (parsing only) </li>
</ol>
<p class=MsoNormal>The dfdl:setVariable annotations at any one annotation point
of the schema are always executed in lexical order. However, dfdl:setVariable
annotations can also be found in different annotation points that are combined
into the resolved set of annotations for one schema component. In this case,
the order of execution of the dfdl:setVariable statements from any one
annotation point remains lexical. The order of execution of the dfdl:setVariable
annotations different annotation points follows the principle of innermost
first, meaning that a schema component that references another schema component
has its dfdl:setVariable statements executed <i>after</i> those of the
referenced schema component. For example, if an element reference and an
element declaration both have dfdl:setVariable statements, then those on the
element declaration execute before those on the element reference. Similarly,
dfdl:setVariable statements on a base simple type execute before those of a
simple type derived from it. The dfdl:setVariable statements on a simple type
execute before those on an element having that simple type (whether that type
is by reference, or when the simple type is lexically nested within the element
declaration). The dfdl:setVariable statements on the sequence or choice within
a global group definition execute before those on a group reference.</p>
<p class=MsoNormal>The dfdl:newVariableInstance annotations at any one
annotation point of the schema are always executed in lexical order. However,
dfdl:newVariableInstance annotations can also be found in different annotation
points that are combined into the resolved set of annotations for one schema
component. In this case, the order of execution of the dfdl:newVariableInstance
statements from any one annotation point remains lexical. The order of
execution of the dfdl:newVariableInstance annotations different annotation
points follows the principle of innermost first, meaning that a schema
component that contains or references another schema component has its
dfdl:newVariableInstance statements executed <i>after</i> those of the
contained or referenced schema component. For example, if a group reference and
the sequence or choice group of a group definition both have dfdl:newVariableInstance
statements, then those on the global group definition execute before those on
the group reference.</p>
<h3><a name="_Toc62570126"></a><a name="_Toc393356998"></a><span
style='color:black;font-weight:normal'>9.5.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Asserts and Discriminators with testKind 'expression'</h3>
<p class=MsoNormal><span style='color:black'>Implementations are free to
optimize by recognizing and executing discriminators or asserts with testKind
'expression' earlier so long as the resulting behavior is consistent with what
results from the description above.</span></p>
<h3><a name="_Toc62570127"><span style='color:black;font-weight:normal'>9.5.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Discriminators
with testKind 'expression'</a></h3>
<p class=MsoNormal><span style='color:black'>When parsing, an attempt to
evaluate a discriminator MUST be made even if preceding statements or the parse
of the schema component ended in a Processing Error. </span></p>
<p class=MsoNormal><span style='color:black'>This is because a discriminator's
expression can evaluate to true thereby resolving a point of uncertainty even
if the complete parsing of the construct ultimately caused a Processing Error. </span></p>
<p class=MsoNormal><span style='color:black'>Such discriminator evaluation has
access to the DFDL Infoset of the attempted parse as it existed immediately
before detecting the parse failure. Attempts to reference parts of the DFDL
Infoset that do not exist are Processing Errors. </span></p>
<h3><a name="_Toc62570128"><span style='color:black;font-weight:normal'>9.5.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Elements
and setVariable</a></h3>
<p class=MsoNormal>The resolved set of dfdl:setVariable statements for an
element are executed <b>after</b> the parsing of the element. This contrasts
with the resolved set of dfdl:setVariable statements for a group which are
executed <b>before</b><span style='color:black'> the parsing of the group. (Note
that dfdl:setVariable for an element is only allowed on elements of simple type
per Section </span><span style='color:black'>7.7.3</span><span
style='color:black'>.)</span></p>
<p class=MsoNormal><span style='color:black'>For elements, this implies that
these variables are set after the evaluation of expressions corresponding to
any computed DFDL properties for that element, and so the variables may not be
referenced from expressions that compute these DFDL properties.</span></p>
<p class=MsoNormal><span style='color:black'>That is, if an expression is used
to provide the value of a property (such as dfdl:terminator or dfdl:byteOrder),
the evaluation of that property expression occurs before any dfdl:setVariable
annotation from the resolved set of annotations for that element are executed;
hence, the expression providing the value of the property may not reference the
variable. Schema authors can insert sequences to provide more precise control
over when variables are set.</span></p>
<h3><a name="_Toc62570129"><span style='color:black;font-weight:normal'>9.5.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Controlling
the Order of Statement Evaluation</a></h3>
<p class=MsoNormal><span style='color:black'>Schema authors can insert
xs:sequence constructs to control the timing of evaluation of statements more
precisely. For example:</span></p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator=&quot;,&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;xs:element ref=&quot;a&quot;
.../&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;&lt;xs:appinfo source=</span><span class=MsoHyperlink><span
lang=EN-GB>&quot;</span></span><span lang=EN-GB style='color:black'>http://www.ogf.org/dfdl/&quot;
&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:assert&nbsp; test=&quot;{test expression}&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
ref=&quot;b&quot; .../&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>In the above, the assert test expression is evaluated after
parsing element 'a', and before parsing element &quot;b&quot;. The use of two
nested interior sequences surrounding element 'b' in this manner ensures that
the outermost sequence's separator usage is not disrupted. </p>
<h2><a name="_Ref53080438"></a><a name="_Toc62570130"></a><a name="_Validation"></a>9.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Validation</h2>
<p class=nobreak>Logical validation checks are constraints expressed in XSD,
and they apply to the logical values of the Infoset. Hence, parsing MUST
successfully construct the Infoset before validation checks can be performed.
This implies that DFDL Validation Errors cannot affect the parsing of data.</p>
<p class=MsoNormal>DFDL processors MAY provide both validating and
non-validating behaviors on either or both of parse and unparse. (A DFDL
implementation could support validate on parse, but not support it on unparse
and still be considered conforming.)</p>
<p class=MsoNormal>Validation on unparsing takes place on the augmented Infoset
that is created by the unparser as a side-effect of creating the output data stream.
Validation errors do not affect unparser behavior.</p>
<p class=MsoNormal>When resolving points of uncertainty (during parsing), Validation
Errors are ignored. </p>
<p class=MsoNormal>The way a Validation Error is presented to the execution
context of a DFDL processor is not specified by the DFDL specification. The
validity of an element is recorded in the DFDL Infoset, see Section <span class=MsoHyperlink>4</span> The DFDL Information Set (Infoset).</p>
<p class=MsoNormal>The following DFDL schema constructs are allowed in DFDL and
are checked if applicable when validating:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>XSD pattern facet</li>
<li class=MsoNormal>XSD minLength, maxLength </li>
<li class=MsoNormal>XSD minInclusive, minExclusive, maxInclusive, maxExclusive</li>
<li class=MsoNormal>XSD enumeration</li>
<li class=MsoNormal>XSD maxOccurs</li>
</ol>
<p class=MsoNormal>Note that validation is distinct from the checking of DFDL
assert or discriminator predicates. Both DFDL asserts and discriminators are
essential to parsing and are evaluated irrespective of whether validation is
enabled or disabled. </p>
<p class=MsoNormal>There is also a function dfdl:checkConstraints available in
the DFDL Expression language. This can be used to explicitly include checking
of the XSD constructs as part of parsing a specific element. Such checking is
part of parsing and does not create Validation Errors. See Section <span class=MsoHyperlink>18.5.3</span> DFDL
Functions for details.</p>
<h2><a name="_Toc179788283"></a><a name="_Toc199516304"></a><a
name="_Toc194983968"></a><a name="_Toc243112816"></a><a name="_Toc349042709"></a><a
name="_Ref38539757"></a><a name="_Ref38541050"></a><a name="_Ref38541055"></a><a
name="_Ref37860950"></a><a name="_Toc62570131"></a><a name="_Toc349042706"></a><a
name="_Toc351912704"></a><a name="_Toc351914725"></a><a name="_Toc351915191"></a><a
name="_Toc361231248"></a><a name="_Toc361231774"></a><a name="_Toc362445072"></a><a
name="_Toc363908994"></a><a name="_Toc364463417"></a><a name="_Toc366078015"></a><a
name="_Toc366078634"></a><a name="_Toc366079619"></a><a name="_Toc366080231"></a><a
name="_Toc366080840"></a><a name="_Toc366505180"></a><a name="_Toc366508549"></a><a
name="_Toc366513050"></a><a name="_Toc366574239"></a><a name="_Toc366578032"></a><a
name="_Toc366578626"></a><a name="_Toc366579218"></a><a name="_Toc366579809"></a><a
name="_Toc366580401"></a><a name="_Toc366580992"></a><a name="_Toc366581584"></a><a
name="_Toc349042707"></a><a name="_Toc349642128"></a><a name="_Toc351912705"></a><a
name="_Toc351914726"></a><a name="_Toc351915192"></a><a name="_Toc361231249"></a><a
name="_Toc361231775"></a><a name="_Toc362445073"></a><a name="_Toc363908995"></a><a
name="_Toc364463418"></a><a name="_Toc366078016"></a><a name="_Toc366078635"></a><a
name="_Toc366079620"></a><a name="_Toc366080232"></a><a name="_Toc366080841"></a><a
name="_Toc366505181"></a><a name="_Toc366508550"></a><a name="_Toc366513051"></a><a
name="_Toc366574240"></a><a name="_Toc366578033"></a><a name="_Toc366578627"></a><a
name="_Toc366579219"></a><a name="_Toc366579810"></a><a name="_Toc366580402"></a><a
name="_Toc366580993"></a><a name="_Toc366581585"></a><a name="_Toc322911608"></a><a
name="_Toc322912147"></a><a name="_Toc329092997"></a><a name="_Toc332701510"></a><a
name="_Toc332701817"></a><a name="_Toc332711611"></a><a name="_Toc332711919"></a><a
name="_Toc332712221"></a><a name="_Toc332724137"></a><a name="_Toc332724437"></a><a
name="_Toc341102733"></a><a name="_Toc347241466"></a><a name="_Toc347744659"></a><a
name="_Toc348984442"></a><a name="_Toc348984747"></a><a name="_Toc349037910"></a><a
name="_Toc349038215"></a><a name="_Toc349042708"></a><a name="_Toc349642129"></a><a
name="_Toc351912706"></a><a name="_Toc351914727"></a><a name="_Toc351915193"></a><a
name="_Toc361231250"></a><a name="_Toc361231776"></a><a name="_Toc362445074"></a><a
name="_Toc363908996"></a><a name="_Toc364463419"></a><a name="_Toc366078017"></a><a
name="_Toc366078636"></a><a name="_Toc366079621"></a><a name="_Toc366080233"></a><a
name="_Toc366080842"></a><a name="_Toc366505182"></a><a name="_Toc366508551"></a><a
name="_Toc366513052"></a><a name="_Toc366574241"></a><a name="_Toc366578034"></a><a
name="_Toc366578628"></a><a name="_Toc366579220"></a><a name="_Toc366579811"></a><a
name="_Toc366580403"></a><a name="_Toc366580994"></a><a name="_Toc366581586"></a>9.7<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Unparser
Infoset Augmentation Algorithm</h2>
<p class=nobreak>As unparsing progresses and fills in these defaultable and
calculated elements, these new item values augment the Infoset, that is, make
it bigger.</p>
<p class=MsoNormal>The unparsing algorithm fills in default values for required
elements that are not present, and computes calculated elements by use of the
dfdl:outputValueCalc property (see Section <span
class=MsoHyperlink>17</span> Calculated
Value Properties).</p>
<p class=MsoNormal>When unparsing, an element declaration and the Infoset are
considered as follows. An implementation MAY use any technique consistent with
this algorithm: </p>
<p class=MsoListParagraph style='margin-left:46.5pt;text-indent:-28.5pt'>a)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>If the element declaration has a dfdl:outputValueCalc property, then the
expression which is the dfdl:outputValueCalc property value is evaluated, and
the resulting value becomes the value of the element item in the augmented Infoset.
Any pre-existing value for the Infoset item is superseded by this new value. </p>
<p class=MsoNormal style='margin-left:46.5pt'>References to other augmented Infoset
items from within the dfdl:outputValueCalc expression MUST obtain their values
from the augmented Infoset directly (when the value is already present) or by
recursively using these methods (a) and (b) as needed. </p>
<p class=MsoListParagraphCxSpFirst style='margin-left:46.5pt;text-indent:-28.5pt'>b)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>If the element declaration has no corresponding value in the augmented Infoset,
and the element declaration is for a <em><span style='font-family:"Arial",sans-serif'>required
</span></em>occurrence, and it <em><span style='font-family:"Arial",sans-serif'>has
a default value specified</span></em>, then an element item having the default
value is created in the augmented Infoset. </p>
<p class=MsoListParagraphCxSpLast style='margin-left:46.5pt;text-indent:-28.5pt'>c)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>If any Infoset item's value is requested recursively as a part of (a)
above and (a) does not apply, and the corresponding value is not present, and
(b) does not apply then it is a Processing Error. </p>
<p class=MsoNormal>Given this augmented Infoset, then if the element
declaration has a corresponding Infoset item then that item is converted to its
representation according to its DFDL properties. If the element declaration is
for a required occurrence, and there is no value in the augmented Infoset then
it is a Processing Error. </p>
<h1><a name="_Ref39164410"></a><a name="_Toc62570132"></a><a
name="_Overview:_Core_Representation"></a>10<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Overview: Representation Properties and their Format Semantics</h1>
<p class=nobreak>The next sections specify the set of DFDL v1.0 properties that
may be used in DFDL annotations in DFDL Schemas to describe data formats.</p>
<p class=MsoNormal>It is a Schema Definition Error when a DFDL schema does <i>not</i>
contain a definition for a representation property that is needed to interpret
the data. For example, a DFDL schema containing any textual data must provide a
definition of the character set encoding property (dfdl:encoding) for that
textual data, and if it is not part of the format properties context for that
data, then it is a Schema Definition Error.</p>
<p class=MsoNormal>Furthermore, no default values are provided for
representation properties as built-in definitions by any DFDL processor. This
requires DFDL schemas to be explicit about the representation properties of the
data they describe and avoids any possibility of DFDL schemas that are
meaningful for some DFDL processors but not others.</p>
<p class=MsoNormal>The properties are organized as follows:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Common to both Content and Framing (see <span class=InternetLink>11</span>)</li>
<li class=MsoNormal>Common Framing, Position, and Length (see <span class=InternetLink>12</span>)</li>
<li class=MsoNormal>Simple Type Content (see <span
class=InternetLink>13</span>)</li>
<li class=MsoNormal>Sequence Groups (see <span
class=InternetLink>14</span>)</li>
<li class=MsoNormal>Choice Groups (see <span
class=InternetLink>15</span>)</li>
<li class=MsoNormal>Array elements and optional elements (see <span class=InternetLink>16</span>)</li>
<li class=MsoNormal>Calculated Values (see <span
class=InternetLink>17</span>)</li>
</ul>
<p class=MsoNormal>Where properties are specific to a physical representation,
the property name may choose to reflect this. Where properties are related to a
specific logical type grouping (defined below), the property name may choose to
reflect this.</p>
<p class=MsoNormal>A limited number of properties can take a DFDL expression
which must return a value of the proper type for the property. Those properties
that take an expression explicitly state in the description. Other properties
do not take an expression.</p>
<p class=MsoNormal>The property description defines which schema component that
the property may be specified on. In addition, most DFDL properties may be
specified on a dfdl:format annotation.</p>
<h1><a name="_Toc177399079"></a><a name="_Toc175057366"></a><a
name="_Toc199516305"></a><a name="_Toc194983969"></a><a name="_Toc243112817"></a><a
name="_Ref255476147"></a><a name="_Ref322880110"></a><a name="_Ref322880152"></a><a
name="_Toc349042712"></a><a name="_Ref39164433"></a><a name="_Ref52983456"></a><a
name="_Toc62570133"></a><a name="_Toc130873625"></a><a name="_Toc140549597"></a><a
name="_Toc322911610"></a><a name="_Toc322912149"></a><a name="_Toc329092999"></a><a
name="_Toc332701512"></a><a name="_Toc332701819"></a><a name="_Toc332711613"></a><a
name="_Toc332711921"></a><a name="_Toc332712223"></a><a name="_Toc332724139"></a><a
name="_Toc332724439"></a><a name="_Toc341102735"></a><a name="_Toc347241468"></a><a
name="_Toc347744661"></a><a name="_Toc348984444"></a><a name="_Toc348984749"></a><a
name="_Toc349037912"></a><a name="_Toc349038217"></a><a name="_Toc349042710"></a><a
name="_Toc349642131"></a><a name="_Toc351912708"></a><a name="_Toc351914729"></a><a
name="_Toc351915195"></a><a name="_Toc361231252"></a><a name="_Toc361231778"></a><a
name="_Toc362445076"></a><a name="_Toc363908998"></a><a name="_Toc364463421"></a><a
name="_Toc366078019"></a><a name="_Toc366078638"></a><a name="_Toc366079623"></a><a
name="_Toc366080235"></a><a name="_Toc366080844"></a><a name="_Toc366505184"></a><a
name="_Toc366508553"></a><a name="_Toc366513054"></a><a name="_Toc366574243"></a><a
name="_Toc366578036"></a><a name="_Toc366578630"></a><a name="_Toc366579222"></a><a
name="_Toc366579813"></a><a name="_Toc366580405"></a><a name="_Toc366580996"></a><a
name="_Toc366581588"></a><a name="_Toc322911611"></a><a name="_Toc322912150"></a><a
name="_Toc329093000"></a><a name="_Toc332701513"></a><a name="_Toc332701820"></a><a
name="_Toc332711614"></a><a name="_Toc332711922"></a><a name="_Toc332712224"></a><a
name="_Toc332724140"></a><a name="_Toc332724440"></a><a name="_Toc341102736"></a><a
name="_Toc347241469"></a><a name="_Toc347744662"></a><a name="_Toc348984445"></a><a
name="_Toc348984750"></a><a name="_Toc349037913"></a><a name="_Toc349038218"></a><a
name="_Toc349042711"></a><a name="_Toc349642132"></a><a name="_Toc351912709"></a><a
name="_Toc351914730"></a><a name="_Toc351915196"></a><a name="_Toc361231253"></a><a
name="_Toc361231779"></a><a name="_Toc362445077"></a><a name="_Toc363908999"></a><a
name="_Toc364463422"></a><a name="_Toc366078020"></a><a name="_Toc366078639"></a><a
name="_Toc366079624"></a><a name="_Toc366080236"></a><a name="_Toc366080845"></a><a
name="_Toc366505185"></a><a name="_Toc366508554"></a><a name="_Toc366513055"></a><a
name="_Toc366574244"></a><a name="_Toc366578037"></a><a name="_Toc366578631"></a><a
name="_Toc366579223"></a><a name="_Toc366579814"></a><a name="_Toc366580406"></a><a
name="_Toc366580997"></a><a name="_Toc366581589"></a><a
name="_Properties_Common_to"></a>11<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Common to both Content and Framing</h1>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Prop<span style='color:black'>erty Name</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>byteOrder</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum or DFDL Expression</p>
<p class=MsoNormal>Valid values 'bigEndian', 'littleEndian'.&nbsp; </p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns the string 'bigEndian' or 'littleEndian'. The expression must
not contain forward references to elements which have not yet been
processed.&nbsp;&nbsp; </p>
<p class=MsoNormal>Note that there is, intentionally, no such thing as
'native' endian<a href="#_ftn30" name="_ftnref30" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[30]</span></span></span></a>.</p>
<p class=MsoNormal>This property applies to all Number, Calendar (date and
time), and Boolean types with representation binary. Specifically, that is binary
integers, binary booleans, all packed decimals, binary floats, binary seconds
and binary milliseconds.</p>
<p class=MsoNormal>This property is never used to establish the byte order for
text /strings, as each character set encoding involving multiple bytes of
data per code unit specifies its byte order. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>bitOrder</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum </p>
<p class=MsoNormal>Valid values 'mostSignificantBitFirst', 'leastSignificantBitFirst'.&nbsp;
</p>
<p class=MsoNormal>The bits of a byte each have a place value or significance
of 2<i><sup>n</sup></i>, for <i>n</i> from 0 to 7. Hence, the byte value 255
= 2<sup>7</sup> + 2<sup>6</sup> + 2<sup>5</sup> + 2<sup>4</sup> + 2<sup>3</sup>
+ 2<sup>2</sup> + 2<sup>1</sup> + 2<sup>0</sup>. A bit can always be unambiguously
identified as the 2<i><sup>n</sup></i>-bit.</p>
<p class=MsoNormal>The bit order is the correspondence of a bit's numeric
significance to the bit position (1 to 8) within the byte.</p>
<p class=MsoNormal>Value 'mostSignificantBitFirst' means: </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>The 2<sup>7</sup> bit is first, i.e., has bit position
1. </li>
<li class=MsoNormal>In general, the 2<i><sup>n</sup></i> bit has position 8
- <i>n. </i></li>
<li class=MsoNormal>The least significant bits of byte N are considered to
be adjacent to the most significant bits of byte N+1.</li>
</ul>
<p class=MsoNormal>Value 'leastSignificantBitFirst' means:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>The 2<sup>0</sup> bit is first, i.e., has bit position
1. </li>
<li class=MsoNormal>In general, the 2<i><sup>n</sup></i> bit has position <i>n
</i>+<i> </i>1<i>. </i></li>
<li class=MsoNormal>The most significant bits of byte N are considered to be
adjacent to the least significant bits of byte N+1.</li>
</ul>
<p class=MsoNormal>This property applies to all content and framing since it
determines which bits of a byte occupy what bit positions. Content and
framing are defined in terms of regions of the data stream, and these regions
are defined in terms of the starting bit position and ending bit position;
hence, dfdl:bitOrder is relevant to determining the specific bits of any
grammar region (see Section <span
class=MsoHyperlink>9.2</span> DFDL
Data Syntax Grammar) when the region's starting bit position or ending bit
position are not on a byte boundary.&nbsp; </p>
<p class=MsoNormal>The bit order can only change on byte boundaries, and
alignment of up to 7 bits is skipped (parsing) or inserted (unparsing) to
ensure byte-alignment whenever the bit order changes.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group&nbsp; </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>encoding</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum or DFDL Expression</p>
<p class=MsoNormal>Values are one of:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>IANA charset name<a href="#_ftn31" name="_ftnref31" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[31]</span></span></span></a></p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>CCSID<a href="#_ftn32" name="_ftnref32" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[32]</span></span></span></a></p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL standard encoding name</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Implementation-specific encoding name</p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns an appropriate string value. The expression must not contain
forward references to elements which have not yet been processed.&nbsp; </p>
<p class=MsoNormal>Note that there is, deliberately, no concept of 'native'
encoding<a href="#_ftn33" name="_ftnref33" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[33]</span></span></span></a>.</p>
<p class=MsoNormal>Conforming DFDL v1.0 processors MUST accept at least
'UTF-8', 'UTF-16', 'UTF-16BE', 'UTF-16LE', 'ASCII', and 'ISO-8859-1' as
encoding names. </p>
<p class=MsoNormal>The encoding name &quot;UTF-16&quot; is equivalent to
&quot;UTF-16BE&quot; and for processors that implement UTF-32, the encoding
name &quot;UTF-32&quot; is equivalent to &quot;UTF-32BE&quot;.</p>
<p class=MsoNormal>Unlike most other properties with Enum values, encoding
names are case-insensitive, so for example 'utf-8', 'Utf-8', and 'UTF-8' are
equivalent. </p>
<p class=MsoNormal>The encoding name 'UTF-8' is interpreted strictly and does
not include variants such as CESU-8.</p>
<p class=MsoNormal>DFDL standard encoding names are defined in Section <span class=MsoHyperlink>33</span> Appendix
D: DFDL Standard Encodings. When supported, a conforming DFDL implementation MUST
implement them in a uniform manner so that they are portable across all DFDL
implementations that implement them. </p>
<p class=MsoNormal>Additional implementation-defined encoding names MAY be
provided only for character set encodings for which there is no IANA name
standard nor CCSID standard nor DFDL standard encoding. These
implementation-defined encodings MUST have &quot;X-&quot; as a prefix to
their name, as they are subject to being superseded by IANA or DFDL standard
encoding names.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>utf16Width</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'fixed', 'variable'.</p>
<p class=MsoNormal>Applies only when encoding is 'UTF-16', 'UTF-16BE',
UTF16-LE' or their CCSID equivalents.</p>
<p class=MsoNormal>Specifies whether the encoding 'UTF-16' is treated as a
fixed or variable width encoding. 'UTF-16' can contain characters which
require two codepoints (called a surrogate pair) to represent. When
utf16Width is 'fixed', these surrogate code points are treated as separate
characters. When utf16Width is 'variable', then surrogate pairs are converted
into a single character on parsing, and such a character is split into two
characters on unparsing.</p>
<p class=MsoNormal>When utf16Width is 'variable', then on parsing an
un-paired surrogate codepoint causes a decode error, which can be controlled
via dfdl:encodingErrorPolicy described below. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ignoreCase</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'.</p>
<p class=MsoNormal>Whether mixed case data is accepted when matching
delimiters and data values on input. </p>
<p class=MsoNormal>This affects the behavior of matching for these
properties: dfdl:initiator, dfdl:terminator, dfdl:separator, dfdl:nilValue,
dfdl:textStandardExponentRep, dfdl:textStandardInfinityRep,
dfdl:textStandardNaNRep, dfdl:textStandardZeroRep, dfdl:textBooleanTrueRep,
and dfdl:textBooleanFalseRep.</p>
<p class=MsoNormal style='text-autospace:none'>Property ignoreCase plays no
part when comparing an element value with an XSD enum facet, matching an
element value to an XSD pattern facet, or comparing an element value with the
XSD fixed property. It is therefore not used by validation (when validation
is enabled), nor by the dfdl:checkConstraints function. </p>
<p class=MsoNormal>&nbsp;On unparsing always use the delimiters or value as
specified.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>encodingErrorPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'error' or 'replace'. </p>
<p class=MsoNormal>This property applies whenever dfdl:encoding is
applicable.</p>
<p class=MsoNormal>This property provides control of how decoding and encoding
errors are handled when converting the data to text, or text to data. This
includes converting when scanning for delimiters, matching regular expression
length or test patterns, matching textual data type representation patterns
against the data, and of course isolating the text content that becomes the
value of an element (parsing) or constructing the content from the value
(unparsing).</p>
<p class=MsoNormal>When parsing, an error can occur when decoding characters
from their encoded form into the DFDL Infoset character set (ISO10646). This
can occur due to invalid byte sequences, or not enough bytes found to make up
the full encoding of a character.</p>
<p class=MsoNormal>If 'replace', then the Unicode replacement character (U+FFFD)
is substituted for the offending errors, one replacement character for any incorrect
fragment of an encoding.&nbsp; </p>
<p class=MsoNormal>If 'error' then a Processing Error occurs.</p>
<p class=MsoNormal>When unparsing, the errors that can occur when encoding characters
from Unicode/ISO 10646 into the specified encoding include when no mapping is
provided by the encoding character set specification and when there is not enough
space to output the entire encoding of the character (e.g., need 2 bytes for a
2-byte character codepoint, but only 1 byte remains in the available length.)
</p>
<p class=MsoNormal>If 'replace' then encoding-specific
replacement/substitution character is output. It is a Processing Error if no
such character is defined, and it is a Processing Error if there is any error
when attempting to output the replacement (such as not enough room for the
representation of the entire encoding of the replacement character). </p>
<p class=MsoNormal>If &#8216;error' then a Processing Error occurs.</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>11.2</span> <span
class=MsoHyperlink>Character Encoding and Decoding Errors</span> for further
details.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType, dfdl:sequence, dfdl:choice, dfdl:group</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 13 Properties Common to both Content and Framing</p>
<h2><a name="_Ref320436132"></a><a name="_Toc349042713"></a><a
name="_Toc62570134">11.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Unicode Byte Order Mark (BOM)</a></h2>
<p class=MsoNormal>DFDL does not provide any special treatment of Unicode
Byte-Order Marks. They are treated as a Unicode ZWNBS character.</p>
<h2><a name="_Toc349042714"></a><a name="_Ref320443014"></a><a
name="_Toc62570135"></a><a name="_Toc25589778"></a><a name="_Toc27061045"></a><a
name="_Toc25589779"></a><a name="_Toc27061046"></a><a name="_Toc25589780"></a><a
name="_Toc27061047"></a><a name="_Toc25589781"></a><a name="_Toc27061048"></a><a
name="_Toc25589782"></a><a name="_Toc27061049"></a><a name="_Toc25589783"></a><a
name="_Toc27061050"></a><a name="_Toc25589784"></a><a name="_Toc27061051"></a><a
name="_Toc25589785"></a><a name="_Toc27061052"></a><a name="_Toc25589786"></a><a
name="_Toc27061053"></a><a name="_Toc25589787"></a><a name="_Toc27061054"></a><a
name="_Toc25589788"></a><a name="_Toc27061055"></a><a name="_Toc25589789"></a><a
name="_Toc27061056"></a><a name="_Toc25589790"></a><a name="_Toc27061057"></a><a
name="_Toc25589791"></a><a name="_Toc27061058"></a><a
name="__RefHeading__1130_1503507204"></a><a name="_Toc25589792"></a><a
name="_Toc27061059"></a>11.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Character Encoding and Decoding Errors</h2>
<p class=MsoNormal>When parsing, these are the errors that can occur when
decoding characters into Unicode/ISO 10646. </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>The data is broken - invalid bit/byte sequences are found
which do not match the definition of a character for the encoding.</li>
<li class=MsoNormal>Not enough data is found to make up the entire encoding of
a character. That is, a fragment of a valid encoding is found.</li>
</ol>
<p class=MsoNormal>When unparsing, these are the errors that can occur when
encoding characters from Unicode/ISO 10646 into the specified encoding.</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>No mapping provided by the encoding specification. </li>
<li class=MsoNormal>Not enough room to output the entire encoding of the
character (e.g., need 3 bytes for a character encoding that uses 3-bytes
for that character, but only 1 byte remains in the available length. </li>
</ol>
<p class=MsoNormal>The subsections below describe how these errors are handled.</p>
<h3><a name="_Toc349042715"></a><a name="_Toc62570136"><span style='color:black;
font-weight:normal'>11.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Property dfdl:encodingErrorPolicy</a></h3>
<p class=MsoNormal>The property dfdl:encodingErrorPolicy has two possible
values: 'error' and 'replace'.</p>
<h4><span style='color:black;font-weight:normal'>11.2.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:encodingErrorPolicy
'error'</h4>
<p class=MsoNormal>If 'error', then any error when decoding characters while
parsing causes a Processing Error. For unparsing, any error when encoding
characters causes a Processing Error. </p>
<p class=MsoNormal>When parsing, it does not matter if this happens when
scanning for delimiters, matching a regular expression, matching a literal nil
value, or constructing the value of a textual element. </p>
<p class=MsoNormal>There is one exception. When dfdl:lengthUnits is 'bytes',
the 'not enough data' decoding error is ignored, and the data making up the
fragment character is skipped over. Symmetrically, when unparsing the 'not
enough room' encoding error is ignored and the left-over bytes are filled with
the dfdl:fillByte.</p>
<p class=MsoNormal>Detection of character set decoding errors is often
implementation-dependent because DFDL Implementations are free to optimize
processing speed by skipping character decoding or encoding whenever possible.
For example: when character set encodings are fixed-width, it is possible to
determine lengths in bytes or bits from the length in characters by multiplying
the length value by the character width, without having to decode any characters.
</p>
<p class=MsoNormal>When parsing, character decoding errors MUST be detected
when </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'>a)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>the decoding
results in a character being placed into the DFDL Infoset</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>b)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>the decoding is
necessary to identify a delimiter</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'>c)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>the
decoding is necessary to determine a match or non-match of a regular expression
in a dfdl:assert or dfdl:discriminator with testKind=&#8217;pattern&#8217;. </p>
<p class=MsoNormal>When unparsing, character encoding errors MUST be detected
when </p>
<p class=MsoListParagraph style='text-indent:-.25in'>d)<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span>an unmapped character appears in the Infoset value of an element.</p>
<p class=MsoNormal>In all other cases, character set decoding and encoding
errors MAY not be detected.</p>
<p class=MsoNormal>Implementations MAY pre-decode a limited number of
characters for efficiency; however, such implementation-dependent pre-decoding
can cause parse errors to be detected in some implementations of DFDL that are
not detected by others.</p>
<p class=MsoNormal>Schema authors are advised not to rely on decoding errors
for backtracking to control the behavior of the parser.</p>
<h4><span style='color:black;font-weight:normal'>11.2.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:encodingErrorPolicy
'replace' for parsing</h4>
<p class=MsoNormal>If 'replace' then any error when decoding characters results
in the insertion of the Unicode Replacement Character (U+FFFD) as the replacement
for that error. </p>
<p class=MsoNormal>It does not matter if this error and replacement happens
when scanning for delimiters, matching a regular expression, matching a literal
nil value, or constructing the value of a textual element. </p>
<p class=MsoNormal>There is one exception. When dfdl:lengthUnits is 'bytes',
the 'not enough data' decoding error is ignored, no replacement character is
created. The data making up the fragment character is skipped over. (It is
filled with the dfdl:fillByte when unparsing.)</p>
<p class=MsoNormal>Note that the &quot;.&quot; wildcard in regular expressions
matches the Unicode Replacement Character, so &quot;.*&quot; and &quot;.+&quot;
regular expressions can potentially cause very large matches (up to the entire
data stream) to occur when data contains errors and dfdl:encodingErrorPolicy
'replace'. DFDL Schema authors are advised that bounded length negated regular
expressions can help in this case. E.g., &quot;[^\uFFFD]{0,50}&quot; says to
match any character (excluding the Unicode Replacement Character), but only up
to length 50.</p>
<p class=MsoNormal>It is also worth noting that the Unicode Replacement
Character can appear in data as an ordinary character, and this cannot be
distinguished from the insertion of the Unicode Replacement Character due to a
decoding error. This is likely to happen for data that is (a) initially parsed
by a DFDL parser with dfdl:encodingErrorPolicy 'replace', and (b) which
contains some decoding errors, but (c) is nevertheless successfully parsed, (d)
is written back out to a file or other data repository, and (e) is parsed
again. The written data has replaced data errors with the Unicode Replacement
Character, and so if the data is parsed again, it no longer produces errors,
but instead contains the Unicode Replacement Character as a regular character
in the data. </p>
<p class=MsoNormal>If dfdl:lengthUnits is 'characters', then a Unicode Replacement
Character counts as contributing a single character to the length.</p>
<p class=MsoNormal>If the data contains more than one adjacent decode error,
then the specific number of Unicode Replacement Characters that are inserted as
the replacement of these errors is implementation- dependent. That is, some
implementations MAY view, for example, three consecutive erroneous bytes as
three separate decode errors, others MAY view them as a single or two decode
errors. All implementations MUST, however, insert some number of Unicode
Replacement Characters, and then continue to decode characters following the
erroneous data.</p>
<p class=MsoNormal>The trimming of pad characters always happens after Unicode
Replacement Characters have been inserted into the data. </p>
<h4><span style='color:black;font-weight:normal'>11.2.1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:encodingErrorPolicy
'replace' for unparsing</h4>
<p class=MsoNormal>For unparsing, each encoding has a replacement/substitution
character specified by the ICU. This character is substituted for the unmapped
character or the character that has too large an encoding to fit in the available
space.&nbsp;</p>
<p class=MsoNormal>There is one exception. When dfdl:lengthUnits is 'bytes',
the 'not enough room' encoding error is ignored. The left-over bytes are filled
with the dfdl:fillByte (they are skipped when parsing.)</p>
<p class=MsoNormal>The definitions of these substitution characters can be
conveniently found for many encodings in the ICU Converter Explorer (<a
href="http://demo.icu-project.org/icu-bin/convexp" target="_blank">http://demo.icu-project.org/icu-bin/convexp</a>).&nbsp;
</p>
<p class=MsoNormal>An encoding error is a Processing Error if the encoding does
not provide a substitution/replacement character definition. (This would be rare
but can occur if a DFDL implementation allows many encodings beyond the minimum
set.)</p>
<h3><a name="_Toc349042716"></a><a name="_Toc62570137"><span style='color:black;
font-weight:normal'>11.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Unicode UTF-16 Decoding/Encoding Non-Errors</a></h3>
<p class=MsoNormal>The following specific situations involving encodings
UTF-16, UTF-16LE, and UTF-16BE when dfdl:utf16Width &quot;fixed&quot;, and they
do not cause a decoding or encoding error.</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>unpaired surrogate codepoint </li>
<li class=MsoNormal>out-of-order surrogate codepoint pair </li>
<li class=MsoNormal>surrogate codepoint pair is encountered </li>
</ul>
<p class=MsoNormal>In all these cases the code-point(s) becomes a character
code in the DFDL Information Item for the string. </p>
<h3><a name="_Toc349042717"></a><a name="_Toc62570138"><span style='color:black;
font-weight:normal'>11.2.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Preserving Data Containing Decoding Errors</a></h3>
<p class=nobreak>There can be situations where data wants to be preserved
exactly even if it contains errors.</p>
<p class=MsoNormal>It is suggested that if a DFDL schema author wants to preserve
information containing data where the encodings have these kinds of errors, that
they model such data as xs:hexBinary, or as xs:string but using an encoding such
as iso-8859-1 which preserves all bytes.</p>
<h2><a name="_Toc391372302"></a><a name="_Toc394673891"></a><a
name="_Toc396997414"></a><a name="_Toc62570139">11.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Byte Order and Bit Order</a></h2>
<p class=MsoNormal>Byte order and bit order are separate concepts. However, of
the possible combinations, only the following are allowed:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>&#8216;bigEndian&#8217; with
&#8216;mostSignificantBitFirst&#8217;</li>
<li class=MsoNormal>&#8216;littleEndian&#8217; with
&#8216;mostSignificantBitFirst&#8217;</li>
<li class=MsoNormal>&#8216;littleEndian&#8217; with
&#8216;leastSignificantBitFirst&#8217; <a href="#_ftn34" name="_ftnref34"
title=""><sup><sup><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[34]</span></sup></sup></a></li>
</ol>
<p class=MsoNormal>Other combinations MUST produce Schema Definition Errors. </p>
<h2><a name="_Toc394673892"></a><a name="_Toc396997415"></a><a
name="_Toc62570140">11.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>dfdl:bitOrder Example</a></h2>
<p class=MsoNormal>Consider a structure of 4 logical elements. The total length
is 16 bits. </p>
<p class=MsoNormal>Assume the lengths here are measured in bits
(dfdl:lengthUnits<a href="#_ftn35" name="_ftnref35" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[35]</span></span></span></a>
is 'bits'), and that these are binary integers (dfdl:representation is
'binary', dfdl:binaryNumberRep<a href="#_ftn36" name="_ftnref36" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[36]</span></span></span></a>
is 'binary'):</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&lt;element name=&quot;A&quot; type=&quot;xs:int&quot;
dfdl:length=&quot;3&quot;/&gt; &lt;!-- having value 3 --&gt;</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>&lt;element name=&quot;B&quot; type=&quot;xs:int&quot;
dfdl:length=&quot;7&quot;/&gt; &lt;!-- having value 9 --&gt;</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#00B050'>&lt;element name=&quot;C&quot; type=&quot;xs:int&quot;
dfdl:length=&quot;4&quot;/&gt; &lt;!-- having value 5 --&gt;</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#5F497A'>&lt;element name=&quot;D&quot; type=&quot;xs:int&quot;
dfdl:length=&quot;2&quot;/&gt; &lt;!-- having value 1 --&gt;</span></p>
</div>
<p class=MsoNormal>The above are colorized to highlight the corresponding bits
in the data below.</p>
<p class=MsoNormal>In a format where dfdl:bitOrder is 'mostSignificantBitFirst':
</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
011</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>00010 01</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:#00B050'>0101</span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#7030A0'>01</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
AAA</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>BBBBB BB</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:#00B050'>CCCC</span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#7030A0'>DD</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Significance&nbsp; M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L
M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Bit Position&nbsp; </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#00B0F0'>123</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:red'>45678 12</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>3456</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:#7030A0'>78</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Byte Position ----1--- ----2---</span></p>
</div>
<p class=MsoNormal>As presented here, the bits corresponding to each element
appear left to right, and all bits for an individual element are adjacent.
Within the bits of an individual element the most significant bit is on the
left, least significant on the right, consistent with the way the bytes
themselves are presented.</p>
<p class=MsoNormal>In contrast, in a format where dfdl:bitOrder is
'leastSignificantBitFirst': </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
01001</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>011</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:black'> </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#7030A0'>01</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>0101</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:red'>00</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BBBBB</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>AAA</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:black'> </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#7030A0'>DD</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>CCCC</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:red'>BB</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><a name="_Toc393282811"></a><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:black'>Significance&nbsp;
M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Bit Position&nbsp; </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:red'>87654</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#0070C0'>321</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:black'> </span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:#7030A0'>87</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>6543</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:red'>21</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Byte Position ----1--- ----2---</span></p>
</div>
<p class=MsoNormal>In the above presentation note how the bits of the element
'B' do not appear adjacent to each other. The most significant bits of byte N
are adjacent to the least significant bits of byte N+1.</p>
<h3><a name="_Toc394673893"></a><a name="_Toc396997416"></a><a
name="_Toc62570141"><span style='color:black;font-weight:normal'>11.4.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Example
Using Right-to-Left Display for 'leastSignificantBitFirst'</a></h3>
<p class=MsoNormal>When working exclusively with data having dfdl:bitOrder
'leastSignificantBitFirst', it is useful to present data with bytes Right to
Left. That is, with the bytes starting at byte 1 on the right and increasing to
the left.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#7030A0'>01</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:#00B050'>0101</span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:red'>00 01001</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#0070C0'>011</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:black'> </span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#7030A0'>DD</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:#00B050'>CCCC</span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:red'>BB BBBBB</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#0070C0'>AAA</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:black'> </span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Significance&nbsp; M&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;L
M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Bit Position&nbsp; </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#7030A0'>87</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>6543</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:red'>21 87654</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:#0070C0'>321</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:black'> </span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Byte Position ----2--- ----1---<a name="_Toc391372301"></a></span></p>
</div>
<p class=MsoNormal>With this reorientation, the bits of the element 'B' are
once again displayed adjacently. Within the bits of an individual element the
most significant bit is on the left, least significant on the right, consistent
with the way the bytes themselves are presented.</p>
<p class=MsoNormal>Often the specification documents for data formats using
least-significant-bit-first bit order describe data using this Right-to-Left
presentation style.</p>
<h3><a name="_Toc394673894"></a><a name="_Toc396997417"></a><a
name="_Toc62570142"><span style='color:black;font-weight:normal'>11.4.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:bitOrder
and Grammar Regions</a></h3>
<p class=MsoNormal style='page-break-after:avoid'>When any grammar region
appears before (to the left of) or after (to the right of) another grammar
region in the grammar rules of Section <span
class=MsoHyperlink>9.2</span>, and the boundary between the two falls within a
byte rather than on a byte boundary, then the dfdl:bitOrder determines which
bits are occupied by the regions. </p>
<p class=MsoNormal>In general, the notion of <i>before</i> means occupying
lower-numbered bit positions, and the bit positions are numbered according to
dfdl:bitOrder. Hence, when dfdl:bitOrder is 'mostSignificantBitFirst', grammar
regions that are before, occupy more-significant bits, and when dfdl:bitOrder
is 'leastSignificantBitFirst', grammar regions that are before occupy
less-significant bits.</p>
<h1><a name="_Toc177399080"></a><a name="_Toc175057367"></a><a
name="_Toc199516306"></a><a name="_Toc194983970"></a><a name="_Toc243112818"></a><a
name="_Ref255476176"></a><a name="_Toc349042719"></a><a name="_Toc62570143"></a><a
name="_Toc322911618"></a><a name="_Toc322912157"></a><a name="_Toc329093007"></a><a
name="_Toc332701520"></a><a name="_Toc332701827"></a><a name="_Toc332711621"></a><a
name="_Toc332711929"></a><a name="_Toc332712231"></a><a name="_Toc332724147"></a><a
name="_Toc332724447"></a><a name="_Toc341102743"></a><a name="_Toc347241476"></a><a
name="_Toc347744669"></a><a name="_Toc348984452"></a><a name="_Toc348984757"></a><a
name="_Toc349037920"></a><a name="_Toc349038225"></a><a name="_Toc349042718"></a><a
name="_Toc349642139"></a><a name="_Toc351912716"></a><a name="_Toc351914737"></a><a
name="_Toc351915203"></a><a name="_Toc361231260"></a><a name="_Toc361231786"></a><a
name="_Toc362445084"></a><a name="_Toc363909006"></a><a name="_Toc364463429"></a><a
name="_Toc366078027"></a><a name="_Toc366078646"></a><a name="_Toc366079631"></a><a
name="_Toc366080243"></a><a name="_Toc366080852"></a><a name="_Toc366505192"></a><a
name="_Toc366508561"></a><a name="_Toc366513062"></a><a name="_Toc366574251"></a><a
name="_Toc366578044"></a><a name="_Toc366578638"></a><a name="_Toc366579230"></a><a
name="_Toc366579821"></a><a name="_Toc366580413"></a><a name="_Toc366581004"></a><a
name="_Toc366581596"></a><a name="_Framing"></a>12<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Framing</h1>
<p class=nobreak>Several properties are common across the various framing
styles or are used to distinguish them. Generally, these have to do with
position and length for text, bit fields, or opaque data.</p>
<h2><a name="_Toc130873645"></a><a name="_Toc140549617"></a><a
name="_Toc177399081"></a><a name="_Toc175057368"></a><a name="_Toc199516307"></a><a
name="_Toc194983971"></a><a name="_Toc243112819"></a><a name="_Toc349042720"></a><a
name="_Toc62570144">12.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Aligned Data</a></h2>
<p class=MsoNormal>Alignment properties control the leading alignment and
trailing alignment regions. That is, the LeadingAlignment and TrailingAlignment
regions of the data syntax grammar (in Section <span
class=MsoHyperlink>9.2</span>). </p>
<p class=MsoNormal>When the alignment properties are applied to an array
element, the properties are applied to each occurrence of the element; that is,
not only to the first occurrence.</p>
<p class=MsoNormal>The following properties are used to define alignment rules.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Prop<span style='color:black'>erty Name</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>alignment</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer or 'implicit'</p>
<p class=MsoNormal>A non-negative number that gives the alignment required
for the beginning of the item. If alignment is needed then the size of the <b><i>AlignmentFill</i></b>
grammar region is non-zero if the item must be aligned to a boundary.</p>
<p class=MsoNormal>'implicit' specifies that the natural alignment for the
representation type is used. See the table of implicit alignments Table
15 Implicit Alignment in bits for simple elements. The 'implicit' alignment
of a complex element is the alignment of its model group. The 'implicit'
alignment of a model group is always 1. If alignment is 'implicit' then dfdl:alignmentUnits
is ignored.</p>
<p class=MsoNormal>For textual data, minimum alignment is mandated by the
character-set encoding, and this property must be 'implicit' or set to a
multiple of the character-set's mandatory alignment. See Section <span class=MsoHyperlink>12.1.2</span>. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>alignmentUnits</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'bits' or 'bytes'</p>
<p class=MsoNormal>Scales the alignment so alignment can be specified in
either units of bits or units of bytes.</p>
<p class=MsoNormal>Only used when dfdl:alignment not 'implicit'</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fillByte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>A single byte specified as a DFDL byte value entity or a
single character. If a character is specified, it must be a single-byte
character in the applicable encoding.</p>
<p class=MsoNormal>Used on unparsing to fill empty space such as between two
aligned elements.</p>
<p class=MsoNormal>Used to fill these regions specified in the grammar: <b><i>RightFill</i></b>,
<b><i>Element</i></b><b><i>Unused</i></b>, <b><i>ChoiceUnused</i></b><b><i>,</i></b>
<b><i>LeadingSkip</i></b>, <b><i>AlignmentFill</i></b>, and <b><i>TrailingSkip</i></b>.
</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group&nbsp; </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>leadingSkip</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>A non-negative number of bytes or bits, depending on dfdl:alignmentUnits,
to skip before alignment is applied. Gives the size of the grammar region
having the same name.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType, dfdl:sequence,
dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>trailingSkip</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>A non-negative number of bytes or bits, depending on
dfdl:alignmentUnits, to skip after the element, but before considering the
alignment of the next element. Gives the size of the grammar region having
the same name.</p>
<p class=MsoNormal>If dfdl:trailingSkip is specified when dfdl:lengthKind is
'delimited' then a dfdl:terminator must be specified.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType, dfdl:sequence, dfdl:choice, dfdl:group</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 14 Aligned Data Properties</p>
<p class=MsoNormal>There are two properties which control the data alignment by
controlling the length of the <b><i>AlignmentFill</i></b> region</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>alignment - an integer 1 or greater </li>
<li class=MsoNormal>alignmentUnits - bits or bytes</li>
</ul>
<p class=MsoNormal>An element's representation is aligned to N units if P is
the first position in the representation and P mod N = 1. &nbsp;When parsing,
the position of the first unit of the data stream is 1.&nbsp;</p>
<p class=MsoNormal>For example, if dfdl:alignment is 4, and dfdl:alignmentUnits
is 'bytes', then the element's representation must begin at 1 or 1 plus a
multiple of 4 bytes.&nbsp; That is, 1, 5, 9, 13, 17 and so on. </p>
<p class=MsoNormal>The length of the <b>AlignmentFill</b> region is measured in
bits. If alignmentUnits is 'bytes' then the processor multiplies the alignment
value by 8 to get the bit alignment,&nbsp; If the position in the data stream
of the start of the <b>AlignmentFill</b> region is bit position N, then the
length of the <b>AlignmentFill</b> region is the smallest non-negative integer L
such that (L + N) mod B = 1. &nbsp;The position of the first bit of the aligned
component is P = L + N.</p>
<p class=MsoNormal>The <b><i>LeadingSkip</i></b> and <b><i>TrailingSkip</i></b>
regions length are controlled by two properties of corresponding names and the
dfdl:alignmentUnits property.</p>
<h3><a name="_Toc349042721"></a><a name="_Toc62570145"><span style='color:black;
font-weight:normal'>12.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Implicit Alignment</a></h3>
<p class=nobreak>When dfdl:alignment is 'implicit' the following alignment
values are applied for each logical type.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr style='page-break-inside:avoid'>
<td rowspan=2 valign=top style='border:solid windowtext 1.0pt;background:
#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>Type</b></p>
</td>
<td colspan=3 valign=top style='border:solid windowtext 1.0pt;border-left:
none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b><span style='color:black'>Alignment</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b><span style='color:black'>text</span></b></p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#D9D9D9;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b><span style='color:black'>binary</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>String</p>
</td>
<td rowspan=12 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Encoding Specific (usually
8 bits, with exceptions: See Section <span
class=MsoHyperlink>12.1.2</span>)</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Not applicable</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Float</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>32</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Double</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>64</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Decimal, Integer, nonNegativeInteger</p>
</td>
<td rowspan=8 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Packed decimals: 8</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binary: 8</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Long, UnsignedLong</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binary: 64</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Int, UnsignedInt</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binary: 32</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Short, UnsignedShort</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binary: 16</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Byte, UnsignedByte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binary: 8</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>DateTime</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binarySeconds: 32,
binaryMilliseconds:64</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Date</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binarySeconds: 32,
binaryMilliseconds:64</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Time</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>binarySeconds: 32,
binaryMilliseconds:64</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Boolean</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>32</p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>HexBinary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Not applicable</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>8</p>
</td>
</tr>
</table>
<p class=MsoCaption style='page-break-after:avoid'><a name="_Ref251664433">Table
</a>15 Implicit Alignment in bits</p>
<p class=MsoNormal>Note: The above table specifies the implicit alignment in bits,
but this does not imply that dfdl:alignmentUnits 'bits' can be specified for
all simple types. Rather, dfdl:alignmentUnits and dfdl:lengthUnits are
independent and have their own rules for when they are applicable.</p>
<h3><a name="_Ref346455586"></a><a name="_Toc349042722"></a><a
name="_Toc62570146"><span style='color:black;font-weight:normal'>12.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Mandatory
Alignment for Textual Data</a></h3>
<p class=MsoNormal><b><i>Textual Data</i></b> &#8211; This term is used to
describe data of type xs:string, data with dfdl:representation
&quot;text&quot;, as well as data being matched to delimiters (parsing) or
output as delimiters (unparsing), and data being matched to regular expressions
(parsing only - as in a dfdl:assert with testKind 'pattern', or an element with
dfdl:lengthKind 'pattern').</p>
<p class=MsoNormal>Textual data has mandatory alignment that is
character-set-encoding dependent. That is, these mandates come from the character
set encoding specified by the dfdl:encoding property. </p>
<p class=MsoNormal>When processing textual data, it is a Schema Definition
Error if the dfdl:alignment and dfdl:alignmentUnits properties are used to
specify alignment that is not a multiple of the encoding-specified mandatory
alignment.</p>
<p class=MsoNormal>If the data is not aligned to the proper boundary for the
encoding when textual data is processed, then bits are skipped (parsing) or
filled from dfdl:fillByte (unparsing) to achieve the mandatory alignment.</p>
<p class=MsoNormal>All required character set encodings in DFDL have
8-bit/1-byte alignment.</p>
<p class=MsoNormal>DFDL standard encodings specify their alignment. See Section
<span class=MsoHyperlink>33</span> Appendix
D: DFDL Standard Encodings.</p>
<p class=MsoNormal>Some implementations MAY include additional implementation-defined
encodings which have other alignments. </p>
<p class=MsoNormal>Note the 16-bit and 32-bit Unicode character set encodings
UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, all have 8-bit/1-byte
alignment. </p>
<h3><a name="_Toc177399083"></a><a name="_Toc175057370"></a><a
name="_Toc199516308"></a><a name="_Toc194983972"></a><a name="_Toc243112820"></a><a
name="_Toc349042724"></a><a name="_Ref362445719"></a><a name="_Ref362445729"></a><a
name="_Toc62570147"></a><a name="_Toc347241481"></a><a name="_Toc347744674"></a><a
name="_Toc348984457"></a><a name="_Toc348984762"></a><a name="_Toc349037925"></a><a
name="_Toc349038230"></a><a name="_Toc349042723"></a><a name="_Toc349642144"></a><a
name="_Toc351912721"></a><a name="_Toc351914742"></a><a name="_Toc351915208"></a><a
name="_Toc361231265"></a><a name="_Toc361231791"></a><a name="_Toc362445089"></a><a
name="_Toc363909011"></a><a name="_Toc364463434"></a><a name="_Toc366078032"></a><a
name="_Toc366078651"></a><a name="_Toc366079636"></a><a name="_Toc366080248"></a><a
name="_Toc366080857"></a><a name="_Toc366505197"></a><a name="_Toc366508566"></a><a
name="_Toc366513067"></a><a name="_Toc366574256"></a><a name="_Toc366578049"></a><a
name="_Toc366578643"></a><a name="_Toc366579235"></a><a name="_Toc366579826"></a><a
name="_Toc366580418"></a><a name="_Toc366581009"></a><a name="_Toc366581601"></a><a
name="_Toc184191986"></a><a name="_Toc184210526"></a><a name="_Toc184191987"></a><a
name="_Toc184210527"></a><a name="_Toc184191988"></a><a name="_Toc184210528"></a><span
style='color:black;font-weight:normal'>12.1.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Mandatory Alignment for Packed Decimal Data</h3>
<p class=nobreak>Packed decimal data is data with dfdl:binaryNumberRep<a
href="#_ftn37" name="_ftnref37" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[37]</span></span></span></a>
values of 'packed', 'ibm4690Packed' or 'bcd'. This representation stores a
decimal digit in a 4 bit nibble. These nibbles must have a multiple of 4-bit
alignment. It is a Schema Definition Error otherwise.</p>
<h3><a name="_Toc394673895"></a><a name="_Toc396997418"></a><a
name="_Toc62570148"><span style='color:black;font-weight:normal'>12.1.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Example:
AlignmentFill</a></h3>
<p class=MsoNormal style='page-break-after:avoid'>When dfdl:alignmentUnits is
'bits', and the dfdl:alignment is not a multiple of 8, then the dfdl:bitOrder
property affects the alignment by controlling which bits are skipped as part of
the grammar <b><i>AlignmentFill</i></b> region. </p>
<p class=MsoNormal>In general, the <b><i>AlignmentFill</i></b> region is <i>before</i>
the regions it is aligning, and within a byte, the meaning of <i>'before'</i>
is interpreted with respect to the dfdl:bitOrder.</p>
<p class=MsoNormal>When dfdl:bitOrder is 'mostSignificantBitFirst', then bits
with more significance are before bits with less significance, so the <b><i>AlignmentFill</i></b>
region occupies the most significant bits of the byte. </p>
<p class=MsoNormal>When dfdl:bitOrder is 'leastSignificantBitFirst', then bits
with less significance are before bits with more significance, so the <b><i>AlignmentFill</i></b>
region occupies the least significant bits of the byte. </p>
<p class=MsoNormal>Consider a structure of 2 logical elements. Assume the
length and alignment units are bits. (dfdl:lengthUnits='bits',
dfdl:alignmentUnits='bits'), and that the data is binary with twos-complement
binary integers (dfdl:representation='binary', dfdl:binaryNumberRep='binary'),
and assume the data is at the beginning of the data stream. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&lt;element name=&quot;A&quot; type=&quot;xs:int&quot;
dfdl:length=&quot;2&quot; dfdl:alignment='8'/&gt; </span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&lt;!-- having value 1 --&gt;</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>&lt;element name=&quot;B&quot; type=&quot;xs:int&quot; dfdl:length=&quot;4&quot;
dfdl:alignment='4'/&gt;</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>&lt;!-- having value 5 --&gt;</span></p>
</div>
<p class=MsoNormal>The above are colorized to highlight the corresponding bits
in the data below. The total length due to the alignment region appearing
before element 'B' is 8 bits.</p>
<p class=MsoNormal>In a format where dfdl:bitOrder is 'mostSignificantBitFirst'
the data can be visualized as:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
01</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#00B050'>00</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:red'>0101</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
AA</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#00B050'>xx</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:red'>BBBB </span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Significance&nbsp; M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Bit Position&nbsp; </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:#00B0F0'>12</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>34</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:red'>5678</span></p>
</div>
<p class=MsoNormal>In the above, the <b><i>AlignmentFill</i></b> region is
marked with 'x' characters and contains all 0 bit values.</p>
<p class=MsoNormal>In a format where dfdl:bitOrder is
'leastSignificantBitFirst' the presentation is different: </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>0101</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#00B050'>00</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:#0070C0'>01</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#0070C0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:red'>BBBB</span><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:#00B050'>xx</span><span lang=EN-GB style='font-size:9.0pt;font-family:
"Courier New";color:#0070C0'>AA</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Significance&nbsp; M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Bit Position&nbsp; </span><span lang=EN-GB style='font-size:9.0pt;
font-family:"Courier New";color:red'>8765</span><span lang=EN-GB
style='font-size:9.0pt;font-family:"Courier New";color:#00B050'>43</span><span
lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";color:#00B0F0'>21</span></p>
</div>
<p class=MsoNormal>In the above the <b><i>AlignmentFill</i></b> region still
appears before element 'B', and in this case that is in less significant bits
of the byte than the bits of content of element 'B', and these bits are
displayed to the right of the bits of element 'B'. </p>
<h2><a name="_Ref38544226"></a><a name="_Ref38544219"></a><a name="_Ref38541465"></a><a
name="_Ref38541453"></a><a name="_Toc62570149">12.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties for Specifying Delimiters</a> </h2>
<p class=nobreak>The following properties apply to all objects that use text
delimiters to delimit, that is, to initiate and/or terminate data. Delimiters
can apply to binary data; however, they are most often called 'text' delimiters
because the concept is much more commonly used for textual data formats.</p>
<p class=MsoNormal style='page-break-after:avoid'>When parsing, there can be
multiple delimiter candidates to be matched against the data stream. The
matching is performed in a <i>longest-match preferred</i> manner. That is, each
of the delimiter candidates is matched against the data, taking the longest
match possible for that candidate. Then across all the delimiter candidates,
the one with the longest match is the one that is selected as having been
found. Once a matching delimiter is found, no other matches are subsequently attempted
(i.e., there is no backtracking to try shorter matches.) Additional details on
the matching of DFDL String Literals are given in Appendix
C: Processing of DFDL String literals.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>initiator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents style='page-break-after:avoid'>List of DFDL String
Literals or DFDL Expression</p>
<p class=MsoNormal style='page-break-after:avoid'>Specifies an ordered
whitespace separated list of alternative DFDL String Literals one of which
marks the beginning of the element or group of elements.</p>
<p class=MsoNormal style='page-break-after:avoid'>This property can be
computed by way of an expression which returns a string containing a
whitespace separated list of DFDL String Literals.&nbsp; The expression must
not contain forward references to elements which have not yet been processed.
It is not permitted for an expression to return an empty string or a string
containing only whitespace. That is a Schema Definition Error.</p>
<p class=MsoNormal style='page-break-after:avoid'>Each string literal in the
list, whether apparent in the schema, or returned as the value of an
expression, is restricted to allow only certain kinds of DFDL String Literal
syntax:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL character entities are allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Byte Value entities ( %#rXX; ) are allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character Classes NL, WSP, WSP+, WSP*, and ES are allowed.
</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>If the ES entity or the WSP* entity appear alone as one of the
string literals in the list, then dfdl:initiatedContent must be
&quot;no&quot;. This restriction ensures that when dfdl:initiatedContent is
'yes' that the initiator cannot match zero-length data. </p>
<p class=MsoNormal style='page-break-after:avoid'>If the above rules are not
followed it is a Schema Definition Error.</p>
<p class=MsoNormal style='page-break-after:avoid'>The <b><i>Initiator</i></b>
region contains one of the initiator strings defined by dfdl:initiator. </p>
<p class=MsoNormal style='page-break-after:avoid'>When parsing, once a matching
initiator is found, no other matches are subsequently attempted (i.e., there is
no backtracking).</p>
<p class=MsoNormal style='page-break-after:avoid'>When an initiator is
specified, it is a Processing Error if the component is required and one of
the values is not found. </p>
<p class=MsoNormal style='page-break-after:avoid'>If dfdl:initiator is &quot;&quot;
(the empty string), that is the way a DFDL schema expresses a format which
does not use initiators. Hence, the <b><i>Initiator</i></b> region is of
length zero. </p>
<p class=MsoNormal style='page-break-after:avoid'>On unparsing the first
initiator in the list is automatically inserted into the <b><i>Initiator</i></b>
region.</p>
<p class=MsoNormal style='page-break-after:avoid'>If dfdl:ignoreCase is 'yes'
then the case of the string is ignored by the parser.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType, dfdl:sequence, dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>terminator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>List of DFDL String
Literals or DFDL Expression</p>
<p class=MsoNormal style='page-break-after:avoid'>Specifies an ordered
whitespace separated list of alternative text strings that one of which marks
the end of an element or group of elements. The strings MUST be searched for
in the longest first order.</p>
<p class=MsoNormal style='page-break-after:avoid'>This property can be
computed by way of an expression which returns a string of whitespace separated
list of values.&nbsp; The expression must not contain forward references to
elements which have not yet been processed.</p>
<p class=MsoNormal style='page-break-after:avoid'><span style='color:black'>This
property can be used to determine the length of an element as described in
Section </span><a href="#_Toc322911627">12.3.2</a><span style='color:black'>
dfdl:lengthKind 'delimited'.</span></p>
<p class=MsoNormal style='page-break-after:avoid'>Each string literal in the
list, whether apparent in the schema, or returned as the value of an
expression, is restricted to allow only certain kinds of DFDL String Literal
syntax:</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;page-break-after:
avoid'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL character entities are allowed.</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;page-break-after:
avoid'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Byte Value entities ( %#rXX; ) are allowed.</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;page-break-after:
avoid'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character Classes NL, WSP, WSP+, WSP*, and ES are allowed.
</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in;page-break-after:
avoid'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Neither the ES entity nor the WSP* entity may appear on their
own as one of the string literals in the list when the parser is determining
the length of a component by scanning for delimiters.</p>
<p class=MsoNormal style='page-break-after:avoid'>If the above rules are not
followed it is a Schema Definition Error.</p>
<p class=MsoNormal style='page-break-after:avoid'>The <b><i>Terminator</i></b>
grammar region contains one of the terminator strings defined by
dfdl:terminator.</p>
<p class=MsoNormal style='page-break-after:avoid'>If dfdl:terminator is
&quot;&quot; (the empty string), that is the way a DFDL schema expresses a format
which does not use terminators. Hence, the <b><i>Terminator</i></b> region is
of length zero. It is not permitted for an expression to return an empty
string, that is a Schema Definition Error.</p>
<p class=MsoNormal style='page-break-after:avoid'>When parsing, once a matching
terminator is found, no other matches are subsequently attempted (i.e., there
is no backtracking).</p>
<p class=MsoNormal style='page-break-after:avoid'>When a terminator is
expected it is a Processing Error if no matching terminator is found.
However, if dfdl:documentFinalTerminatorCanBeMissing is specified then it is
not an error if the last terminator in the data stream is not found. </p>
<p class=MsoNormal style='page-break-after:avoid'>On unparsing the first
terminator in the list is automatically inserted in the Terminator region. </p>
<p class=MsoNormal style='page-break-after:avoid'>If dfdl:ignoreCase is 'yes'
then the case of the string is ignored by the parser.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType, dfdl:sequence, dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>emptyValueDelimiterPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum </p>
<p class=MsoNormal>Valid values are 'none', 'initiator', 'terminator' or
'both'</p>
<p class=MsoNormal>Indicates that when an element in the data stream is
empty, which of initiator, terminator, both, or neither must be present.</p>
<p class=MsoNormal>Ignored if both dfdl:initiator and dfdl:terminator are
&quot;&quot; (empty string).</p>
<p class=MsoNormal>'initiator' indicates that, on parsing, if the content
region (which can be either the SimpleContent region or the ComplexContent
region defined in Section <span
class=MsoHyperlink>9.2</span>)&nbsp; is empty then the dfdl:initiator must be
present. It also indicates that on unparsing when the content region is empty
that the dfdl:initiator is output.</p>
<p class=MsoNormal>'terminator' indicates that, on parsing, if the content
region is empty then the dfdl:terminator must be present. It also indicates
that on unparsing when the content region is empty the dfdl:terminator is
output.</p>
<p class=MsoNormal>'both' indicates&nbsp; that, on parsing, if the content
region is empty both the dfdl:initiator and dfdl:terminator must be present.
On unparsing when the content region is empty the dfdl:initiator followed by
the dfdl:terminator is output.</p>
<p class=MsoNormal>'none' indicates that if the content region is empty
neither the dfdl:initiator or dfdl:terminator must be present. On unparsing
when the content region is empty nothing is output.</p>
<p class=MsoNormal>It is a Schema Definition Error if
dfdl:emptyValueDelimiterPolicy set to 'none' or 'terminator' when the parent
group has dfdl:initiatedContent 'yes'.</p>
<p class=MsoNormal>This property plays an important role in establishing
empty representation. See <span
class=MsoHyperlink>9.2.2</span> <span
class=MsoHyperlink>Empty Representation</span> for details.</p>
<p class=MsoNormal>This property is ignored if the element is fixed-length
and length is not zero (as no empty representation is possible).</p>
<p class=MsoNormal>The value of dfdl:emptyValueDelimiterPolicy MUST only be
checked if there is a dfdl:initiator or dfdl:terminator in scope. If so, and
dfdl:emptyValueDelimiterPolicy is not set, it is a Schema Definition Error.</p>
<p class=MsoNormal>If dfdl:initiator is not &quot;&quot; and dfdl:terminator
is &quot;&quot; and dfdl:emptyValueDelimiterPolicy is 'terminator' it is a
Schema Definition Error.</p>
<p class=MsoNormal>If dfdl:terminator is not &quot;&quot; and dfdl:initiator
is &quot;&#8221; and dfdl:emptyValueDelimiterPolicy is 'initiator' it is a
Schema Definition Error.</p>
<p class=MsoNormal>It is not a Schema Definition Error if
dfdl:emptyValueDelimiterPolicy is 'both' and one or both of dfdl:initiator
and dfdl:terminator is &quot;&quot;. This is to accommodate the common use of
setting 'both' as a schema-wide setting.</p>
<p class=MsoNormal>It is a Schema Definition Error if
dfdl:emptyValueDelimiterPolicy is in effect and is set to 'none' or
'terminator' when the parent xs:sequence has dfdl:initiatedContent 'yes'.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>documentFinalTerminatorCanBeMissing</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Enum</p>
<p class=MsoNormal style='page-break-after:avoid'>Valid values are 'yes',
'no'</p>
<p class=MsoNormal style='page-break-after:avoid'>When the dfdl:documentFinalTerminatorCanBeMissing
property is true, then when an element is the last element in the data
stream, then on parsing, it is not an error if the terminator is not found,
and the terminator is considered to be logically present for the purposes of
establishing representation, per Section <span
class=MsoHyperlink>9.3.2</span>. </p>
<p class=MsoNormal style='page-break-after:avoid'>For example, if the data
are in a file, and the format specifies lines terminated by the newline
character (typically LF or CRLF), then if the last line is missing its
newline, then this would normally be an error, but if
dfdl:documentFinalTerminatorCanBeMissing is true, then this is not a Processing
Error.</p>
<p class=MsoNormal style='page-break-after:avoid'>On unparsing the terminator
is always written out regardless of the state of this property.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:format
(but applies to elements only) </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>outputNewLine</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>DFDL String Literal or DFDL
Expression</p>
<p class=MsoNormal style='page-break-after:avoid'>Specifies the character or
characters that are used to replace the %NL; character class entity during
unparse. </p>
<p class=MsoNormal style='page-break-after:avoid'>(The %NL; entity is defined
in Section <span class=MsoHyperlink>6.3.1.3</span> DFDL
Character Class Entities in DFDL String Literals.)</p>
<p class=MsoNormal style='page-break-after:avoid'>It is a Schema Definition
Error if any of the characters are not in the set of characters allowed by
the DFDL entity %NL; Only individual characters or the %CR;%LF; combination
are allowed.</p>
<p class=MsoNormal style='page-break-after:avoid'>It is a Schema Definition
Error if the DFDL entity %NL; is specified</p>
<p class=MsoNormal style='page-break-after:avoid'>This property can be
computed by way of an expression which returns a DFDL string literal. The
expression must not contain forward references to elements which have not yet
been processed.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType, dfdl:sequence, dfdl:choice, dfdl:group</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>emptyElementParsePolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are &quot;treatAsAbsent&quot; or
&quot;treatAsEmpty&quot;.</p>
<p class=MsoNormal>This property describes the behavior of the DFDL processor
<span style='color:black'>for occurrences of elements of any type that have
the empty representation</span>.</p>
<p class=MsoNormal>When 'treatAsEmpty' <span style='color:black'>if an
occurrence of an element has the empty representation when parsed, the
behaviour is as stated in Section 9 for an occurrence with empty
representation. Consequently, default values or empty strings may be added to
the Infoset.</span></p>
<p class=MsoNormal>When 'treatAsAbsent' <span style='color:black'>if an
occurrence of an element has the empty representation when parsed, the
behaviour is as stated in Section 9 for an absent occurrence. Consequently,
default values or empty strings are never added to the Infoset.</span></p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc190157561"></a>Table 16
Properties for Specifying Delimiters</p>
<h2><a name="_Toc177399087"></a><a name="_Toc175057374"></a><a
name="_Toc199516310"></a><a name="_Toc194983974"></a><a name="_Toc243112821"></a><a
name="_Toc349042725"></a><a name="_Ref38549263"></a><a name="_Ref38549269"></a><a
name="_Toc62570150"></a><a name="_Toc184191992"></a><a name="_Toc184210532"></a><a
name="_Toc184192009"></a><a name="_Toc184210549"></a><a name="_Toc184192011"></a><a
name="_Toc184210551"></a><a name="_Toc184192014"></a><a name="_Toc184210554"></a>12.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties for
Specifying Lengths </h2>
<p class=nobreak>These properties are used to determine the content length of
an element and apply to elements of all types (simple and complex).</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>lengthKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Controls how the content length of the component is
determined.</p>
<p class=MsoNormal>Valid values are: 'explicit', 'delimited', 'prefixed',
'implicit', 'pattern', 'endOfParent'</p>
<p class=MsoNormal>A full description of each enumeration is given in the
subsections of this section beginning with Section <span
class=MsoHyperlink>12.3.1</span>.</p>
<p class=MsoNormal>'explicit' means the length of the element is given by the
dfdl:length property.</p>
<p class=MsoNormal>'delimited' means the element length is determined by
scanning for a terminator or separator. </p>
<p class=MsoNormal>'prefixed' means the length of the element is given by an
immediately preceding PrefixLength data region the format of which is
specified using dfdl:prefixLengthType. </p>
<p class=MsoNormal>'implicit means the length is to be determined in terms of
the type of the element and its schema-specified properties if any.</p>
<p class=MsoNormal>'pattern' means the length of the element is given by
scanning for a regular expression specified using the dfdl:lengthPattern
property. </p>
<p class=MsoNormal>'endOfParent' means that the length extends to the end of
the containing (parent) construct.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>lengthUnits</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'bytes', 'characters', and 'bits'.</p>
<p class=MsoNormal>Specifies the units to be used whenever a length is being
used to extract or write data. Applicable when dfdl:lengthKind is 'explicit',
'implicit' (for xs:string and xs:hexBinary) or 'prefixed'.</p>
<p class=MsoNormal>Usage is restricted as follows:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'characters' may only be used for complex elements and simple
elements with text representation. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'bits' may only be used for xs:boolean, xs:byte, xs:short,
xs:int, xs:long, xs:unsignedByte, xs:unsignedShort, xs:unsignedInt, and
xs:unsignedLong simple types with binary representation, and for calendar
(date and time) simple types with binary packed representation.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'bytes' must be used for type xs:hexBinary and for types
xs:float and xs:double with binary representation. 'bytes' may be used for
any other type.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc322911624"></a><a name="_Toc322912163"></a><a
name="_Toc329093013"></a><a name="_Toc332701526"></a><a name="_Toc332701833"></a><a
name="_Toc332711627"></a><a name="_Toc332711935"></a><a name="_Toc332712237"></a><a
name="_Toc332724153"></a><a name="_Toc332724453"></a><a name="_Toc341102749"></a><a
name="_Toc347241484"></a><a name="_Toc347744677"></a><a name="_Toc348984460"></a><a
name="_Toc348984765"></a><a name="_Toc349037928"></a><a name="_Toc349038233"></a><a
name="_Toc349042726"></a><a name="_Toc351912724"></a><a name="_Toc351914745"></a><a
name="_Toc351915211"></a><a name="_Toc361231268"></a><a name="_Toc361231794"></a><a
name="_Toc362445092"></a><a name="_Toc363909014"></a><a name="_Toc364463438"></a>Table
17 Properties for Specifying Length</p>
<h3><a name="_Toc243112822"></a><a name="_Toc349042728"></a><a
name="_Ref38559143"></a><a name="_Toc62570151"></a><a name="_Toc322911625"></a><a
name="_Toc322912164"></a><a name="_Toc329093014"></a><a name="_Toc332701527"></a><a
name="_Toc332701834"></a><a name="_Toc332711628"></a><a name="_Toc332711936"></a><a
name="_Toc332712238"></a><a name="_Toc332724154"></a><a name="_Toc332724454"></a><a
name="_Toc341102750"></a><a name="_Toc347241485"></a><a name="_Toc347744678"></a><a
name="_Toc348984461"></a><a name="_Toc348984766"></a><a name="_Toc349037929"></a><a
name="_Toc349038234"></a><a name="_Toc349042727"></a><a name="_Toc351912725"></a><a
name="_Toc351914746"></a><a name="_Toc351915212"></a><a name="_Toc361231269"></a><a
name="_Toc361231795"></a><a name="_Toc362445093"></a><a name="_Toc363909015"></a><a
name="_Toc364463439"></a><a name="_Toc366078036"></a><a name="_Toc366078655"></a><a
name="_Toc366079640"></a><a name="_Toc366080252"></a><a name="_Toc366080861"></a><a
name="_Toc366505201"></a><a name="_Toc366508570"></a><a name="_Toc366513071"></a><a
name="_Toc366574260"></a><a name="_Toc366578053"></a><a name="_Toc366578647"></a><a
name="_Toc366579239"></a><a name="_Toc366579830"></a><a name="_Toc366580422"></a><a
name="_Toc366581013"></a><a name="_Toc366581605"></a><span style='color:black;
font-weight:normal'>12.3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:lengthKind 'explicit'</h3>
<p class=MsoNormal>When dfdl:lengthKind is 'explicit' the length of the item is
given by the dfdl:length property. </p>
<p class=MsoNormal>When the value of the dfdl:length property is a constant, it
is used both when parsing and unparsing. </p>
<p class=MsoNormal>When unparsing an element with dfdl:lengthKind 'explicit'
and where dfdl:length is an expression, then the data in the Infoset is treated
as fixed-length and the dfdl:length property, whether literal constant or
expression, is evaluated to provide the length to use. </p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When parsing and
dfdl:lengthKind is 'explicit', delimiter scanning is turned off and in-scope delimiters
are not looked for within or between elements.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>length</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer or DFDL Expression.&nbsp; </p>
<p class=MsoNormal>Only used when lengthKind is 'explicit'. </p>
<p class=MsoNormal>Specifies the length of this element in units that are
specified by the dfdl:lengthUnits property. </p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a non-negative integer. The expression must not contain forward
references to elements which have not yet been processed.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 18 The dfdl:length Property</p>
<p class=MsoNormal>When dfdl:lengthKind 'explicit', the method of extracting
data is described in Section: <span
class=MsoHyperlink>12.3.7</span> Elements
of Specified Length</p>
<h3><a name="_Toc349042731"></a><a name="_Toc62570152"></a><a
name="_Toc322911627"></a><a name="_Toc322912166"></a><a name="_Toc329093016"></a><a
name="_Toc332701529"></a><a name="_Toc332701836"></a><a name="_Toc332711630"></a><a
name="_Toc332711938"></a><a name="_Toc332712240"></a><a name="_Toc332724156"></a><a
name="_Toc332724456"></a><a name="_Toc341102752"></a><a name="_Toc347241487"></a><a
name="_Toc347744680"></a><a name="_Toc348984463"></a><a name="_Toc348984768"></a><a
name="_Toc349037931"></a><a name="_Toc349038236"></a><a name="_Toc349042729"></a><a
name="_Toc351912727"></a><a name="_Toc351914748"></a><a name="_Toc351915214"></a><a
name="_Toc361231271"></a><a name="_Toc361231797"></a><a name="_Toc362445095"></a><a
name="_Toc363909017"></a><a name="_Toc364463441"></a><a name="_Toc366078038"></a><a
name="_Toc366078657"></a><a name="_Toc366079642"></a><a name="_Toc366080254"></a><a
name="_Toc366080863"></a><a name="_Toc366505203"></a><a name="_Toc366508572"></a><a
name="_Toc366513073"></a><a name="_Toc366574262"></a><a name="_Toc366578055"></a><a
name="_Toc366578649"></a><a name="_Toc366579241"></a><a name="_Toc366579832"></a><a
name="_Toc366580424"></a><a name="_Toc366581015"></a><a name="_Toc366581607"></a><a
name="_Toc322911628"></a><a name="_Toc322912167"></a><a name="_Toc329093017"></a><a
name="_Toc332701530"></a><a name="_Toc332701837"></a><a name="_Toc332711631"></a><a
name="_Toc332711939"></a><a name="_Toc332712241"></a><a name="_Toc332724157"></a><a
name="_Toc332724457"></a><a name="_Toc341102753"></a><a name="_Toc347241488"></a><a
name="_Toc347744681"></a><a name="_Toc348984464"></a><a name="_Toc348984769"></a><a
name="_Toc349037932"></a><a name="_Toc349038237"></a><a name="_Toc349042730"></a><a
name="_Toc351912728"></a><a name="_Toc351914749"></a><a name="_Toc351915215"></a><a
name="_Toc361231272"></a><a name="_Toc361231798"></a><a name="_Toc362445096"></a><a
name="_Toc363909018"></a><a name="_Toc364463442"></a><a name="_Toc366078039"></a><a
name="_Toc366078658"></a><a name="_Toc366079643"></a><a name="_Toc366080255"></a><a
name="_Toc366080864"></a><a name="_Toc366505204"></a><a name="_Toc366508573"></a><a
name="_Toc366513074"></a><a name="_Toc366574263"></a><a name="_Toc366578056"></a><a
name="_Toc366578650"></a><a name="_Toc366579242"></a><a name="_Toc366579833"></a><a
name="_Toc366580425"></a><a name="_Toc366581016"></a><a name="_Toc366581608"></a><a
name="_dfdl:lengthKind_'delimited'"></a><span style='color:black;font-weight:
normal'>12.3.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:lengthKind
'delimited'</h3>
<p class=nobreak style='page-break-after:auto'>On parsing, the length of an
element with dfdl:lengthKind 'delimited' is determined by scanning the data
stream for the delimiter.</p>
<p class=MsoNormal>The data stream is scanned for any of </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the element's terminator (if specified)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>an enclosing construct's separator or terminator </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the end of an enclosing element designated by its known length </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the end of the data stream</p>
<p class=MsoNormal>dfdl:lengthKind 'delimited' may be specified for </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>elements of simple type with text representation</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>elements of number or calendar (date and time) simple type with
dfdl:representation 'binary' that have a packed decimal representation</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>elements of type xs:hexBinary</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>elements of complex type.</p>
<p class=MsoNormal>The rules for resolving ambiguity between delimiters are:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>When two delimiters have a common prefix, the longest
delimiter is tried first.</li>
<li class=MsoNormal>When two delimiters have the same length, but on different
schema components, the innermost (most deeply nested) delimiter is tried
first.</li>
<li class=MsoNormal>When the separator and terminator on a group have the same
value, then at a point in the data where either the separator or
terminator could be found, the separator is tried first. (Speculative
execution may try the terminator subsequently).</li>
<li class=MsoNormal>If the length of the delimiters cannot be determined
because character class entities of variable length are being used then
the delimiters MUST each be matched against the data, and the longest
matching delimiter is taken as the match for the delimiter.</li>
<li class=MsoNormal>Ties (same matched length) are broken by giving a
separator priority over a terminator of a sequence, or by choosing the
innermost, or first in schema order.</li>
</ol>
<p class=MsoNormal>When unparsing a simple element with text representation,
the length in the data stream is the length of the content region, padded to a
minimum length if dfdl:textPadKind is &#8216;padChar&#8217;. For xs:string
elements this length is the XSD minLength facet value, for the other types it
is dfdl:textOutputMinLength property value. </p>
<p class=MsoNormal>When unparsing a simple element with binary representation,
then for hexBinary the length is the number of bytes in the Infoset value
padded to the XSD minLength facet value using dfdl:fillByte, and for the other
types the length is the minimum number of bytes to represent the value and any
sign.</p>
<p class=MsoNormal>When unparsing a complex element, the length is that of the
ComplexContent region. </p>
<h4><span style='color:black;font-weight:normal'>12.3.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Non-Delimited
Elements within Delimited Constructs</h4>
<p class=MsoNormal>When a simple or complex element has a specified length,
dfdl:lengthKind 'pattern', or dfdl:lengthKind 'endOfParent' then delimiter
scanning is suspended for the duration of the processing of that element. </p>
<p class=MsoNormal>This allows formats to be parsed which are delimited but
have nested elements which contain non-character data so long as that nested
data can be isolated from the delimited data context surrounding it. </p>
<h4><span style='color:black;font-weight:normal'>12.3.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Delimited
Binary Data</h4>
<p class=MsoNormal>Formats involving binary data, most notably packed decimals,
can use delimiter scanning but care must be taken that the delimiters cannot
match data represented in these formats. In particular, the delimiters must be
chosen with knowledge that BCD data can contain any byte both of whose nibbles
are 0 to 9 (that is, excluding A to F). Packed data adds bytes with a sign
indicator, that is, a nibble in the range A to F. </p>
<p class=MsoNormal>General binary data can contain any bit pattern whatsoever,
so delimiter scanning for numbers and calendar types with dfdl:representation
'binary' is disallowed, with the specific exception of packed decimals.
Delimiter scanning is also allowed for type xs:hexBinary.</p>
<p class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Implementation
Note: Scanning for delimiters when data is binary, or when using byte-value
(aka raw byte) entities in delimiters, means that a simple character-based
delimiter scanner IS NOT sufficient, as the delimiter may not be representable
as characters. </span></em></p>
<h3><a name="_Toc349042734"></a><a name="_Ref364440413"></a><a
name="_Ref364440418"></a><a name="_Ref364440440"></a><a name="_Ref384893986"></a><a
name="_Toc62570153"></a><a name="_Toc366078041"></a><a name="_Toc366078660"></a><a
name="_Toc366079645"></a><a name="_Toc366080257"></a><a name="_Toc366080866"></a><a
name="_Toc366505206"></a><a name="_Toc366508575"></a><a name="_Toc366513076"></a><a
name="_Toc366574265"></a><a name="_Toc366578058"></a><a name="_Toc366578652"></a><a
name="_Toc366579244"></a><a name="_Toc366579835"></a><a name="_Toc366580427"></a><a
name="_Toc366581018"></a><a name="_Toc366581610"></a><a name="_Toc322911630"></a><a
name="_Toc322912169"></a><a name="_Toc332701532"></a><a name="_Toc332701839"></a><a
name="_Toc332711633"></a><a name="_Toc332711941"></a><a name="_Toc332712243"></a><a
name="_Toc332724159"></a><a name="_Toc332724459"></a><a name="_Toc341102755"></a><a
name="_Toc347241490"></a><a name="_Toc347744683"></a><a name="_Toc348984466"></a><a
name="_Toc348984771"></a><a name="_Toc349037934"></a><a name="_Toc349038239"></a><a
name="_Toc349042732"></a><a name="_Toc351912730"></a><a name="_Toc351914751"></a><a
name="_Toc351915217"></a><a name="_Toc361231274"></a><a name="_Toc361231800"></a><a
name="_Toc362445098"></a><a name="_Toc363909020"></a><a name="_Toc364463444"></a><a
name="_Toc366078042"></a><a name="_Toc366078661"></a><a name="_Toc366079646"></a><a
name="_Toc366080258"></a><a name="_Toc366080867"></a><a name="_Toc366505207"></a><a
name="_Toc366508576"></a><a name="_Toc366513077"></a><a name="_Toc366574266"></a><a
name="_Toc366578059"></a><a name="_Toc366578653"></a><a name="_Toc366579245"></a><a
name="_Toc366579836"></a><a name="_Toc366580428"></a><a name="_Toc366581019"></a><a
name="_Toc366581611"></a><a name="_Toc322911631"></a><a name="_Toc322912170"></a><a
name="_Toc329093020"></a><a name="_Toc332701533"></a><a name="_Toc332701840"></a><a
name="_Toc332711634"></a><a name="_Toc332711942"></a><a name="_Toc332712244"></a><a
name="_Toc332724160"></a><a name="_Toc332724460"></a><a name="_Toc341102756"></a><a
name="_Toc347241491"></a><a name="_Toc347744684"></a><a name="_Toc348984467"></a><a
name="_Toc348984772"></a><a name="_Toc349037935"></a><a name="_Toc349038240"></a><a
name="_Toc349042733"></a><a name="_Toc351912731"></a><a name="_Toc351914752"></a><a
name="_Toc351915218"></a><a name="_Toc361231275"></a><a name="_Toc361231801"></a><a
name="_Toc362445099"></a><a name="_Toc363909021"></a><a name="_Toc364463445"></a><a
name="_Toc366078043"></a><a name="_Toc366078662"></a><a name="_Toc366079647"></a><a
name="_Toc366080259"></a><a name="_Toc366080868"></a><a name="_Toc366505208"></a><a
name="_Toc366508577"></a><a name="_Toc366513078"></a><a name="_Toc366574267"></a><a
name="_Toc366578060"></a><a name="_Toc366578654"></a><a name="_Toc366579246"></a><a
name="_Toc366579837"></a><a name="_Toc366580429"></a><a name="_Toc366581020"></a><a
name="_Toc366581612"></a><span style='color:black;font-weight:normal'>12.3.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:lengthKind
'implicit'</h3>
<p class=MsoNormal>When dfdl:lengthKind is 'implicit', the length is determined
in terms of the type of the element and its schema-specified properties.</p>
<p class=MsoNormal>For complex elements, 'implicit' means the length is
determined by the combined lengths of the contained children, that is the
ComplexValue region, and the ElementUnused region is of size 0. However, note
that alignment regions inside the contained children within the ComplexValue
region may be of different lengths depending on the ComplexValue's starting
position alignment.</p>
<p class=MsoNormal>For simple elements the length is fixed and is given in <span class=MsoHyperlink>Table 19 Length in Bits for SimpleTypes when dfdl:lengthKind
is 'implicit' </span>.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td width=138 rowspan=2 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Type</b></p>
</td>
<td width=438 colspan=3 valign=top style='width:328.25pt;border:solid windowtext 1.0pt;
border-left:none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>Length</span></b></p>
</td>
</tr>
<tr>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>text</span></b></p>
</td>
<td width=271 colspan=2 valign=top style='width:203.55pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#D9D9D9;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>binary</span></b></p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The XSD maxLength facet gives length in characters, but
this is also the length in bytes. (See note below: character set encoding
must be single-byte.) Multiply by 8 to get number of bits.</p>
</td>
<td width=271 colspan=2 valign=top style='width:203.55pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not applicable</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Float</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=271 colspan=2 valign=top style='width:203.55pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Double</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=271 colspan=2 valign=top style='width:203.55pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>64 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Decimal, Integer, nonNegativeInteger</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=124 rowspan=8 valign=top style='width:93.05pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>packed decimal: Not
allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: Not allowed</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Long, UnsignedLong</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 64 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Int, UnsignedInt</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 32 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Short, UnsignedShort</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 16 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Byte, UnsignedByte</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 8 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DateTime</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binarySeconds: 32 bits, binaryMilliseconds: 64 bits.</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Date</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binarySeconds: Not allowed, binaryMilliseconds: Not
allowed</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Time</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not allowed</p>
</td>
<td width=147 valign=top style='width:110.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binarySeconds: Not allowed, binaryMilliseconds: Not
allowed</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Boolean</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Length of&nbsp; longest of dfdl:textBooleanTrueRep and
dfdl:textBooleanFalseRep values</p>
</td>
<td width=271 colspan=2 valign=top style='width:203.55pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32 bits</p>
</td>
</tr>
<tr>
<td width=138 valign=top style='width:103.25pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>HexBinary</p>
</td>
<td width=166 valign=top style='width:124.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not applicable</p>
</td>
<td width=271 colspan=2 valign=top style='width:203.55pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The XSD maxLength facet gives the length in bytes.
Multiply by 8 to convert to number of bits.</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Ref241577749">Table </a>19
Length in Bits for SimpleTypes when dfdl:lengthKind is 'implicit' </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'Not Allowed' means that there is no implicit length for the
combination of simple type and representation, and it is a Schema Definition
Error if dfdl:lengthKind&nbsp; 'implicit' is specified.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>packed decimal means dfdl:binaryNumberRep is 'packed', 'bcd', or
'ibm4690Packed'</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>binary means dfdl:binaryNumberRep is 'binary' </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>binarySeconds means dfdl:binaryCalendarRep is 'binarySeconds'</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>binaryMilliseconds means dfdl:binaryCalendarRep is 'binaryMilliseconds'.</p>
<p class=MsoNormal>When dfdl:lengthKind is 'implicit', the method of extracting
data is described in Section <span
class=MsoHyperlink>12.3.7</span> <span
class=MsoHyperlink>Elements of Specified Length</span>.</p>
<p class=MsoNormal>It is a Schema Definition Error if type is xs:string and
dfdl:lengthKind is 'implicit' and dfdl:lengthUnits is 'bytes' and encoding is
not an SBCS (exactly 1 byte per character code) encoding. This prevents a
scenario where validation against the XSD maxLength facet is in characters but
parsing and unparsing using the XSD maxLength facet is in bytes.</p>
<h3><a name="_Ref346456599"></a><a name="_Toc349042736"></a><a
name="_Toc62570154"></a><a name="_Toc177399092"></a><a name="_Toc175057379"></a><a
name="_Toc199516315"></a><a name="_Toc194983979"></a><a name="_Toc322911633"></a><a
name="_Toc322912172"></a><a name="_Toc329093022"></a><a name="_Toc332701535"></a><a
name="_Toc332701842"></a><a name="_Toc332711636"></a><a name="_Toc332711944"></a><a
name="_Toc332712246"></a><a name="_Toc332724162"></a><a name="_Toc332724462"></a><a
name="_Toc341102758"></a><a name="_Toc347241493"></a><a name="_Toc347744686"></a><a
name="_Toc348984469"></a><a name="_Toc348984774"></a><a name="_Toc349037937"></a><a
name="_Toc349038242"></a><a name="_Toc349042735"></a><a name="_Toc351912733"></a><a
name="_Toc351914754"></a><a name="_Toc351915220"></a><a name="_Toc361231277"></a><a
name="_Toc361231803"></a><a name="_Toc362445101"></a><a name="_Toc363909023"></a><a
name="_Toc364463447"></a><a name="_Toc366078045"></a><a name="_Toc366078664"></a><a
name="_Toc366079649"></a><a name="_Toc366080261"></a><a name="_Toc366080870"></a><a
name="_Toc366505210"></a><a name="_Toc366508579"></a><a name="_Toc366513080"></a><a
name="_Toc366574269"></a><a name="_Toc366578062"></a><a name="_Toc366578656"></a><a
name="_Toc366579248"></a><a name="_Toc366579839"></a><a name="_Toc366580431"></a><a
name="_Toc366581022"></a><a name="_Toc366581614"></a><span style='color:black;
font-weight:normal'>12.3.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:lengthKind 'prefixed'</h3>
<p class=MsoNormal>When dfdl:lengthKind is 'prefixed' the length of the element
is given by the integer value of the PrefixLength region specified using
dfdl:prefixLengthType. The property dfdl:prefixIncludesPrefixLength also can be
used to adjust the length appropriately. </p>
<p class=MsoNormal>When dfdl:lengthKind is 'prefixed' the method of extracting
data is described in Section <span
class=MsoHyperlink>12.3.7</span> <span
class=MsoHyperlink>Elements of Specified Length</span></p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When
dfdl:lengthKind is 'prefixed', delimiter scanning is turned off and in-scope delimiters
are not looked for within or between elements.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>prefixIncludesPrefixLength</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Enum</p>
<p class=MsoNormal style='page-break-after:avoid'>Valid values are 'yes',
'no'</p>
<p class=MsoNormal>Specifies whether the length given by a prefix includes
the length of the prefix as well as the length of the content region which
can be either the SimpleContent region or the ComplexContent region defined
in Section <span class=MsoHyperlink>9.2</span> DFDL
Data Syntax Grammar.</p>
<p class=MsoNormal style='page-break-after:avoid'>Used only when
dfdl:lengthKind 'prefixed'.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>prefixLengthType</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>QName</p>
<p class=MsoNormal>Name of a simple type derived from xs:integer or any
subtype of it.</p>
<p class=MsoNormal>This type, with its DFDL annotations specifies the
representation of the length prefix, which is in the PrefixLength region.</p>
<p class=MsoNormal>It is a Schema Definition Error if the xs:simpleType
specifies any of: </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:lengthKind 'delimited', 'endOfParent', or 'pattern'
</li>
<li class=MsoNormal>dfdl:lengthKind 'explicit' where length is an expression</li>
<li class=MsoNormal>dfdl:outputValueCalc</li>
<li class=MsoNormal>dfdl:initiator or dfdl:terminator other than empty string</li>
<li class=MsoNormal>dfdl:alignment other than '1'</li>
<li class=MsoNormal>dfdl:leadingSkip or dfdl:trailingSkip other than '0'.</li>
</ul>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 20 Properties for dfdl:lengthKind 'prefixed'</p>
<p class=MsoNormal>The representation of the element is in two parts. </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>The 'prefix length' is an integer which specifies the
length of the element's content. The representation of the length prefix
is described by a simple type which is identified using the
dfdl:prefixLengthType property.</li>
<li class=MsoNormal>The content of the element. </li>
</ol>
<p class=MsoNormal>When parsing, the length of the element's content is
obtained by parsing the simple type specified by dfdl:prefixLengthType to
obtain an integer value. Note that all required properties must be present on
the specified simple type or defaulted because there is no element declaration
to supply any missing required properties. </p>
<p class=MsoNormal>If the dfdl:prefixIncludesPrefixLength property is 'yes'
then the length of the element's content is the value of the prefix length
minus the length of the content of the prefix length.</p>
<p class=MsoNormal>If the prefix type is dfdl:lengthKind 'implicit' or
'explicit' then the dfdl:lengthUnits properties of both the prefix type and the
element must be the same.</p>
<p class=MsoNormal style='text-autospace:none'>The DFDL properties that specify
the format of the prefix come from annotations directly on the
dfdl:prefixLengthType's type definition, and from the default format annotation
for the schema document containing the definition of that type. If the
using-element resides in a separate schema, the simple type does not pick up
values from the element's schema's default dfdl:format annotation.</p>
<p class=MsoNormal>When unparsing, the length of the element's content region
can be determined first as described below. Then the value of the prefix length
MUST be adjusted based on the value of the dfdl:prefixIncludesPrefixLength
property.</p>
<p class=MsoNormal>Then the prefix length can be written to the data stream
using the properties on the dfdl:prefixLengthType, and finally the element's
content can be written to the data stream.</p>
<p class=MsoNormal>Consider this example:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:element name=&quot;myString&quot;
type=&quot;xs:string&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;prefixed&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:prefixIncludesPrefixLength=&quot;no&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:prefixLengthType=&quot;packed3&quot;/&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:simpleType name=&quot;packed3&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation=&quot;binary&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:</span><span lang=EN-GB style='color:black'>binaryNumberRep</span><span
lang=EN-GB style='color:black'>=&quot;packed&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;explicit&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:length=&quot;2&quot; &gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:restriction
base=&quot;integer&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:simpleType&gt; </span></p>
</div>
<p class=MsoNormal>In the above, the string has a prefix length of type
'packed3' containing 3 packed decimal digits.</p>
<p class=MsoNormal>The property dfdl:prefixIncludesPrefixLength is an
enumeration which allows the length computation to be varied to include or
exclude the length of the prefix element itself.</p>
<p class=MsoNormal>The prefix length's value contains the length measured in
units given by dfdl:lengthUnits.</p>
<p class=MsoNormal>When parsing, if the dfdl:lengthUnits are bits, then any
number of bits can be in the representation. However, the same is not true when
unparsing. The DFDL Infoset does not store the number of bits in a number, so
the number of bits is always be a multiple of 8 bits. </p>
<p class=MsoNormal>When unparsing, the value of the prefix is computed
automatically by obtaining the length of the element's content.</p>
<p class=MsoNormal>For a simple element with text representation, the length is
computed as for dfdl:lengthKind 'delimited'.</p>
<p class=MsoNormal>For a simple element with binary representation, the length
is given in the table below.</p>
<p class=MsoNormal>For a complex element, the length is that of the
ComplexContent region.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Type</b></p>
</td>
<td colspan=2 valign=top style='border:solid windowtext 1.0pt;border-left:
none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Length </span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Not applicable</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Float</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Double</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>64</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Decimal, Integer, NonNegativeInteger</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Compute the minimum number of bytes to represent the value
(per dfdl:binaryNumberRep) and sign (if applicable). Multiply by 8 for number
of bits.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Long, UnsignedLong</p>
</td>
<td rowspan=7 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>packed decimal: as Decimal</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal>&nbsp;</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 64 </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Int, UnsignedInt</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 32</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Short, UnsignedShort</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 16</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Byte, UnsignedByte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary: 8</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DateTime</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binarySeconds: 32, binaryMilliseconds:64</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Date</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binarySeconds: Not allowed, binaryMilliseconds: Not allowed</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Time</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binarySeconds: Not allowed, binaryMilliseconds: Not
allowed</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Boolean</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>HexBinary</p>
<p class=MsoNormal>&nbsp;</p>
<p class=MsoNormal align=right style='text-align:right'>&nbsp;</p>
</td>
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>Compute the number of bytes
in the Infoset value padded to the value of the XSD minLength facet (which
gives minimum length in bytes) using dfdl:fillByte if necessary. This gives
the unparse length in bytes. Multiply by 8 for the number of bits.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 21 Unparse Lengths (in Bits) for Binary Data with
dfdl:lengthKind 'prefixed'</p>
<h4><span style='color:black;font-weight:normal'>12.3.4.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Nested
Prefix Lengths<a href="#_ftn38" name="_ftnref38" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><b><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[38]</span></b></span></span></a></h4>
<p class=MsoNormal>It is possible for a prefix length, as specified by
dfdl:prefixLengthType, to itself have a prefix length<span
class=MsoCommentReference><span style='font-size:8.0pt'> </span></span>&nbsp;</p>
<p class=MsoNormal>It is a Schema Definition Error if this nesting exceeds 1
deep. That is, an element can have a prefix length, which defines a
PrefixLength region (see Section <span
class=MsoHyperlink>9.2</span> DFDL
Data Syntax Grammar). The PrefixLength region can itself have a type which also
specifies a prefix length, thereby defining a PrefixPrefixLength region. It is
a Schema Definition Error unless the type associated with the
PrefixPrefixLength is different from the type associated with the PrefixLength.</p>
<h3><a name="_Toc349042738"></a><a name="_Toc62570155"></a><a
name="_Toc177399093"></a><a name="_Toc175057380"></a><a name="_Toc199516316"></a><a
name="_Toc194983980"></a><a name="_Toc322911635"></a><a name="_Toc322912174"></a><a
name="_Toc329093024"></a><a name="_Toc332701537"></a><a name="_Toc332701844"></a><a
name="_Toc332711638"></a><a name="_Toc332711946"></a><a name="_Toc332712248"></a><a
name="_Toc332724164"></a><a name="_Toc332724464"></a><a name="_Toc341102760"></a><a
name="_Toc347241495"></a><a name="_Toc347744688"></a><a name="_Toc348984471"></a><a
name="_Toc348984776"></a><a name="_Toc349037939"></a><a name="_Toc349038244"></a><a
name="_Toc349042737"></a><a name="_Toc351912735"></a><a name="_Toc351914756"></a><a
name="_Toc351915222"></a><a name="_Toc361231279"></a><a name="_Toc361231805"></a><a
name="_Toc362445103"></a><a name="_Toc363909025"></a><a name="_Toc364463449"></a><a
name="_Toc366078047"></a><a name="_Toc366078666"></a><a name="_Toc366079651"></a><a
name="_Toc366080263"></a><a name="_Toc366080872"></a><a name="_Toc366505212"></a><a
name="_Toc366508581"></a><a name="_Toc366513082"></a><a name="_Toc366574271"></a><a
name="_Toc366578064"></a><a name="_Toc366578658"></a><a name="_Toc366579250"></a><a
name="_Toc366579841"></a><a name="_Toc366580433"></a><a name="_Toc366581024"></a><a
name="_Toc366581616"></a><span style='color:black;font-weight:normal'>12.3.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:lengthKind&nbsp;
'pattern'</h3>
<p class=nobreak>The dfdl:lengthKind 'pattern' means the length of the element
is given by a regular expression specified using the dfdl:lengthPattern
property. The DFDL processor scans the data stream to determine a string value
that is the match to a regular expression. The pattern is only used on parsing.</p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When
dfdl:lengthKind is 'pattern', delimiter scanning is turned off and in-scope delimiters
are not looked for within or between elements.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>lengthPattern</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Regular Expression.&nbsp; </p>
<p class=MsoNormal>Only used when lengthKind is 'pattern'. </p>
<p class=MsoNormal>Specifies a regular expression that, on parsing, is
executed against the data stream to determine the length of the element.</p>
<p class=MsoNormal>The data stream beginning at the starting offset of the
content region (which can be either the SimpleContent region or the ComplexContent
region defined in Section <span
class=MsoHyperlink>9.2</span> DFDL
Data Syntax Grammar) of the element is interpreted as a stream of characters
in the encoding of the element, and the regular expression contained in the
dfdl:lengthPattern property is executed against that stream of characters.
When the element is complex the encoding used is the dfdl:encoding of the
complex element itself.</p>
<p class=MsoNormal>It is a Schema Definition Error if there is no value for
the dfdl:encoding property in scope.</p>
<p class=MsoNormal>DFDL Escape Schemes (per dfdl:escapeSchemeRef) are not
used when executing the regular expression.</p>
<p class=MsoNormal>If the pattern matching of the regular expression reads
data that cannot be decoded into characters of the current encoding, then the
behavior is controlled by the dfdl:encodingErrorPolicy property. See
dfdl:encodingErrorPolicy in Section <span
class=MsoHyperlink>11</span> <span
class=MsoHyperlink>Properties Common to both Content and Framing</span>.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 22 The dfdl:lengthPattern Property</p>
<p class=MsoNormal>On unparsing the behavior is the same as for dfdl:lengthKind
'prefixed'.</p>
<p class=MsoNormal style='text-autospace:none'>When the DFDL regular expression
is matched against data:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The data is considered to be text in the character set encoding
specified by the dfdl:encoding property, regardless of the actual
representation of the element.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The data is decoded from the specified encoding into Unicode
before the actual matching takes place.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>If there is no match (i.e., the length of the data found to match
the pattern is zero) it is not a Processing Error but instead it means the
length is zero.</p>
<h3><a name="_Toc177399088"></a><a name="_Toc175057375"></a><a
name="_Toc199516311"></a><a name="_Toc194983975"></a><a name="_Toc243112823"></a><a
name="_Toc349042741"></a><a name="_Toc62570156"></a><a name="_Toc322911637"></a><a
name="_Toc322912176"></a><a name="_Toc329093026"></a><a name="_Toc332701539"></a><a
name="_Toc332701846"></a><a name="_Toc332711640"></a><a name="_Toc332711948"></a><a
name="_Toc332712250"></a><a name="_Toc332724166"></a><a name="_Toc332724466"></a><a
name="_Toc341102762"></a><a name="_Toc347241497"></a><a name="_Toc347744690"></a><a
name="_Toc348984473"></a><a name="_Toc348984778"></a><a name="_Toc349037941"></a><a
name="_Toc349038246"></a><a name="_Toc349042739"></a><a name="_Toc351912737"></a><a
name="_Toc351914758"></a><a name="_Toc351915224"></a><a name="_Toc361231281"></a><a
name="_Toc361231807"></a><a name="_Toc362445105"></a><a name="_Toc363909027"></a><a
name="_Toc364463451"></a><a name="_Toc366078049"></a><a name="_Toc366078668"></a><a
name="_Toc366079653"></a><a name="_Toc366080265"></a><a name="_Toc366080874"></a><a
name="_Toc366505214"></a><a name="_Toc366508583"></a><a name="_Toc366513084"></a><a
name="_Toc366574273"></a><a name="_Toc366578066"></a><a name="_Toc366578660"></a><a
name="_Toc366579252"></a><a name="_Toc366579843"></a><a name="_Toc366580435"></a><a
name="_Toc366581026"></a><a name="_Toc366581618"></a><a name="_Toc322911638"></a><a
name="_Toc322912177"></a><a name="_Toc329093027"></a><a name="_Toc332701540"></a><a
name="_Toc332701847"></a><a name="_Toc332711641"></a><a name="_Toc332711949"></a><a
name="_Toc332712251"></a><a name="_Toc332724167"></a><a name="_Toc332724467"></a><a
name="_Toc341102763"></a><a name="_Toc347241498"></a><a name="_Toc347744691"></a><a
name="_Toc348984474"></a><a name="_Toc348984779"></a><a name="_Toc349037942"></a><a
name="_Toc349038247"></a><a name="_Toc349042740"></a><a name="_Toc351912738"></a><a
name="_Toc351914759"></a><a name="_Toc351915225"></a><a name="_Toc361231282"></a><a
name="_Toc361231808"></a><a name="_Toc362445106"></a><a name="_Toc363909028"></a><a
name="_Toc364463452"></a><a name="_Toc366078050"></a><a name="_Toc366078669"></a><a
name="_Toc366079654"></a><a name="_Toc366080266"></a><a name="_Toc366080875"></a><a
name="_Toc366505215"></a><a name="_Toc366508584"></a><a name="_Toc366513085"></a><a
name="_Toc366574274"></a><a name="_Toc366578067"></a><a name="_Toc366578661"></a><a
name="_Toc366579253"></a><a name="_Toc366579844"></a><a name="_Toc366580436"></a><a
name="_Toc366581027"></a><a name="_Toc366581619"></a><span style='color:black;
font-weight:normal'>12.3.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:lengthKind 'endOfParent'</h3>
<p class=MsoNormal style='text-autospace:none'>The dfdl:lengthKind
'endOfParent' means that the element is terminated either by the end of the
data stream, or the end of an enclosing complex element with dfdl:lengthKind
&#8216;explicit&#8217;, &#8216;pattern&#8217;, &#8216;prefixed&#8217; or
&#8216;endOfParent&#8217;, or the end of an enclosing choice with
dfdl:choiceLengthKind &#8216;explicit&#8217;. The &#8216;parent&#8217; element
or choice does not have to be the immediate enclosing component of the element,
but there must be no other components defined between the element specifying
dfdl:lengthKind 'endOfParent' and the end of the parent. </p>
<p class=MsoNormal style='text-autospace:none'><span style='color:black'>A
convenient way of describing the parent is as a 'box', being defined as a
portion of the data stream that has an established content length prior to the
parsing of its children. If </span>the parent is such a &#8216;box&#8217; then
the element specifying dfdl:lengthKind &#8216;endOfParent&#8217; is the last
element in the &#8216;box&#8217; and its content extends to the end of the
&#8216;box&#8217;.</p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB>A
dfdl:lengthKind of&nbsp; 'endOfParent' can only be used on simple and complex
elements in the following locations:</span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>When the immediate containing model group is a sequence, on the
final element in the sequence </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>When the immediate containing model group is a choice, on any
element that is a branch of the choice </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A simple type or global element declaration referenced by one of
the above. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A global element declaration that is the document root. </p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-GB>It is a Schema
Definition Error if: </span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the element has a terminator. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the element has dfdl:trailingSkip not equal to 0.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the element has maxOccurs &gt; 1.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>any other model-group is defined between this element and the end
of the enclosing component.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>any other represented element is defined between this element and
the end of the enclosing component.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the parent is an element with dfdl:lengthKind 'implicit' or
'delimited'.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the element has text representation, does not have a single-byte
character set encoding, and the effective length units of the parent is not
&#8216;characters&#8217;.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The effective length units of the parent are:</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:lengthUnits if parent is an element with dfdl:lengthKind
&#8216;explicit&#8217; or &#8216;prefixed&#8217;;</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>&#8216;characters&#8217; if parent is an element with
dfdl:lengthKind &#8216;pattern&#8217;;</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>&#8216;bytes&#8217; if parent is a choice with
dfdl:choiceLengthKind &#8216;explicit&#8217;;&nbsp;&nbsp; </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>&#8216;characters&#8217; if the element is the document root;</p>
<p class=MsoListParagraphCxSpLast style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>the effective length units of the parent&#8217;s parent if parent
is an element with dfdl:lengthKind &#8216;endOfParent&#8217;</p>
<p class=MsoNormal>If the element is in a sequence then it is a Schema
Definition Error if:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the dfdl:separatorPosition of the sequence is 'postfix' </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the dfdl:sequenceKind of the sequence is not 'ordered' </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the sequence has a terminator</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>there are floating elements in the sequence</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the sequence has a non-zero dfdl:trailingSkip</p>
<p class=MsoNormal>If the element is in a choice where dfdl:choiceLengthKind is
'implicit' then it is a Schema Definition Error if:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the choice has a terminator</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the choice has a non-zero dfdl:trailingSkip</p>
<p class=MsoNormal><span style='color:black'>A simple element must have one of:</span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>type xs:string</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:representation 'text'</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>type xs:hexBinary</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:representation 'binary' and a packed decimal representation </p>
<p class=MsoNormal><span style='color:black'>A complex element can have
dfdl:lengthKind 'endOfParent'. If so then its last child element can be any
dfdl:lengthKind including 'endOfParent'.</span></p>
<p class=MsoNormal>The dfdl:lengthKind 'endOfParent' can also be used on the
document root to allow the last element to consume the data up to the end of
the data stream.</p>
<p class=MsoNormal>The use of dfdl:lengthKind &#8216;endOfParent&#8217; is
distinct from the situation where the length of the last element in the parent
is known but is not sufficient to fill the parent. In the latter case the
remaining data are ignored on parsing and filled with dfdl:fillByte on unparsing.</p>
<p class=MsoNormal><span style='color:black'>When parsing an element with
dfdl:lengthKind &#8216;endOfParent&#8217;, delimiter scanning is turned off and
in-scope terminating delimiters are not looked for within the element.</span></p>
<p class=MsoNormal><span style='color:black'>When unparsing an element with
dfdl:lengthKind &#8216;endOfParent&#8217;, if the parent is a complex element
with dfdl:lengthKind 'explicit' where dfdl:length is not an expression, or a
choice with dfdl:choiceLengthKind 'explicit', then the element with
dfdl:lengthKind 'endOfParent' is padded or filled in the usual manner to the
required length, by completing the <b><i>LeftPadding</i></b>, <b><i>RightPad</i></b>,
<b><i>RightFill</i></b></span>, <b><i><span style='color:black'>ElementUnused</span></i></b>,
or <b><i><span style='color:black'>ChoiceUnused</span></i></b> <span
style='color:black'>regions of the data syntax grammar (</span>Section <span class=MsoHyperlink>9.2</span><span style='color:black'>) as appropriate.</span><a
name="_Toc322911640"></a><a name="_Toc322912179"></a></p>
<h3><a name="_Ref251932750"></a><a name="_Toc349042742"></a><a
name="_Toc62570157"></a><a name="_Toc322911641"></a><a name="_Toc322912180"></a><a
name="_Toc322911642"></a><a name="_Toc322912181"></a><a name="_Toc329093030"></a><a
name="_Toc332701543"></a><a name="_Toc322911643"></a><a name="_Toc322912182"></a><a
name="_Toc329093031"></a><a name="_Toc332701544"></a><span style='color:black;
font-weight:normal'>12.3.7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Elements of Specified Length</h3>
<p class=MsoNormal>An element has a specified length when dfdl:lengthKind is
'explicit', 'implicit' (simple type only)&nbsp; or 'prefixed'. The units that
the length represents are specified by the dfdl:lengthUnits property except
where noted in Section <span class=MsoHyperlink>12.3.3</span>. </p>
<p class=MsoNormal>Using specified length, it is possible for an element to
have content length longer than needed to represent just the data value. For
example, a simple text element may be padded in the <b><i>RightPadding </i></b>region
if the data is not long enough.</p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When an element has
specified length but appears inside a complex type element having delimited
length kind, delimiter scanning is turned off and in-scope delimiters are not looked
for within or between elements.</p>
<p class=MsoNormal>An element of specified length with dfdl:lengthKind
'implicit' or 'explicit' where dfdl:length is not an expression has a known
length when unparsing.&nbsp; </p>
<p class=MsoNormal>An element of specified length with dfdl:lengthKind
'prefixed' is considered to have a <em><span style='font-family:"Arial",sans-serif'>variable</span></em>
length when unparsing. Specifically, the processor automatically determines the
value to store in the prefix, based on the length of the SimpleContent or
ComplexContent regions, and the properties which modify the interpretation of
the prefix length value, such as dfdl:prefixIncludesPrefixLength. </p>
<p class=MsoNormal>For dfdl:lengthKind 'explicit' (expression), whether parsing
or unparsing the expression is evaluated to obtain the length. When unparsing
the processor cannot automatically determine in what way the length information
is to be stored as it comes from an expression that may access one or more
elements and perform any calculation. Hence, normally the value of the element
or elements involved in the length calculation would be computed using
dfdl:outputValueCalc, using an expression that measures the length of the
element by way of functions such as dfdl:contentLength or dfdl:valueLength. </p>
<p class=MsoNormal>When parsing, if the data stream ends without enough data to
parse an element, that is, N bits are needed based on the dfdl:length, but only
M &lt; N bits are available, then it is a Processing Error.&nbsp;</p>
<p class=MsoNormal>If dfdl:lengthUnits is 'characters' then the length (in
bits) of the content region&nbsp; (i.e., SimpleContent or ComplexContent
defined in Section <span class=MsoHyperlink>9.2</span> DFDL Data Syntax Grammar) depends on the encoding of the characters.</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>If the dfdl:encoding property specifies a fixed-width
encoding then the content length is the character width (in bits)
multiplied by the length. </li>
<li class=MsoNormal>If the dfdl:encoding property specifies a variable-width
encoding then the length depends on the actual characters in the element's
value. The characters MUST be decoded one by one, adding up their widths
(in bits), while counting to the specified length value.</li>
</ul>
<p class=MsoNormal>For a simple element, dfdl:lengthUnits 'characters' may only
be used for textual elements, it is a Schema Definition Error otherwise. </p>
<p class=MsoNormal>Some DFDL implementations MAY support character set
encodings where the characters are not a multiple of 8-bits wide. Encodings
which are 5, 6, 7, and 9 bits wide are rare, but do exist, so the overall
length of the content region may not be a multiple of 8-bits wide.</p>
<h4><span style='color:black;font-weight:normal'>12.3.7.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Length of
Simple Elements with Textual Representation</h4>
<p class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Textual
data</span></em> is defined to mean either data of type string or data where
the dfdl:representation property is 'text'.</p>
<p class=nobreak>For a textual element, the dfdl:lengthUnits property can be
either 'bytes' or 'characters'. </p>
<h5><a name="_Toc146530423"></a><a name="_Toc177399091"></a><a
name="_Toc175057378"></a><a name="_Toc199516314"></a><a name="_Toc194983978">12.3.7.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Text Length Specified
in Bytes</a></h5>
<p class=MsoNormal>If a textual element has dfdl:lengthUnits of 'bytes', and
the dfdl:encoding is not SBCS, then it is possible for a partial character
encoding to appear after the code units of the characters. In this case, the
following rules apply:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>When parsing, as many characters as possible are extracted
from the bytes of the simple content region. Any left-over bytes are
skipped. (They are considered part of the grammar <b><i>RightFill</i></b>
region).</li>
<li class=MsoNormal>When unparsing, if the simple content region is larger
than the encoded length of the element (as padded when dfdl:textPadKind is
not 'none') then the remaining bytes, which are insufficient to hold
another character code, are filled with dfdl:fillByte (Again, this is the
grammar <b><i>RightFill</i></b> region.)</li>
</ul>
<p class=MsoNormal>It is a Schema Definition Error if type is xs:string and
dfdl:textPadKind is not 'none' and dfdl:lengthUnits is 'bytes' and
dfdl:encoding is not an SBCS encoding and the XSD minLength facet is not zero.
This prevents a scenario where validation against the XSD minLength facet is in
characters, but padding would be performed in bytes.</p>
<h4><a name="_Toc177399095"></a><a name="_Toc175057382"></a><a
name="_Toc199516318"></a><a name="_Toc194983982"></a><a name="_Toc243112825"></a><a
name="_Ref254775272"></a><a name="_Ref254775279"></a><a name="_Ref384984844"><span
style='color:black;font-weight:normal'>12.3.7.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Length of Simple Elements with Binary Representation</a></h4>
<p class=nobreak>This section discusses the dfdl:lengthKind 'explicit' and
'prefixed' specified lengths for the different binary representations. When
dfdl:lengthKind is 'implicit', see Section <span
class=MsoHyperlink>12.3.3</span> <span
class=MsoHyperlink>dfdl:lengthKind 'implicit'</span>. </p>
<p class=MsoNormal>The dfdl:lengthUnits can be 'bytes' or 'bits' unless
otherwise stated. It is Schema Definition Error if dfdl:lengthUnits is
'characters'. </p>
<p class=MsoNormal>It is a Schema Definition Error if the specified dfdl:length
for an element of dfdl:lengthKind 'explicit' is a string literal integer such
that the length of the data exceeds the capacity of the simple type.</p>
<p class=MsoNormal>It is a Processing Error if the specified length for an
element of dfdl:lengthKind 'prefixed' or 'explicit' (with dfdl:length an
expression) is an integer such that the length of the data exceeds the capacity
of the simple type.</p>
<h5><a name="_Ref365048738"></a><a name="_Length_of_Base-2"></a>12.3.7.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length of Base-2
Binary Number Elements</h5>
<p class=MsoNormal>Non-floating point numbers with binary representation and
dfdl:binaryNumberRep 'binary' are represented as a bit string which contains a
base-2 representation. </p>
<p class=MsoNormal>The value of the specified length is constrained per the
table below. The lengths are expressed in bits and are inclusive.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Type</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Minimum value of length</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Maximum value of length </span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:byte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>8</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:short</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>16</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:int</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:long</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>64</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedByte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>8</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedShort</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>16</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedInt</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedLong</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>64</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:nonNegativeInteger</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Implementation-dependent (but not less than 64)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:integer</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Implementation-dependent (but not less than 64)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:decimal</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>8<a href="#_ftn39" name="_ftnref39" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[39]</span></span></span></a></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Implementation-dependent (but not less than 64)</p>
</td>
</tr>
</table>
<p class=MsoCaption style='page-break-after:avoid'>Table 23:
Allowable Specified Lengths in Bits for Base-2 Binary Number Elements</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.7.1.1</span> <span
class=MsoHyperlink>Converting Base-2 Binary Numbers</span> for details of the
conversion to/from numeric values.</p>
<h5>12.3.7.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length
of Floating Point Binary Number Elements</h5>
<p class=MsoNormal>For binary elements of types xs:float or xs:double, a
specified length must be either exactly 4 bytes or exactly 8 bytes
respectively.</p>
<p class=MsoNormal>The dfdl:lengthUnits property must be 'bytes'. It is a
Schema Definition Error otherwise.</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.8</span> <span
class=MsoHyperlink>Properties Specific to Float/Double with Binary
Representation</span>.</p>
<h5>12.3.7.2.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length
of Packed Decimal Number Elements </h5>
<p class=MsoNormal>Non-floating-point numbers with binary representation and
dfdl:binaryNumberRep 'packed', 'bcd', or 'ibm4690Packed', are represented as a
bit string of 4 bit nibbles. The term <em><span style='font-family:"Arial",sans-serif'>packed
decimal </span></em>is used<em><span style='font-family:"Arial",sans-serif'> </span></em>to
describe such numbers.</p>
<p class=MsoNormal>It is a Schema Definition Error if the specified length is
not a multiple of 4 bits. </p>
<p class=MsoNormal>The maximum specified length of a packed decimal number is
implementation-defined.</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.7</span> <span
class=MsoHyperlink>Properties Specific to Number with Binary Representation</span>
for details of the conversion of the packed decimal bit string to/from a
numeric value.</p>
<h5>12.3.7.2.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length
of Binary Boolean Elements</h5>
<p class=MsoNormal>The specified length of a binary element of type xs:boolean
is as for type xs:unsignedInt described in Section <span
class=MsoHyperlink>12.3.7.2.1</span> <span
class=MsoHyperlink>Length of Base-2 Binary Number Elements</span>. </p>
<p class=MsoNormal>See also Section <span
class=MsoHyperlink>13.10</span> <span
class=MsoHyperlink>Properties Specific to Boolean with Binary Representation</span>
for details of how the data is converted to/from a Boolean value.</p>
<h5>12.3.7.2.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length
of Base-2 Binary Calendar Elements</h5>
<p class=MsoNormal>Calendars (types date, time, dateTime) with binary
representation and dfdl:binaryCalendarRep &#8216;binarySeconds&#8217; or
&#8216;binaryMilliseconds&#8217; are represented as a bit string which contains
a base-2 representation. The specified length must be either exactly 4 bytes or
exactly 8 bytes respectively.</p>
<p class=MsoNormal>The dfdl:lengthUnits property must be 'bytes'. It is a
Schema Definition Error otherwise.</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.13</span> <span
class=MsoHyperlink>Properties Specific to Calendar with Binary Representation</span>
for details of how the data is converted to/from the calendar type.</p>
<h5>12.3.7.2.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length
of Packed Decimal Calendar Elements</h5>
<p class=MsoNormal>Calendars (types date, time, dateTime) with binary
representation and dfdl:binaryCalendarRep 'packed', 'bcd', or 'ibm4690Packed',
are represented as a bit string of 4-bit nibbles. The term <em><span
style='font-family:"Arial",sans-serif'>packed decimal </span></em>is used to
describe such calendars.</p>
<p class=MsoNormal>It is a Schema Definition Error if the specified length is
not a multiple of 4 bits. </p>
<p class=MsoNormal>The maximum specified length of a packed decimal calendar is
implementation-defined (but not less than 9 bytes, which corresponds to
calendar pattern 'yyyyMMddhhmmssSSS')<a href="#_ftn40" name="_ftnref40" title=""><span
class=MsoFootnoteReference><span style='color:black'><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif;
color:black'>[40]</span></span></span></span></a>.</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.13</span> <span
class=MsoHyperlink>Properties Specific to Calendar with Binary Representation</span>
for details of how the data is converted to/from the calendar type.</p>
<h5>12.3.7.2.7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Length
of Binary Opaque Elements</h5>
<p class=MsoNormal>The dfdl:lengthUnits property must be 'bytes'. It is a
Schema Definition Error otherwise.</p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When unparsing a
specified length element of type xs:hexBinary, and the simple content region is
larger than the length of the element in the Infoset, then the remaining bytes
are filled using the dfdl:fillByte property. </p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>The dfdl:fillByte
is <b>not</b> used to trim an element of type xs:hexBinary when parsing.</p>
<h4><span style='color:black;font-weight:normal'>12.3.7.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Length of
Complex Elements</h4>
<p class=MsoNormal>A complex element of specified length is defining a 'box' in
which its child elements exist. An example of this would be a fixed-length
record element with a variable number of children elements. The
dfdl:lengthUnits may be 'bytes' or 'characters' and it is a Schema Definition
Error otherwise.</p>
<p class=MsoNormal>It is possible that the children may not entirely fill the
full length of the complex element. An example is a complex element with a
specified length of 100 characters, which contains a sequence of child elements
that use up less than 100 characters of data, perhaps because an optional
element is not present. In this case the remaining unused data is called the
ElementUnused region in the data syntax grammar of Section <span class=MsoHyperlink>9.2</span>. Another example is a complex element with a
specified length of 100 bytes, which contains a sequence of child elements the
last of which has dfdl:lengthKind 'endOfParent', dfdl:representation 'text' and
a multi-byte dfdl:encoding such that the element does not use up all the bytes
of data. In this case the remaining unused bytes comprise the child element's <b><i>RightFill</i></b>
region in the data syntax grammar of Section <span
class=MsoHyperlink>9.2</span>. In both examples, the unused area is skipped
when parsing, and is filled with the dfdl:fillByte on unparsing.&nbsp; </p>
<p class=MsoNormal>Note that a poorly chosen value for dfdl:fillByte may fill
the region with data that cannot be decoded in the character set encoding,
resulting in a decode error when this data is subsequently parsed again. When
dfdl:lengthUnits is 'characters' the value for dfdl:fillByte must be chosen to
avoid this error. </p>
<h1><a name="_Toc130873628"></a><a name="_Toc140549600"></a><a
name="_Toc177399096"></a><a name="_Toc175057383"></a><a name="_Toc199516319"></a><a
name="_Toc194983983"></a><a name="_Toc243112826"></a><a name="_Ref255476219"></a><a
name="_Toc349042744"></a><a name="_Toc62570158"></a><a name="_Toc349037945"></a><a
name="_Toc366078053"></a><a name="_Toc366078672"></a><a name="_Toc366079657"></a><a
name="_Toc366080269"></a><a name="_Toc366080878"></a><a name="_Toc366505218"></a><a
name="_Toc366508587"></a><a name="_Toc366513088"></a><a name="_Toc366574277"></a><a
name="_Toc366578070"></a><a name="_Toc366578664"></a><a name="_Toc366579256"></a><a
name="_Toc366579847"></a><a name="_Toc366580439"></a><a name="_Toc366581030"></a><a
name="_Toc366581622"></a><a name="_Toc322911645"></a><a name="_Toc322912184"></a><a
name="_Toc329093033"></a><a name="_Toc332701546"></a><a name="_Toc332701850"></a><a
name="_Toc349642155"></a><a name="_Toc366078054"></a><a name="_Toc366078673"></a><a
name="_Toc366079658"></a><a name="_Toc366080270"></a><a name="_Toc366080879"></a><a
name="_Toc366505219"></a><a name="_Toc366508588"></a><a name="_Toc366513089"></a><a
name="_Toc366574278"></a><a name="_Toc366578071"></a><a name="_Toc366578665"></a><a
name="_Toc366579257"></a><a name="_Toc366579848"></a><a name="_Toc366580440"></a><a
name="_Toc366581031"></a><a name="_Toc366581623"></a><a name="_Toc322911646"></a><a
name="_Toc322912185"></a><a name="_Toc329093034"></a><a name="_Toc332701547"></a><a
name="_Toc332701851"></a><a name="_Toc332711645"></a><a name="_Toc332711953"></a><a
name="_Toc332712255"></a><a name="_Toc332724171"></a><a name="_Toc332724471"></a><a
name="_Toc341102767"></a><a name="_Toc347241502"></a><a name="_Toc347744695"></a><a
name="_Toc348984478"></a><a name="_Toc348984783"></a><a name="_Toc349037947"></a><a
name="_Toc349642156"></a><a name="_Toc366078055"></a><a name="_Toc366078674"></a><a
name="_Toc366079659"></a><a name="_Toc366080271"></a><a name="_Toc366080880"></a><a
name="_Toc366505220"></a><a name="_Toc366508589"></a><a name="_Toc366513090"></a><a
name="_Toc366574279"></a><a name="_Toc366578072"></a><a name="_Toc366578666"></a><a
name="_Toc366579258"></a><a name="_Toc366579849"></a><a name="_Toc366580441"></a><a
name="_Toc366581032"></a><a name="_Toc366581624"></a><a name="_Toc366078056"></a><a
name="_Toc366078675"></a><a name="_Toc366079660"></a><a name="_Toc366080272"></a><a
name="_Toc366080881"></a><a name="_Toc366505221"></a><a name="_Toc366508590"></a><a
name="_Toc366513091"></a><a name="_Toc366574280"></a><a name="_Toc366578073"></a><a
name="_Toc366578667"></a><a name="_Toc366579259"></a><a name="_Toc366579850"></a><a
name="_Toc366580442"></a><a name="_Toc366581033"></a><a name="_Toc366581625"></a><a
name="_Toc366078057"></a><a name="_Toc366078676"></a><a name="_Toc366079661"></a><a
name="_Toc366080273"></a><a name="_Toc366080882"></a><a name="_Toc366505222"></a><a
name="_Toc366508591"></a><a name="_Toc366513092"></a><a name="_Toc366574281"></a><a
name="_Toc366578074"></a><a name="_Toc366578668"></a><a name="_Toc366579260"></a><a
name="_Toc366579851"></a><a name="_Toc366580443"></a><a name="_Toc366581034"></a><a
name="_Toc366581626"></a><a name="_Toc366078058"></a><a name="_Toc366078677"></a><a
name="_Toc366079662"></a><a name="_Toc366080274"></a><a name="_Toc366080883"></a><a
name="_Toc366505223"></a><a name="_Toc366508592"></a><a name="_Toc366513093"></a><a
name="_Toc366574282"></a><a name="_Toc366578075"></a><a name="_Toc366578669"></a><a
name="_Toc366579261"></a><a name="_Toc366579852"></a><a name="_Toc366580444"></a><a
name="_Toc366581035"></a><a name="_Toc366581627"></a><a name="_Simple_Types"></a>13<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Simple Types</h1>
<p class=nobreak>The dfdl:representation property identifies the physical
representation of the element as text or binary. For some of the simple type
and representation combinations there are additional properties that specify a
further refinement of the representation. </p>
<p class=MsoNormal>These properties are described in relation to the logical
type groupings of the simple types into Number, String, Calendar, Boolean, and
Opaque groups, per Section <span
class=MsoHyperlink>5.1</span> DFDL
Simple Types.</p>
<h2><a name="_Toc349042745"></a><a name="_Toc62570159">13.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties Common to
All Simple Types</a> </h2>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>representation</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are dependent on logical type.</p>
<p class=MsoNormal><b>Number:</b> 'text, 'binary'</p>
<p class=MsoNormal><b>String:</b> representation is assumed to be 'text' and
the dfdl:representation property is not examined </p>
<p class=MsoNormal><b>Calendar:</b> 'text, 'binary'</p>
<p class=MsoNormal><b>Boolean:</b> 'text, 'binary'</p>
<p class=MsoNormal><b>Opaque:</b>&nbsp; representation is assumed to be
'binary' and the dfdl:representation property is not examined.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 24 Properties Common to All Simple Types</p>
<p class=MsoNormal>The permitted representation properties for each logical
type are shown in Table 25: Logical Type to Representation properties</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Logical type</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>dfdl:representation </span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Additional representation
property</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Assumed to be text</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
<tr>
<td rowspan=2 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Float, Double</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>text</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:textNumberRep:<br>
</b>standard</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:binaryFloatRep</b>: <br>
ieee, ibm390Hex</p>
</td>
</tr>
<tr>
<td rowspan=2 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Decimal, Integer, nonNegativeInteger</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>text</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:textNumberRep:<br>
</b>standard, zoned</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:binaryNumberRep:</b><br>
packed, bcd, ibm4690Packed, binary</p>
</td>
</tr>
<tr>
<td rowspan=2 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Long, Int, Short, Byte, UnsignedLong, Unsignedint,
Unsignedshort, UnsignedByte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>text</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:textNumberRep:<br>
</b>standard, zoned</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:binaryNumberRep:</b><br>
packed, bcd, ibm4690Packed, binary</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DateTime, Date, Time</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>text</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>dfdl:binaryCalendarRep:<br>
</b>packed, bcd, ibm4690Packed, binarySeconds, binaryMilliseconds</p>
</td>
</tr>
<tr>
<td rowspan=2 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Boolean</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>text</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>HexBinary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Assumed to be binary</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Ref247948007">Table </a>25:
Logical Type to Representation properties</p>
<h2><a name="_Toc130873627"></a><a name="_Toc140549599"></a><a
name="_Toc177399097"></a><a name="_Toc175057384"></a><a name="_Toc199516320"></a><a
name="_Toc194983984"></a><a name="_Toc243112827"></a><a name="_Toc349042747"></a><a
name="_Toc62570160"></a><a name="_Toc322911335"></a><a name="_Toc322911650"></a><a
name="_Toc322911898"></a><a name="_Toc322912189"></a><a name="_Toc329093038"></a><a
name="_Toc332701551"></a><a name="_Toc332701855"></a><a name="_Toc332711649"></a><a
name="_Toc332711957"></a><a name="_Toc332712259"></a><a name="_Toc332724175"></a><a
name="_Toc332724475"></a><a name="_Toc341102771"></a><a name="_Toc347241506"></a><a
name="_Toc347744699"></a><a name="_Toc348984482"></a><a name="_Toc348984787"></a><a
name="_Toc349037951"></a><a name="_Toc349038253"></a><a name="_Toc349042746"></a><a
name="_Toc349642160"></a><a name="_Toc351912744"></a><a name="_Toc351914765"></a><a
name="_Toc351915231"></a><a name="_Toc361231288"></a><a name="_Toc361231814"></a><a
name="_Toc362445112"></a><a name="_Toc363909034"></a><a name="_Toc364463458"></a><a
name="_Toc366078061"></a><a name="_Toc366078680"></a><a name="_Toc366079665"></a><a
name="_Toc366080277"></a><a name="_Toc366080886"></a><a name="_Toc366505226"></a><a
name="_Toc366508595"></a><a name="_Toc366513096"></a><a name="_Toc366574285"></a><a
name="_Toc366578078"></a><a name="_Toc366578672"></a><a name="_Toc366579264"></a><a
name="_Toc366579855"></a><a name="_Toc366580447"></a><a name="_Toc366581038"></a><a
name="_Toc366581630"></a>13.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Common to All Simple Types with Text representation</h2>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textPadKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'none', 'padChar'.</p>
<p class=MsoNormal>Indicates whether to pad the data value on unparsing. This
controls the contents of the <b><i>LeftPadding</i></b> and <b><i>RightPadding</i></b>
regions of the data syntax grammar in Section <span
class=MsoHyperlink>9.2</span></p>
<p class=MsoNormal>'none': No padding occurs. When dfdl:lengthKind is
'implicit' or&nbsp; 'explicit' (and dfdl:length is not an expression) the
unparsed data value must match the expected length otherwise it is a Processing
Error. </p>
<p class=MsoNormal>'padChar': The data value is padded using the
dfdl:textStringPadCharacter, dfdl:textNumberPadCharacter,
dfdl:textBooleanPadCharacter or dfdl:textCalendarPadCharacter&nbsp; depending
on the type of the element. The padding characters populate the <b><i>LeftPadding</i></b>
and/or <b><i>RightPadding</i></b> regions depending on
dfdl:textStringJustification(see Section <span
class=MsoHyperlink>13.4</span>), dfdl:textNumberJustification (see Section <span class=MsoHyperlink>13.6</span>), dfdl:textBooleanJustification (see Section <span class=MsoHyperlink>13.9</span>), or dfdl:textCalendarJustification (see Section <span class=MsoHyperlink>13.12</span>), depending on the type of the element.</p>
<p class=MsoNormal>When dfdl:lengthKind is 'implicit' the data value is
padded to the implicit length for the type. </p>
<p class=MsoNormal>When dfdl:lengthKind is 'explicit' (and dfdl:length is not
an expression) the data value is padded to the length given by the
dfdl:length property. </p>
<p class=MsoNormal>When dfdl:lengthKind is 'explicit' (and dfdl:length is an
expression), 'delimited', 'prefixed', 'pattern' the data value is padded to
the length given by the XSD minLength facet for type 'xs:string' or
dfdl:textOutputMinLength&nbsp; property for other types.</p>
<p class=MsoNormal>When dfdl:lengthKind is 'endOfParent' the data value is
padded to the available length.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textTrimKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'none', 'padChar'</p>
<p class=MsoNormal>Indicates whether to trim data on parsing. This controls
the expected contents of the <b><i>LeftPadding</i></b> and <b><i>RightPadding</i></b>
regions of the data syntax grammar in Section <span
class=MsoHyperlink>9.2</span>.</p>
<p class=MsoNormal>When 'none' no trimming takes place.&nbsp; </p>
<p class=MsoNormal>When 'padChar' the element is trimmed of the
dfdl:textStringPadCharacter, dfdl:textNumberPadCharacter,
dfdl:textBooleanPadCharacter or dfdl:textCalendarPadCharacter&nbsp; depending
on the type of the element.&nbsp; The padding characters populate the <b><i>LeftPadding</i></b>
and/or <b><i>RightPadding</i></b> regions depending on
dfdl:textStringJustification, dfdl:textNumberJustification, or
dfdl:textCalendarJustification, depending on the type of the element.</p>
<p class=MsoNormal>Annotation: dfdl:element , dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textOutputMinLength</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer.&nbsp;&nbsp; </p>
<p class=MsoNormal>Only used when dfdl:textPadKind is 'padChar' and
dfdl:lengthKind is 'delimited', 'prefixed', 'pattern', 'explicit' (when
dfdl:length is an expression) or 'endOfParent', and type is not xs:string</p>
<p class=MsoNormal>Specifies the minimum content length during unparsing for
simple types that do not allow the XSD minLength facet to be specified. </p>
<p class=MsoNormal>For dfdl:lengthKind 'delimited', 'pattern' and
'endOfParent' the length units are always characters, for other
dfdl:lengthKinds the length units are specified by the dfdl:lengthUnits
property.</p>
<p class=MsoNormal>If dfdl:textOutputMinLength is zero or less than the
length of the representation text then no padding occurs.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeSchemeRef</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>QName or empty String</p>
<p class=MsoNormal>The name of the dfdl:defineEscapeScheme annotation that
provides the additional properties used to describe the escape scheme. If the
value is the empty string then escaping is explicitly turned off.</p>
<p class=MsoNormal>See: Section <span
class=MsoHyperlink>7.4</span> <span
class=MsoHyperlink>The dfdl:escapeScheme Annotation Element</span>, and
Section <span
class=MsoHyperlink>7.3</span> The
dfdl:defineEscapeScheme Defining Annotation Element.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc226450745"></a><a name="_Ref228950351">Table </a>26 Properties Common to All Simple Types with Text Representation</p>
<h3><a name="_Toc243112828"></a><a name="_Ref250479270"></a><a
name="_Toc349042748"></a><a name="_Ref52978876"></a><a name="_Toc62570161"></a><a
name="_The_dfdl:escapeScheme_Properties"></a><span style='color:black;
font-weight:normal'>13.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>The dfdl:escapeScheme Properties</h3>
<p class=MsoNormal>The dfdl:escapeScheme annotation is used within a
dfdl:defineEscapeScheme annotation to group the properties of an escape scheme
and allows a common set of properties to be defined that can be reused. </p>
<p class=MsoNormal>An escape scheme is needed when the content of a text
element contains sequences of characters that are the same as an in-scope
separator or terminator. If the characters are not escaped, a parser scanning
for a separator or terminator would erroneously find the character sequence in
the content.</p>
<p class=MsoNormal>An escape scheme defines the properties that describe the
text escaping rules. There are two variants on such schemes:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The use of a single escape character to cause the next character
to be interpreted literally. The escape character itself is escaped by the
escape-escape character.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The use of a pair of escape strings to cause the enclosed group
of characters to be interpreted literally. The ending escape string is escaped by
the escape-escape character.</p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>On parsing, the
escape scheme is applied after pad characters are trimmed and on unparsing
before pad characters are added. A pad character is not escaped by an escape
character. When parsing, pad characters are trimmed without reference to an
escape scheme. When unparsing, pad characters are added without reference to an
escape scheme.</p>
<p class=MsoNormal>On unparsing, the application of escape scheme processing
takes place before the application of the dfdl:emptyValueDelimiterPolicy property.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'escapeCharacter', 'escapeBlock'</p>
<p class=MsoNormal>The type of escape mechanism defined in the escape scheme</p>
<p class=MsoNormal>When 'escapeCharacter': On unparsing a single character of
the data is escaped by adding a dfdl:escapeCharacter or
dfdl:escapeEscapeCharacter immediately before it. The characters to escape
are determined by property dfdl:escapeCharacterPolicy. </p>
<p class=MsoNormal>On parsing any in-scope terminating delimiter encountered
in the data is not interpreted as such when it is immediately preceded by the
dfdl:escapeCharacter (when not itself preceded by the
dfdl:escapeEscapeCharacter). Occurrences of the dfdl:escapeCharacter and
dfdl:escapeEscapeCharacter are removed from the data as determined by
property dfdl:escapeCharacterPolicy, unless the dfdl:escapeCharacter is
preceded by the dfdl:escapeEscapeCharacter, or the dfdl:escapeEscapeCharacter
does not precede the dfdl:escapeCharacter, respectively.</p>
<p class=MsoNormal>When 'escapeBlock': On unparsing the entire data are
escaped by adding dfdl:escapeBlockStart to the beginning and
dfdl:escapeBlockEnd to the end of the data. The data is either always escaped
or escaped when needed as specified by dfdl:generateEscapeBlock. If the data
is escaped and contains the dfdl:escapeBlockEnd then first character of each
appearance of the dfdl:escapeBlockEnd is escaped by the
dfdl:escapeEscapeCharacter. </p>
<p class=MsoNormal>On parsing the dfdl:escapeBlockStart string must be the
first characters in the (trimmed) data in order to activate the escape
scheme. The dfdl:escapeBlockStart string is removed from the beginning of the
data. Until a matching dfdl:escapeBlockEnd string (that is, one not preceded
by the dfdl:escapeEscapeCharacter) is found in the data, any in-scope
terminating delimiter encountered in the data is not interpreted as such, and
any dfdl:escapeEscapeCharacters are removed when they precede a
dfdl:escapeBlockEnd string. The matching dfdl:escapeBlockEnd string is
removed from the data.. The matching dfdl:escapeBlockEnd does not have to be
the last character(s) in the (trimmed) data in order to de-activate the
escape scheme. A dfdl:escapeBlockStart occurring anywhere in the data other
than the first characters has no significance.</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeCharacter</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal or DFDL Expression</p>
<p class=MsoNormal>Specifies one character that escapes the subsequent
character. </p>
<p class=MsoNormal>Used when dfdl:escapeKind is 'escapeCharacter' </p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:escapeCharacter is
empty when dfdl:escapeKind is 'escapeCharacter'</p>
<p class=MsoNormal>This property can be computed by way of an expression which
returns a DFDL String Literal that represents a single character. The
expression must not contain forward references to elements which have not yet
been processed.</p>
<p class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Escape
and Quoting Character Restrictions:</span></em> The string literal is
restricted to allow only certain kinds of DFDL String Literal syntax:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>DFDL character entities are allowed</li>
<li class=MsoNormal>The DFDL byte value entity ( %#rXX; ) is not allowed</li>
<li class=MsoNormal>DFDL Character classes&nbsp; NL, WSP, WSP+, WSP*, and ES
are not allowed</li>
</ul>
<p class=MsoNormal>It is a Schema Definition Error if the string literal
contains any of the disallowed constructs.</p>
<p class=MsoNormal>Escape characters contribute to the simple value region
(SimpleLogicalValue or NilLiteralValue) of the field</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeBlockStart</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>DFDL String Literal </p>
<p class=MsoNormal style='text-autospace:none'>The string of characters that
denotes the beginning of a sequence of characters escaped by a pair of escape
strings.</p>
<p class=MsoNormal style='text-autospace:none'>Used when dfdl:escapeKind is
'escapeBlock' </p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:escapeBlockStart
is empty when dfdl:escapeKind is 'escapeBlock' </p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Escape and Quoting Character Restrictions&quot; in the
description of the dfdl:escapeCharacter property.</p>
<p class=MsoNormal style='text-autospace:none'>A dfdl:escapeBlockStart string
contributes to the simple value region (SimpleLogicalValue or NilLiteralValue)
of the field</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeBlockEnd</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>DFDL String Literal</p>
<p class=MsoNormal style='text-autospace:none'>The string of characters that
denotes the end of a sequence of characters escaped by a pair of escape
strings. </p>
<p class=MsoNormal style='text-autospace:none'>Used when dfdl:escapeKind is
'escapeBlock' .</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:escapeBlockEnd is
empty when dfdl:escapeKind is 'escapeBlock'.</p>
<p class=MsoNormal>When parsing, it is a Processing Error if the end of the
data for the element is reached and the escapeBlockEnd is not found in the
data. &nbsp;</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Escape and Quoting Character Restrictions&quot; in the
description of the escapeCharacter property.</p>
<p class=MsoNormal style='text-autospace:none'>A dfdl:escapeBlockEnd string
contributes to the simple value region (SimpleLogicalValue or
NilLiteralValue) of the field</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeEscapeCharacter</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal or DFDL Expression </p>
<p class=MsoNormal>Specifies one character that escapes an immediately
following dfdl:escapeCharacter or first character of dfdl:<span
style='color:black'>escapeBlockEnd</span>. </p>
<p class=MsoNormal>Used when dfdl:escapeKind is 'escapeCharacter' or
'escapeBlock'. </p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a DFDL String Literal that represents a single character. The
expression must not contain forward references to elements which have not yet
been processed.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Escape and Quoting Character Restrictions&quot; in the
description of the escapeCharacter property.</p>
<p class=MsoNormal>If the empty string is specified then no escaping of
escape characters occurs.</p>
<p class=MsoNormal>It is explicitly allowed for both the dfdl:escapeCharacter
and the dfdl:escapeEscapeCharacter to be the same character. In that case
processing functions as if the dfdl:escapeCharacter escapes itself.</p>
<p class=MsoNormal>Escape-escape characters contribute to the simple value
region (SimpleLogicalValue or NilLiteralValue) of the field.</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>extraEscapedCharacters</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals</p>
<p class=MsoNormal>A whitespace separated list of single characters that must
be escaped in addition to the in-scope delimiters. If there are no extra
characters to escape the property must be set to &quot;&quot;.</p>
<p class=MsoNormal>The string literal values are restricted in the same way
as described in &quot;Escape and Quoting Character Restrictions&quot; in the
description of the dfdl:escapeCharacter property.</p>
<p class=MsoNormal>This property only applies on unparsing.</p>
<p class=MsoNormal>Extra escaped characters contribute to the simple value
region (SimpleLogicalValue or NilLiteralValue) of the field.</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>generateEscapeBlock</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'always',&nbsp; 'whenNeeded'</p>
<p class=MsoNormal>Controls when escaping is used on unparsing when
dfdl:escapeKind is 'escapeBlock'. </p>
<p class=MsoNormal>If 'always' then escaping is always occurs as described in
dfdl:escapeKind.&nbsp; </p>
<p class=MsoNormal>If 'whenNeeded' then escaping occurs as described in
dfdl:escapeKind when the data contains any of the following:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>any in-scope terminating delimiter</li>
<li class=MsoNormal>dfdl:escapeBlockStart at the start of the data</li>
<li class=MsoNormal>any dfdl:extraEscapedCharacters</li>
</ul>
<p class=MsoNormal style='page-break-after:avoid'>Annotation:
dfdl:escapeScheme</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>escapeCharacterPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are &#8216;all&#8217;,
&#8216;delimiters&#8217;.</p>
<p class=MsoNormal>Controls when escape characters are removed during
parsing, and output during unparsing, when dfdl:escapeKind is
'escapeCharacter'.</p>
<p class=MsoNormal>When 'all':</p>
<p class=MsoNormal>During unparsing the following are escaped as described in
dfdl:escapeKind when they are in the data. </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Any in-scope terminating delimiter by escaping its first
character. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:escapeCharacter (escaped by dfdl:escapeEscapeCharacter)</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>any dfdl:extraEscapedCharacters</p>
<p class=MsoNormal>During parsing, occurrences of dfdl:escapeCharacter and
dfdl:escapeEscapeCharacter are interpreted and removed from the data as
described in dfdl:escapeKind.</p>
<p class=MsoNormal>When 'delimiters':</p>
<p class=MsoNormal>During unparsing the following are escaped as described in
dfdl:escapeKind when they are in the data. </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Any in-scope terminating delimiter by escaping its first
character. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:escapeCharacter (escaped by dfdl:escapeEscapeCharacter)</p>
<p class=MsoNormal>During parsing, occurrences of dfdl:escapeCharacter and
dfdl:escapeEscapeCharacter are interpreted and removed from the data as
described in dfdl:escapeKind, except that dfdl:escapeCharacter is only
removed when it immediately precedes an in-scope terminating delimiter.</p>
<p class=MsoNormal>Annotation: dfdl:escapeScheme</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 27 Escape Scheme Properties</p>
<h4><span style='color:black;font-weight:normal'>13.2.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Escape
Scheme Example</h4>
<p class=MsoNormal>Consider a dfdl:escapeScheme annotation with the following
properties:<span style='color:black'> </span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:escapeBlockStart=&quot;start&quot; </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:escapeBlockEnd=&quot;end&quot; </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:escapeEscapeCharacter=&quot;#&quot; </p>
<p class=MsoNormal>If this is used to serialize a DFDL Infoset element of type
xs:string with value &#8220;A hash is a #&#8221;, then the value is wrapped
with the dfdl:escapeBlockStart and dfdl:escapeBlockEnd, giving simple content
&quot;startA hash is a #end&quot;. If this data is parsed, the &quot;#end&quot;
is treated as an escaped escape block end and the parse fails with a Processing
Error, reporting that there is no escape block end in the data. </p>
<p class=MsoNormal>In this scenario, the data is not compliant with the escape
scheme, and the DFDL unparser MUST issue a Processing Error. </p>
<p class=MsoNormal>Additional examples are in Appendix
A: Escape Scheme Use Cases.</p>
<h2><a name="_Toc177399098"></a><a name="_Toc175057385"></a><a
name="_Toc199516321"></a><a name="_Toc194983985"></a><a name="_Toc243112829"></a><a
name="_Toc349042750"></a><a name="_Toc62570162"></a><a name="_Toc322911338"></a><a
name="_Toc322911653"></a><a name="_Toc322911901"></a><a name="_Toc322912192"></a><a
name="_Toc329093041"></a><a name="_Toc332701554"></a><a name="_Toc332701858"></a><a
name="_Toc332711652"></a><a name="_Toc332711960"></a><a name="_Toc332712262"></a><a
name="_Toc332724178"></a><a name="_Toc332724478"></a><a name="_Toc341102774"></a><a
name="_Toc347241509"></a><a name="_Toc347744702"></a><a name="_Toc348984485"></a><a
name="_Toc348984790"></a><a name="_Toc349037954"></a><a name="_Toc349038256"></a><a
name="_Toc349042749"></a><a name="_Toc349642163"></a><a name="_Toc351912747"></a><a
name="_Toc351914768"></a><a name="_Toc351915234"></a><a name="_Toc361231291"></a><a
name="_Toc361231817"></a><a name="_Toc362445115"></a><a name="_Toc363909037"></a><a
name="_Toc364463461"></a><a name="_Toc366078064"></a><a name="_Toc366078683"></a><a
name="_Toc366079668"></a><a name="_Toc366080280"></a><a name="_Toc366080889"></a><a
name="_Toc366505229"></a><a name="_Toc366508598"></a><a name="_Toc366513099"></a><a
name="_Toc366574288"></a><a name="_Toc366578081"></a><a name="_Toc366578675"></a><a
name="_Toc366579267"></a><a name="_Toc366579858"></a><a name="_Toc366580450"></a><a
name="_Toc366581041"></a><a name="_Toc366581633"></a>13.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties for
Bidirectional support for All Simple Types with Text representation</h2>
<p class=MsoNormal>Bidirectional text is a feature expected in a future
revision of the DFDL standard.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td width=155 valign=top style='width:116.3pt;border:solid windowtext 1.0pt;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property name</b></p>
</td>
<td width=420 valign=top style='width:315.2pt;border:solid windowtext 1.0pt;
border-left:none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td width=155 valign=top style='width:116.3pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textBidi</p>
</td>
<td width=420 valign=top style='width:315.2pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid value is, 'no'</p>
<p class=MsoNormal>This property exists in anticipation of future DFDL
features that enable bidirectional text processing.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType (representation
text)</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 28 Properties for Bidirectional support for All
Simple Types with Text representation</p>
<h2><a name="_Toc243112830"></a><a name="_Toc349042751"></a><a
name="_Ref38560927"></a><a name="_Toc62570163">13.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Specific to </a>String </h2>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStringJustification</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'left', 'right',&nbsp; 'center'</p>
<p class=MsoNormal>Unparsing:</p>
<p class=MsoNormal>'left': Justifies to the left and adds padding chars to
the string contents if the string is too short, to the length determined by
the dfdl:textPadKind property. </p>
<p class=MsoNormal>'right': Justifies to the right and adds padding chars to
the string contents if the string is too short, to the length determined by
the dfdl:textPadKind property.</p>
<p class=MsoNormal>'center': Adds equal padding chars left and right of the
string contents if the string is too short, to the length determined by the
dfdl:textPadKind property. It adds one extra padding char on the left if
needed.</p>
<p class=MsoNormal>Parsing:</p>
<p class=MsoNormal>'left': Trims any pad characters from the right of the
string, according to dfdl:textTrimKind property.</p>
<p class=MsoNormal>'right': Trims any pad characters from the left of the
string, according to dfdl:textTrimKind property.</p>
<p class=MsoNormal>'center' Trims any pad characters from the left and right
of the string, according to dfdl:textTrimKind property.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStringPadCharacter</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>The value that is used when padding or trimming string
elements.</p>
<p class=MsoNormal>The value can be a single character or a single byte.</p>
<p class=MsoNormal>If a character, then it can be specified using a literal
character or using DFDL entities. </p>
<p class=MsoNormal>If a byte, then it must be specified using a single byte
value entity otherwise it is a Schema Definition Error</p>
<p class=MsoNormal>If a pad character is specified when dfdl:lengthUnits is
'bytes' then the pad character must be a single-byte character.</p>
<p class=MsoNormal>If a pad byte is specified when dfdl:lengthUnits is
'characters' then </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>the encoding must be a fixed-width encoding</li>
<li class=MsoNormal>padding and trimming must be applied using a sequence of
N pad bytes, where N is the width of a character in the fixed-width
encoding. </li>
</ul>
<p class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Padding
Character Restrictions:</span></em> The string literal is restricted to allow
only certain kinds of DFDL String Literal syntax:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>DFDL character entities are allowed</li>
<li class=MsoNormal>The DFDL byte value entity ( %#rXX; ) is allowed.</li>
<li class=MsoNormal>DFDL Character classes NL, WSP, WSP+, WSP*, and ES are
not allowed</li>
</ul>
<p class=MsoNormal>It is a Schema Definition Error if the string literal
contains any of the disallowed syntax.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>truncateSpecifiedLengthString</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>Used on unparsing only.</p>
<p class=MsoNormal>'yes' means if the logical type is xs:string and the value
is longer than the specified length, the string is truncated to this length.
(See Section <span
class=MsoHyperlink>12.3.7</span> <span
class=MsoHyperlink>Elements of Specified Length</span>.) No Processing Error
is raised.</p>
<p class=MsoNormal>This property is needed when a DFDL schema has specified
lengths for strings. The strings in an Infoset being unparsed do not
necessarily fit within those specified lengths. This property provides the
means to express whether this is an error, or the strings can be truncated to
fit. </p>
<p class=MsoNormal>The position from which data is truncated is determined by
the value of the dfdl:textStringJustification property. If the value of the
dfdl:textStringJustification property is 'left', data is truncated from the
right; if the value of the dfdl:textStringJustification property is 'right',
data is truncated from the left. However, if the value of the
dfdl:textStringJustification property is 'center', truncation does not occur,
and a Processing Error occurs if the value is too long.</p>
<p class=MsoNormal>When unparsing, Validation Errors cannot be prevented by
truncation as validation takes place on the augmented Infoset, before any
truncation has occurred.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType </p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc130873629"></a><a name="_Toc140549601">Table </a>29
Properties Specific to String</p>
<h2><a name="_Toc199516324"></a><a name="_Toc194983987"></a><a
name="_Toc243112831"></a><a name="_Ref251144933"></a><a name="_Toc177399100"></a><a
name="_Toc175057387"></a><a name="_Toc349042752"></a><a name="_Toc62570164"></a><a
name="_Toc229813808"></a><a name="_Toc229814002"></a>13.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties Specific to
Number with Text or Binary Representation</h2>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td width=192 valign=top style='width:2.0in;border:solid windowtext 1.0pt;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td width=192 valign=top style='width:2.0in;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>decimalSigned</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>Indicates whether an xs:decimal element is signed. See <span class=MsoHyperlink>13.6.2</span> <span
class=MsoHyperlink>Converting logical numbers to/from text representation</span>
and <span
class=MsoHyperlink>13.7.1</span> <span
class=MsoHyperlink>Converting Logical Numbers to/from Binary </span>&nbsp;to
see how this affects the presence of the sign in the data stream.</p>
<p class=MsoNormal>'yes' means that the xs:decimal element is signed</p>
<p class=MsoNormal>'no' means that the xs:decimal element is not signed</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 30 Properties Specific to Number with Text or Binary
Representation</p>
<h2><a name="_Ref38560978"></a><a name="_Toc62570165"></a><a
name="_Toc349042753">13.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Specific to </a>Number with Text Representation</h2>
<p class=nobreak>There are many properties for describing textual number
representations. The properties deal with the representation of the numeric
value only. Other symbols adjacent to the textual representation of a number,
such as currency symbols, percent signs, or coordinate axis indicators, are not
considered part of the value representation.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'standard', 'zoned'</p>
<p class=MsoNormal>'standard' means represented as characters in the
character set encoding specified by the dfdl:encoding property.</p>
<p class=MsoNormal>'zoned' means represented as a zoned decimal in the
character set encoding specified by the dfdl:encoding property. In zoned
representation e<span style='font-size:10.5pt;color:#202122;background:white'>ach
decimal digit is stored in one character code point (usually 1 byte), with
the least-significant four bits encoding the digit value 0 through 9. The
most-significant four bits, called the &quot;zone&quot; bits, are usually set
to a fixed value Typically these zone bits are hex F in EBCDIC encodings or 3
in ASCII encodings so that the byte holds a character value corresponding to
the digit. However, in the first or last character code the zone bits are modified
to represent the sign of the number. This is called <i>overpunched sign</i>
since zoned representation originated when computers used punched cards for
data.</span></p>
<p class=MsoNormal>Which characters are used to represent modified
('overpunched') positive and negative signs varies by encoding, COBOL
compiler, and system. The code points are fixed for EBCDIC systems but not
for ASCII. </p>
<p class=MsoNormal>In EBCDIC-based encodings, code points 0xC0 to 0xC9 or
0xF0 to 0xF9 represent a positive sign and digits 0 to 9 (these byte ranges
correspond typically to characters '{ABCDEFGHI' or '0123456789'), and code
points 0xD0 to 0xD9 or 0xB0 to 0xB9 represent a negative sign and digits 0 to
9 (these byte ranges correspond typically to characters '}JKLMNOPQR' or
&nbsp;'^&pound;&yen;&middot;&copy;&sect;&para;&frac14;&frac12;&frac34; ' ).
On parsing both ranges are accepted. On unparsing the range 0xC0 to 0xC9 are
produced for positive signs and the range 0xD0 to 0xD9 are produced for
negative signs.</p>
<p class=MsoNormal>For ASCII-based encodings see the property
dfdl:textZonedSignStyle.</p>
<p class=MsoNormal>Zoned is not supported for float and double numbers. Base
10 is assumed, and the encoding must be for an EBCDIC or ASCII compatible
encoding. It is a Schema Definition Error if any of these requirements are
not met.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberJustification</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'left', 'right', 'center'</p>
<p class=MsoNormal>Controls how the data is padded or trimmed on parsing and
unparsing. </p>
<p class=MsoNormal>Behavior as for dfdl:textStringJustification.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberPadCharacter</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>The value that is used when padding or trimming number
elements.</p>
<p class=MsoNormal>The value can be a single character or a single byte.</p>
<p class=MsoNormal>If a character, then it can be specified using a literal
character or using DFDL entities. <br>
If a byte, then it must be specified using a single byte value entity</p>
<p class=MsoNormal>If a pad character is specified when dfdl:lengthUnits is
'bytes' then the pad character must be a single-byte character. </p>
<p class=MsoNormal>If a pad byte is specified when dfdl:lengthUnits is
'characters' then </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the encoding must be a fixed-width encoding</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>padding and trimming must be applied using a sequence of N pad
bytes, where N is the width of a character in the fixed-width encoding. </p>
<p class=MsoNormal>When parsing, if the pad character is '0' and
dfdl:textTrimKind is 'padChar' then the SimpleContent region is trimmed of
the '0' characters as defined by the trimming rules. If at least one '0'
character is removed and the trimmed text causes a Processing Error when
parsed, a single '0' character is re-instated, and the text is parsed again.
This is to handle the case when '0' characters are trimmed away leaving no
digits. This rule also applies when the pad character is a DFDL character
entity equivalent to '0'. This rule does not apply when the pad character is
any other character nor when a pad byte is specified.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Pad Character Restrictions&quot; in the description of the
dfdl:textStringPadCharacter property.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberPattern</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String </p>
<p class=MsoNormal>Defines the ICU-like pattern that describes the format of
the text number. The pattern defines where grouping separators, decimal separators,
implied decimal points, exponents, positive signs and negative signs appear.
It permits definition by either digits/fractions or significant digits.
Allows rounding.</p>
<p class=MsoNormal>When dfdl:textNumberRep is 'standard' this property only
applies when&nbsp; dfdl:textStandardBase is 10. When dfdl:textNumberRep is
'standard' and dfdl:textStandardBase is not 10 the number is represented as
the&nbsp; minimum number of characters to represent the digits. There is no
sign or virtual decimal point.</p>
<p class=MsoNormal>The syntax of dfdl:textNumberPattern is described in Section
<span class=MsoHyperlink>13.6.1</span> <span
class=MsoHyperlink>The dfdl:textNumberPattern Property</span></p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberRounding</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Specifies how rounding is controlled during unparsing.</p>
<p class=MsoNormal>Valid values 'pattern', 'explicit'</p>
<p class=MsoNormal>When dfdl:textNumberRep is 'standard' this property only applies
when dfdl:textStandardBase is 10.</p>
<p class=MsoNormal>If 'pattern' then rounding takes place according to the
pattern. A rounding increment may be specified in the dfdl:textNumberPattern
using digits '1' though '9', otherwise rounding is to the width of the
pattern. The rounding mode is always 'roundHalfEven'. </p>
<p class=MsoNormal>If 'explicit' then the rounding increment is specified by
the dfdl:textNumberRoundingIncrement property, and any digits '1' through '9'
in the dfdl:textNumberPattern are treated as digit '0'. The rounding mode is
specified by the dfdl:textRoundingMode property. </p>
<p class=MsoNormal>To disable rounding, use 'explicit' in conjunction with
'roundUnnecessary' for the dfdl:textNumberRoundingMode. If rounding is
disabled, then any need for rounding is treated as a Processing Error. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberRoundingMode</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Specifies how rounding occurs during unparsing, when
dfdl:textNumberRounding is 'explicit'.</p>
<p class=MsoNormal>When dfdl:textNumberRep is 'standard' this property only
applies when&nbsp; dfdl:textStandardBase is 10.</p>
<p class=MsoNormal>To switch off rounding, use 'roundUnnecessary'. </p>
<p class=MsoNormal>Valid values 'roundCeiling',&nbsp; 'roundFloor',
'roundDown', 'roundUp', 'roundHalfEven',&nbsp; 'roundHalfDown',
'roundHalfUp', 'roundUnnecessary'</p>
<p class=MsoNormal>The enum values have these rounding directions:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundCeiling' - toward positive infinity.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundFloor' - toward negative infinity</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundDown' - toward zero</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundUp' - away from zero</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundHalfEven' - toward nearest neighbor, except when both
neighbors are equidistant, in which case round towards the even neighbor. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundHalfDown' - toward nearest neighbor, except when both
neighbors are equidistant, in which case round down.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundHalfUp' - toward nearest neighbor, except when both
neighbors are equidistant, in which case round up.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'roundUnnecessary' - no rounding. If rounding is necessary it
is a Processing Error.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberRoundingIncrement</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Double</p>
<p class=MsoNormal>Specifies the rounding increment to use during unparsing,
when dfdl:textNumberRounding is 'explicit'.</p>
<p class=MsoNormal>When dfdl:textNumberRep is 'standard' this property only
applies when&nbsp; dfdl:textStandardBase is 10.</p>
<p class=MsoNormal>A negative value is a Schema Definition Error.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textNumberCheckPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Values are 'strict' and 'lax'. </p>
<p class=MsoNormal>Indicates how lenient to be when parsing against the dfdl:textNumberPattern.
</p>
<p class=MsoNormal>When dfdl:textNumberRep is 'standard' this property only
applies when&nbsp; dfdl:textStandardBase is 10.</p>
<p class=MsoNormal>If 'lax' and dfdl:textNumberRep is 'standard' then behavior
is implementation-defined, but typically includes grouping separators are ignored,
leading and trailing whitespace&nbsp; is ignored, leading zeros are ignored,
and quoted characters may be omitted.</p>
<p class=MsoNormal>If 'lax' and dfdl:textNumberRep is 'zoned' then positive
punched data is accepted when parsing an unsigned type, and unpunched data is
accepted when parsing a signed type</p>
<p class=MsoNormal>If 'strict' and dfdl:textNumberRep is 'standard' then the
data must follow the pattern with the exceptions that digits 0-9, decimal
separator and exponent separator are always recognized and parsed.</p>
<p class=MsoNormal>If 'strict' and dfdl:textNumberRep is 'zoned' then the
data must follow the pattern. </p>
<p class=MsoNormal>On unparsing the pattern is always followed and follow the
rules in <span
class=MsoHyperlink>13.6.2</span> <span
class=MsoHyperlink>Converting logical numbers to/from text representation</span>.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardDecimalSeparator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals&nbsp; or DFDL Expression</p>
<p class=MsoNormal>The decimal separator is the punctuation mark which
separates the integer part of a decimal or floating point number from the
fractional part. It is usually a period or comma depending on locale of the
data.</p>
<p class=MsoNormal>This property defines a whitespace separated list of
single characters that appear (individually) in the data as the decimal
separator. </p>
<p class=MsoNormal>This property is applicable, when dfdl:textNumberRep is
'standard' and dfdl:textStandardBase is 10. It must be set if&nbsp;
dfdl:textNumberPattern contains a decimal separator symbol (&quot;.&quot;),
or the E or @ symbols. (it is a Schema Definition Error otherwise.) Empty
string is not an allowable value. </p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a DFDL String Literal that represents a single character. The
expression must not contain forward references to elements which have not yet
been processed.</p>
<p class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Text
Number Character Restrictions:</span></em> The string literal is restricted
to allow only certain kinds of DFDL String Literal syntax:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL character entities are allowed</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The DFDL byte value entity ( %#rXX; ) is not allowed.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character classes NL, WSP, WSP+, WSP*, and ES are not
allowed</p>
<p class=MsoNormal>It is a Schema Definition Error if the string literal
contains any of the disallowed syntax constructs.</p>
<p class=MsoNormal>In addition, it is a Schema Definition Error if any of the
string literal values for this property are digits 0-9. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardGroupingSeparator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal or DFDL Expression</p>
<p class=MsoNormal>The grouping separator is the punctuation mark which
separates the clusters of integer digits to improve readability.</p>
<p class=MsoNormal>This property defines the single character that can appear
in the data as the grouping separator. </p>
<p class=MsoNormal>This property is applicable when dfdl:textNumberRep is
'standard' and dfdl:textStandardBase is 10. It must be set if&nbsp;
dfdl:textNumberPattern contains a grouping separator symbol (it is a Schema
Definition Error otherwise.) Empty string is not an allowable value.</p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a DFDL String Literal that represents a single character. The
expression must not contain forward references to elements which have not yet
been processed.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Text Number Character Restrictions&quot; in the
description of the dfdl:textStandardDecimalSeparator property.</p>
<p class=MsoNormal>See also Section <span
class=MsoHyperlink>13.6.1.1</span> dfdl:textNumberPattern
for dfdl:textNumberRep 'standard' for additional details about grouping
separators.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardExponentRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal or DFDL Expression</p>
<p class=MsoNormal>Defines the actual character(s) that appear in the data as
the exponent indicator. If the empty string is specified then no exponent
character is used.</p>
<p class=MsoNormal>This property is applicable when dfdl:textNumberRep is
'standard' and dfdl:textStandardBase is 10. Empty string is an allowable
value, so that formats like NNN+M (meaning NNN x 10 with MM exponent) can be
expressed. </p>
<p class=MsoNormal>This property must be set even if the
dfdl:textNumberPattern does not contain an 'E' (exponent) character. It is a
Schema Definition Error if this property is not set or in scope for any
number with dfdl:representation 'text'.</p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a DFDL String Literal. The expression must not contain forward
references to elements which have not yet been processed.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Text Number Character Restrictions&quot; in the
description of the dfdl:textStandardDecimalSeparator property.</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardInfinityRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>The value used to represent infinity.</p>
<p class=MsoNormal>Infinity is represented as a string with the positive or
negative prefixes and suffixes from the dfdl:textNumberPattern applied.</p>
<p class=MsoNormal>This property is applicable when dfdl:textNumberRep is
'standard', dfdl:textStandardBase is 10 and the simple type is float or
double.</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Text Number Character Restrictions&quot; in the
description of the dfdl:textStandardDecimalSeparator property.</p>
<p class=MsoNormal>It is a Schema Definition Error if empty string found as
the property value.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardNaNRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>The value used to represent NaN.</p>
<p class=MsoNormal><strong><span style='font-weight:normal'>NaN</span></strong>
is represented as a string and the positive or negative prefixes and suffixes
from the dfdl:textNumberPattern are not used.</p>
<p class=MsoNormal>This property is applicable when dfdl:textNumberRep is
'standard', dfdl:textStandardBase is 10 and the simple type is float or
double.</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Text Number Character Restrictions&quot; in the
description of the dfdl:textStandardDecimalSeparator property.</p>
<p class=MsoNormal>It is a Schema Definition Error if empty string found as
the property value.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardZeroRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals</p>
<p class=MsoNormal>Valid values: empty string, any character string</p>
<p class=MsoNormal>The whitespace separated list of alternative DFDL String
Literals that are equivalent to zero, for example the characters 'zero'. </p>
<p class=MsoNormal>The representation is examined for a match to one of the
values of this property after padding has been trimmed away.</p>
<p class=MsoNormal>On unparsing the first value is used.</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal>The empty string means that there is no special literal
string for zero.&nbsp; </p>
<p class=MsoNormal>This property is applicable when dfdl:textNumberRep is
'standard' and dfdl:textStandardBase is 10.</p>
<p class=MsoNormal>Each string literal in the list is restricted to allow
only certain kinds of DFDL String Literal syntax:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL character entities are allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Byte Value entities ( %#rXX; ) are not allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character class entities NL and ES are not allowed.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character class entities WSP, WSP+, and WSP* are allowed. </p>
<p class=MsoNormal>However, the WSP* entity cannot appear on its own as one
of the string literals in the list. It must be used in combination with other
text characters or entities so as to describe a representation that cannot
ever be an empty string. </p>
<p class=MsoNormal>It is a Schema Definition Error if the string literal
contains any of the disallowed syntax constructs.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textStandardBase</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>Valid Values 2, 8, 10, 16 </p>
<p class=MsoNormal>Indicates the number base. </p>
<p class=MsoNormal>Only used when dfdl:textNumberRep is 'standard'. </p>
<p class=MsoNormal><span lang=EN-GB>When base is not 10, xs:decimal, xs:float,
and xs:double are not supported.</span></p>
<p class=MsoNormal>When dfdl:textNumberRep is 'zoned' dfdl:textStandardBase
is not used and base 10 is assumed.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textZonedSignStyle</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Specifies the code points that are used to modify the sign
nibble of the byte containing the sign, when the dfdl:encoding is an
ASCII-derived character set encoding. The location of this sign nibble is
indicated in the dfdl:textNumberPattern. </p>
<p class=MsoNormal>This property is applicable when dfdl:textNumberRep is 'zoned'.
</p>
<p class=MsoNormal>Used only when dfdl:encoding is an ASCII-derived character
set encoding. The encoding must provide the character to single byte code
point mapping used by the specified value of dfdl:textZonedSignStyle, as
stated below. </p>
<p class=MsoNormal>Valid values 'asciiStandard', 'asciiTranslatedEBCDIC',
'asciiCARealiaModified', and 'asciiTandemModified' </p>
<p class=MsoNormal>Which characters are used to represent modified (also
called 'overpunched') positive and negative signs, varies by encoding, COBOL
compiler, and system. The code points are fixed for EBCDIC systems but not
for ASCII. </p>
<p class=MsoNormal>In ASCII-based encodings, this property is used to
determine how signs are expressed for zoned numbers.</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>asciiStandard: ASCII characters '0123456789' represent a
positive sign and the corresponding digit. (Sign nibble for '+' is 0x3, which
is the high nibble of these code points unmodified.) ASCII characters
'pqrstuvwxy' represent negative sign and digits 0 to 9. (Code points 0x70 to
0x79) </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>asciiTranslatedEBCDIC: &nbsp;The overpunched character is the
ASCII equivalent of the typical EBCDIC above. So, the characters '{ABCDEFGHI'
&nbsp;still represent a positive sign and digits 0 to 9. (These are code
points 0x7B, 0x41 through 0x49). The characters '}JKLMNOPQR' still represent
negative sign and digits 0 to 9. (These are code points 0x7D, 0x4A through
0x52). This case comes up if EBCDIC zoned decimal data is translated to ASCII
as if it were textual data.) </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>asciiCARealiaModified<a href="#_ftn41" name="_ftnref41" title=""><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[41]</span></a>:
&nbsp;In this style, the ASCII characters '0123456789' represent positive
sign and digits 0 to 9 as in asciiStandard. However, ASCII characters from
code points 0x20 to 0x29 are used for negative sign and the corresponding
decimal digit. This doesn't translate well into printing characters. These
characters include the space (' ') for zero, characters '!&quot;#$%&amp;' for
1 through 6, the single quote character &quot;'&quot; for 7, and the
parenthesis '()' for 8 and 9. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>asciiTandemModified: In this style the ASCII characters
'0123456789' represent positive sign and digits 0 to 9, but code points 0x80
to 0x89 are used to represent negative sign and a digit. There are no
corresponding code points in the standard ASCII encoding since these values
are all above 128 (decimal). This means the resultant bytes are not code
points in standard ASCII, so the schema must specify an encoding like
ISO-8859-1 for such zoned decimals to parse without an encoding error. (Note
that neither ISO-8859-1 encoding, nor Unicode have assigned glyphs for these
code points. They are considered control characters.) </p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc130873640"></a><a name="_Toc140549612"></a><a
name="_Ref140946684"></a><a name="_Ref140946689"></a><a name="_Toc177399101"></a><a
name="_Toc175057388"></a><a name="_Toc199516325"></a><a name="_Toc194983988"></a><a
name="_Ref215978163"></a><a name="_Ref215978195"></a><a name="_Toc243112832">Table
</a>31 Properties Specific to Number with Text Representation</p>
<p class=MsoNormal>The dfdl:textStandardDecimalSeparator, dfdl:textStandardGroupingSeparator,
dfdl:textStandardExponentRep, dfdl:textStandardInfinityRep,
dfdl:textStandardNaNRep, and dfdl:textStandardZeroRep must all be distinct, and
it is a Schema Definition Error otherwise. Note that if
dfdl:textStandardDecimalSeparator, dfdl:textStandardGroupingSeparator, or
dfdl:textStandardExponentRep are expressions, this checking can only be carried
out during processing (parsing or unparsing.)</p>
<p class=MsoNormal>Implementation note: This rule is in the interests of
clarity and is an extra constraint compared to ICU.</p>
<h3><a name="_Ref254704660"></a><a name="_Toc349042754"></a><a
name="_Toc62570166"></a><a name="_Toc254776341"></a><a name="_Toc254776342"></a><a
name="_Toc254776343"></a><a name="_Toc254776344"></a><span style='color:black;
font-weight:normal'>13.6.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>The dfdl:textNumberPattern Property</h3>
<p class=MsoNormal>The dfdl:textNumberPattern describes how to parse and
unparse text representations of number logical types with base 10. </p>
<p class=MsoNormal>The length of the representation of the number is determined
first, and the number pattern is used only for conversion of the content text
to and from a numeric logical Infoset value.</p>
<p class=MsoNormal>The pattern described below is derived from the ICU
DecimalFormat class described here: [<a href="#a_ICUDecimal">ICUDecimal</a>]</p>
<p class=MsoNormal>The pattern is an ICU-like syntax that defines where
grouping separators, decimal separators, implied decimal points, exponents,
positive signs and negative signs appear. It permits definition by either
digits/fractions or significant digits.</p>
<h4><a name="_Ref275431294"><span style='color:black;font-weight:normal'>13.6.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:textNumberPattern
for dfdl:textNumberRep 'standard'</a></h4>
<p class=MsoNormal>When dfdl:textNumberRep is 'standard' this property only
applies when&nbsp; dfdl:textStandardBase is 10. </p>
<p class=MsoNormal>The pattern comes in two parts separated by a semi-colon.
The first is mandatory and applies to positive numbers, the second is optional
and applies to negative numbers.</p>
<p class=MsoNormal>Examples: The first shows digits/fractions and
positive/negative signs, the second shows exponent, the third shows virtual
decimal point, the fourth shows scaling position.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>+###,##0.00;(###,##0.00)</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>##0.0#E0</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>000V00</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>PPP0000</span></p>
</div>
<p class=MsoNormal>The 'V' symbol is used to indicate the location of an
implied decimal point for fixed point number representations. (This is an
extension to the ICU pattern language.)</p>
<p class=MsoNormal>The 'P' symbol is used to indicate that a decimal scaling
factor needs to be applied. (This is an extension to the ICU pattern language.)</p>
<p class=MsoNormal>The actual grouping separator, decimal separator and
exponent characters are defined independently of the pattern.</p>
<p class=MsoNormal>The actual positive sign and negative sign are defined
within the pattern itself.</p>
<p class=MsoNormal>Many characters in a pattern are taken literally; they are
matched during parsing and output unchanged during unparsing. Special
characters, on the other hand, stand for other characters, strings, or classes
of characters. For example, the '#' character is replaced by a digit.</p>
<p class=MsoNormal>To insert a special character in a pattern as a literal,
that is, without any special meaning, the character must be quoted. There are
some exceptions to this which are noted below.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Symbol </b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Location </span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning </span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Digit </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1-9 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'1' through '9' indicates rounding. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal># </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Digit, zero shows as absent </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>. </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Decimal separator or monetary decimal separator </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>- </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Minus sign </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>, </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Grouping separator </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>E </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Separates mantissa and exponent in scientific notation.
Need not be quoted in prefix or suffix. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>+ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Exponent </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Prefix positive exponents with plus sign. Need not be
quoted in prefix or suffix. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Subpattern boundary </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Separates positive and negative subpatterns </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>' </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Prefix or suffix </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Used to quote special characters in a prefix or suffix,
for example, &quot;'#'#&quot; formats 123 to &quot;#123&quot;. To create a
single quote itself, use two in a row: &quot;# o''clock&quot;. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>* </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Prefix or suffix boundary </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Pad escape, precedes pad character </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>V</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Virtual decimal point marker. Only used with decimal,
float and double simple types.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>P</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Decimal scaling position. Only used with decimal, float
and double simple types.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>@</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Number</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Significant digits specifier. Only used with decimal
simple type. Controls number of significant digits when used alone or in
conjunction with the # character.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 32 dfdl:textNumberPattern Special Characters</p>
<p class=MsoNormal>A pattern contains a positive and negative subpattern, for
example, &quot;#,##0.00;(#,##0.00)&quot;. Each subpattern has a prefix, a
numeric part, and a suffix. If there is no explicit negative subpattern, the
negative subpattern is the minus sign prefixed to the positive subpattern. That
is, &quot;0.00&quot; alone is equivalent to &quot;0.00;-0.00&quot;. If there is
an explicit negative subpattern, it serves only to specify the negative prefix
and suffix; the number of digits, minimal digits, and other characteristics are
ignored in the negative subpattern. That means that &quot;#,##0.0#;(#)&quot;
has precisely the same result as &quot;#,##0.0#;(#,##0.0#)&quot;.</p>
<p class=MsoNormal>The prefixes, suffixes, and various symbols used for
infinity, digits, grouping separators, decimal separators, etc. may be set to
arbitrary values, and they appear properly during unparsing. However, care must
be taken that the symbols and strings do not conflict, or parsing will be
unreliable. For example, either the positive and negative prefixes or the
suffixes must be distinct for <a
href="http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#fe6f4084b4a6ccff6977501d90011fa4"
title="Parse the given string using this object's choices."><span
style='color:windowtext'>parse</span></a> to be able to distinguish positive
from negative values.</p>
<p class=MsoNormal>The <em><span style='font-family:"Arial",sans-serif'>grouping
separator</span></em> is a character that separates clusters of integer digits
to make large numbers more legible. It commonly used for thousands, but in some
locales it separates ten-thousands. The <em><span style='font-family:"Arial",sans-serif'>grouping
size</span></em> is the number of digits between the grouping separators, such
as 3 for &quot;100,000,000&quot; or 4 for &quot;1 0000 0000&quot;. There are two
different grouping sizes: One used for the least significant integer digits,
the <em><span style='font-family:"Arial",sans-serif'>primary grouping size</span></em>,
and one used for all others, the <em><span style='font-family:"Arial",sans-serif'>secondary
grouping size</span></em>. In most locales these are the same, but sometimes
they are different. For example, if the primary grouping interval is 3, and the
secondary is 2, then this corresponds to the pattern &quot;#,##,##0&quot;, and
the number 123456789 is formatted as &quot;12,34,56,789&quot;. If a pattern
contains multiple grouping separators, the interval between the last one and
the end of the integer defines the primary grouping size, and the interval
between the last two defines the secondary grouping size. All others are
ignored, so &quot;#,##,###,####&quot; == &quot;###,###,####&quot; ==
&quot;##,#,###,####&quot;.</p>
<p class=MsoNormal>The P symbol is used to derive the location of an assumed
decimal point when the point is not within the number that appears in the data.
It acts as a decimal scaling factor.</p>
<p class=MsoNormal>The symbol P can be specified only as a continuous string of
Ps in the leftmost or rightmost digit positions in the vpinteger region of the
pattern.</p>
<p class=MsoNormal>It is a Schema Definition Error if any symbols other than
&quot;0&quot;, &quot;1&quot; through &quot;9&quot; or # are used in the
vpinteger region of the pattern. </p>
<p class=MsoNormal><b>Examples</b></p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Data Representation</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Pattern</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Value</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>123</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PP000</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0.00123</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>123</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>000PP</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>12300</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 33 Examples of P Symbol in the dfdl:textNumberPattern
Property</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;pattern&nbsp;&nbsp;&nbsp; := subpattern
(';' subpattern)?</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;</span><span style='color:black'>subpattern
:= prefix? ((number exponent?)| vpinteger) suffix?</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;number&nbsp;&nbsp; &nbsp;&nbsp;:= (integer ('.'
fraction)?) </span><span lang=EN-GB style='color:black'>| sigdigits</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;vpinteger&nbsp; := pinteger | (vinteger
exponent?)</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;pinteger&nbsp;&nbsp; := ('P'* integer) |
(integer 'P'* )&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;vinteger&nbsp;&nbsp; := ('V'? integer) |</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
('#'* 'V'? integer)|</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style='color:black'>('#'* '0'* 'V'? '0'* '0')|</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(integer
'V'?) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'>&nbsp;</p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;prefix&nbsp;&nbsp;&nbsp;&nbsp; := '\u0000'..'\uFFFD'
- specialCharacters</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;suffix&nbsp;&nbsp;&nbsp;&nbsp; := '\u0000'..'\uFFFD'
- specialCharacters</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;</span><span lang=EN-GB style='color:black'>integer&nbsp;&nbsp;&nbsp;
:= '#'* '0'* '0'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;fraction&nbsp;&nbsp; := '0'* '#'*</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;sigDigits&nbsp; := '#'* '@' '@'* '#'*</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;exponent&nbsp;&nbsp; := 'E'? '+'? </span><span
style='color:black'>'0'* '0'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;padSpec&nbsp;&nbsp;&nbsp; := '*' padChar</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;padChar&nbsp;&nbsp;&nbsp; := '\u0000'..'\uFFFD' -
quote</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;Notation:</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp; X*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 or
more instances of X</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp; X?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 or 1
instances of X</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp; X|Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; either X or
Y</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp; C..D &nbsp;&nbsp;&nbsp;&nbsp;any character
from C up to D, inclusive</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>&nbsp;&nbsp; S-T&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; characters in
S, except those in T</span></p>
</div>
<p class=MsoCaption>&nbsp;Figure 4 dfdl:textNumberPattern BNF syntax</p>
<p class=MsoNormal>The first <span class=SourceText>subpattern</span> is for
positive numbers. The second (optional) <span class=SourceText>subpattern</span>
is for negative numbers.</p>
<p class=MsoNormal>Not indicated in the BNF syntax above:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The grouping separator ',' can occur inside the integer region,
between any two pattern characters of that region, as long as the number region
is not followed by an exponent region.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Two grouping intervals are recognized: That between the decimal
point and the first grouping symbol, and that between the first and second
grouping symbols. These intervals are identical in most locales, but in some
locales they differ. For example, the pattern &quot;#,##,###&quot; formats the
number 123456789 as &quot;12,34,56,789&quot;.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The pad specifier padSpec may appear before the prefix, after the
prefix, before the suffix, after the suffix, or not at all.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>In place of '0', the digits '1' through '9' in the number or vpinteger
region may be used to indicate a rounding increment. </p>
<p class=MsoNormal>The term <em><span style='font-family:"Arial",sans-serif'>maximum
fraction digits</span></em> is the total number of '0' and '#' characters in
the <span class=SourceText>fraction</span> sub-pattern above.</p>
<p class=MsoNormal>The term <em><span style='font-family:"Arial",sans-serif'>minimum
fraction digits</span></em> is the total number of '0' characters (only) in the
<span class=SourceText>fraction</span> sub-pattern above.</p>
<p class=MsoNormal>The term <em><span style='font-family:"Arial",sans-serif'>maximum
integer digits</span></em> is a limit that is implementation-dependent but MUST
be at least 20 (which is the number of digits in a base 10 unsigned long).<a
href="#_ftn42" name="_ftnref42" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[42]</span></span></span></a></p>
<p class=MsoNormal>The term <em><span style='font-family:"Arial",sans-serif'>minimum
integer digits</span></em> is the total number of '0' characters (only) in the <span
class=SourceText>integer</span> sub-pattern above.</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>A pattern with a V symbol must not have # symbols to the
right of the V symbol.</li>
<li class=MsoNormal>A pattern with P symbols at the left end must not have #
symbols . </li>
<li class=MsoNormal>A pattern with P symbols at the right end can have #
symbols.</li>
<li class=MsoNormal>A pattern with a V symbol must not have @ or * symbols.</li>
<li class=MsoNormal>A pattern with P symbols must not have @ or E or *
symbols.</li>
</ul>
<p class=MsoNormal><b>Parsing</b></p>
<p class=MsoNormal>During parsing, grouping separators are removed from the data.</p>
<p class=MsoNormal><b>Unparsing</b></p>
<p class=MsoNormal>Unparsing is guided by several parameters all of which can
be specified using a pattern. The following description applies to formats that
do not use scientific notation.</p>
<p class=MsoNormal>If the number of actual integer digits exceeds the <em><span
style='font-family:"Arial",sans-serif'>maximum integer digits</span></em>, then
only the least significant digits are output. For example, 1997 is formatted as
&quot;97&quot; if the maximum integer digits are 2.</p>
<p class=MsoNormal>If the number of actual integer digits is less than the <em><span
style='font-family:"Arial",sans-serif'>minimum integer digits</span></em>, then
leading zeros are added. For example, 1997 is formatted as &quot;01997&quot; if
the minimum integer digits are 5.</p>
<p class=MsoNormal>If the number of actual fraction digits exceeds the <em><span
style='font-family:"Arial",sans-serif'>maximum fraction digits</span></em>,
then half-even rounding is performed to the maximum fraction digits. For
example, 0.125 is formatted as &quot;0.12&quot; if the maximum fraction digits are
2. This behavior can be changed by specifying a rounding increment and a
rounding mode.</p>
<p class=MsoNormal>If the number of actual fraction digits is less than the <em><span
style='font-family:"Arial",sans-serif'>minimum fraction digits</span></em>,
then trailing zeros are added. For example, 0.125 is formatted as
&quot;0.1250&quot; if the minimum fraction digits are 4.</p>
<p class=MsoNormal>Trailing fractional zeros are not output if they occur <em><span
style='font-family:"Arial",sans-serif'>j</span></em> positions after the
decimal, where <em><span style='font-family:"Arial",sans-serif'>j</span></em>
is less than the maximum fraction digits. For example, 0.10004 is formatted as
&quot;0.1&quot; if the maximum fraction digits are four or less.</p>
<p class=MsoNormal><b>Special Values</b></p>
<p class=MsoNormal>NaN is represented as a string determined by the dfdl:textStandardNaNRep
property. This is the only value for which the prefixes and suffixes are not
used.</p>
<p class=MsoNormal>Infinity is represented as a string with the positive or
negative prefixes and suffixes applied. The infinity string is determined by
the dfdl:textStandardInfinityRep property.</p>
<p class=MsoNormal><a name=sci></a><b>Scientific Notation</b></p>
<p class=MsoNormal>Numbers in scientific notation are expressed as the product
of a mantissa and a power of ten, for example, 1234 can be expressed as 1.234 x
10<sup>3</sup>. The mantissa is typically in the half-open interval [1.0, 10.0)
or sometimes [0.0, 1.0), but it need not be. In a pattern, the exponent
character immediately followed by one or more digit characters indicates
scientific notation. Example: &quot;0.###E0&quot; formats the number 1234 as
&quot;1.234E3&quot;.</p>
<p class=MsoNormal>The number of digit characters after the exponent character
gives the minimum exponent digit count. There is no maximum. Negative exponents
are formatted using the&nbsp; minus sign, <em><span style='font-family:"Arial",sans-serif'>not</span></em>
the prefix and suffix from the pattern. This allows patterns such as
&quot;0.###E0 m/s&quot;. To prefix positive exponents with a&nbsp; plus sign,
specify '+' between the exponent and the digits: &quot;0.###E+0&quot; produces data
like &quot;1E+1&quot;, &quot;1E+0&quot;, &quot;1E-1&quot;, etc. </p>
<p class=MsoNormal>The minimum number of integer digits is achieved by
adjusting the exponent. Example: 0.00123 formatted with &quot;00.###E0&quot;
yields &quot;12.3E-4&quot;. This only happens if there is no maximum number of
integer digits. If there is a maximum, then the minimum number of integer
digits is fixed at one.</p>
<p class=MsoNormal>The maximum number of integer digits, if present, specifies
the exponent grouping. The most common use of this is to generate <em><span
style='font-family:"Arial",sans-serif'>engineering notation</span></em>, in
which the exponent is a multiple of three, e.g., &quot;##0.###E0&quot;. The
number 12345 is formatted using &quot;##0.####E0&quot; as &quot;12.345E3&quot;.</p>
<p class=MsoNormal>When using scientific notation, the formatter controls the
digit counts using significant digits logic. The maximum number of significant
digits limits the total number of integer and fraction digits that are shown in
the mantissa; it does not affect parsing. For example, 12345 formatted with
&quot;##0.##E0&quot; is &quot;12.3E3&quot;. .</p>
<p class=MsoNormal>Exponential patterns must not contain grouping separators. </p>
<p class=MsoNormal><b>Significant Digits</b></p>
<p class=MsoNormal>The '@' pattern character can be used with the '#' to
control how many integer and fraction digits are needed to display the
specified number of significant digits. The '@' only affects unparsing
behavior. Examples:</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Pattern </b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Minimum significant digits </span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Maximum significant digits </span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Number </span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Formatted Output </span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>@@@ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>12345 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>12300 </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>@@@ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0.12345 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0.123 </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>@@## </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>4 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3.14159 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3.142 </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>@@## </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>4 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1.23004 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>1.23 </p>
</td>
</tr>
</table>
<p class=MsoCaption><span style='color:black'>Table </span>34
Significant Digits '@' Symbol in the dfdl:textNumberPattern Property</p>
<p class=MsoNormal>Significant digit counts may be expressed using patterns
that specify a minimum and maximum number of significant digits. These are
indicated by the '@' and '#' characters. The minimum number of significant
digits is the number of '@' characters. The maximum number of significant
digits is the number of '@' characters plus the number of '#' characters
following on the right. For example, the pattern &quot;@@@&quot; indicates
exactly 3 significant digits. The pattern &quot;@##&quot; indicates from 1 to 3
significant digits. Trailing zero digits to the right of the decimal separator
are suppressed after the minimum number of significant digits have been shown.
For example, the pattern &quot;@##&quot; formats the number 0.1203 as &quot;0.12&quot;.</p>
<p class=MsoNormal>If a pattern uses significant digits, it must not contain a
decimal separator, nor the '0' pattern character. Patterns such as &quot;@00&quot;
or &quot;@.###&quot; are disallowed.</p>
<p class=MsoNormal>Any number of '#' characters may be prepended to the left of
the leftmost '@' character. These have no effect on the minimum and maximum significant
digits counts but may be used to position grouping separators. For example, &quot;#,#@#&quot;
indicates a minimum of one significant digit, a maximum of two significant
digits, and a grouping size of three.</p>
<p class=MsoNormal>The number of significant digits has no effect on parsing.</p>
<p class=MsoNormal>Significant digits may be used together with exponential
notation.&nbsp; For example, the pattern &quot;@@###E0&quot; is equivalent to &quot;0.0###E0&quot;.</p>
<p class=MsoNormal>The '@' pattern character can be used only in 'standard'
textNumberRep (not 'zoned') and excludes the 'P' and 'V' pattern characters. It
is a Schema Definition Error if the '@' pattern character appears in 'zoned'
textNumberRep, or in conjunction with the 'P' or 'V' pattern characters.</p>
<p class=MsoNormal><b>Padding</b></p>
<p class=MsoNormal>Padding may be specified through the pattern syntax. In a
pattern the pad escape character, followed by a single pad character, causes
padding to be parsed and formatted. The pad escape character is '*'. For
example, &quot;*x#,##0.00&quot; formats 123 to &quot;xx123.00&quot;, and 1234
to &quot;1,234.00&quot;.</p>
<p class=MsoNormal>When padding is in effect, the width of the positive
subpattern, including prefix and suffix, determines the format width. For
example, in the pattern &quot;* #0 o''clock&quot;, the format width is 10.</p>
<p class=MsoNormal>The width is counted in 16-bit code units.</p>
<p class=MsoNormal>Some parameters which usually do not matter have meaning
when padding is used, because the pattern width is significant with padding. In
the pattern &quot;* ##,##,#,##0.##&quot;, the format width is 14. The initial
characters &quot;##,##,&quot; do not affect the grouping size or maximum
integer digits, but they do affect the format width.</p>
<p class=MsoNormal>Padding may be inserted at one of four locations: before the
prefix, after the prefix, before the suffix, or after the suffix. If there is
no prefix, before the prefix and after the prefix are equivalent, likewise for
the suffix.</p>
<p class=MsoNormal>When specified in a pattern, the 32-bit codepoint
immediately following the pad escape is the pad character. This may be any
character, including a special pattern character. That is, the pad escape <em><span
style='font-family:"Arial",sans-serif'>escapes</span></em> the following
character. If there is no character after the pad escape, then the pattern is
illegal.</p>
<p class=MsoNormal>Note: Padding specified through the pattern syntax is
distinct from, and in addition to, padding specified using dfdl:textPadKind.</p>
<p class=MsoNormal><b>Rounding</b></p>
<p class=MsoNormal>How rounding is controlled is given by dfdl:textNumberRounding.&nbsp;
The rounding increment may be specified in the dfdl:textNumberPattern itself
using digits '1' through '9' or using an explicit increment in
dfdl:textNumberRoundingIncrement. For example, 1230 rounded to the nearest 50
is 1250. 1.234 rounded to the nearest 0.65 is 1.3. </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Rounding only affects the string produced by unparsing. It
does not affect parsing or change any numerical values.</li>
<li class=MsoNormal>In a pattern, digits '1' through '9' specify rounding, but
otherwise behave identically to digit '0'. For example, &quot;#,#50&quot;
specifies a rounding increment of 50. </li>
<li class=MsoNormal>Using digits in a pattern, rounding is always 'half even',
meaning rounds towards the nearest integer, or towards the nearest even
integer if equidistant.</li>
</ul>
<p class=MsoNormal>Using an explicit rounding increment, dfdl:textNumberRoundingMode
determines how values are rounded. </p>
<h4><span style='color:black;font-weight:normal'>13.6.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:textNumberPattern
for dfdl:textNumberRep 'zoned'</h4>
<p class=MsoNormal>When dfdl:textNumberRep is 'zoned' a subset of the number
pattern language described in Section <span
class=MsoHyperlink>13.6.1.1</span> <span
class=MsoHyperlink>dfdl:textNumberPattern for dfdl:textNumberRep 'standard'</span>
is used.</p>
<p class=MsoNormal>Only the pattern for positive numbers is used. It is a
Schema Definition Error if the negative pattern is specified.</p>
<p class=MsoNormal>In addition, only the following pattern characters may be
used:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>'+' must be present at the beginning or end of the pattern
to indicate whether the leading or trailing digit carries the overpunched
sign, if the logical type is signed </li>
</ul>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>&nbsp;'+' may be present at the beginning or end of the
pattern to indicate whether the leading or trailing digit carries the
overpunched sign, if the logical type is unsigned. If logical type is
unsigned and dfdl:textNumberPolicy 'lax' specified it is a Schema
Definition Error if no '+' is present.</li>
<li class=MsoNormal>&nbsp;'V' may be used&nbsp; to indicate the location of an
implied decimal point </li>
<li class=MsoNormal>'P' may be used&nbsp; to indicate the decimal&nbsp;
scaling</li>
<li class=MsoNormal>&nbsp;'0-9' indicates the number of needed digits
(including overpunched). </li>
<li class=MsoNormal>'#' indicates the number of optional digits.</li>
</ul>
<p class=MsoNormal>Rounding occurs as described under Rounding in <span class=MsoHyperlink>13.6.1.1</span> <span
class=MsoHyperlink>dfdl:textNumberPattern for dfdl:textNumberRep 'standard'</span></p>
<h3><a name="_Ref263169391"></a><a name="_Ref263169398"></a><a
name="_Toc349042755"></a><a name="_Toc62570167"><span style='color:black;
font-weight:normal'>13.6.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Converting logical numbers to/from text representation</a></h3>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Signed numbers with dfdl:textNumberRep 'standard' and
dfdl:textStandardBase 10 are mapped using the dfdl:textNumberPattern.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Signed numbers with dfdl:textNumberRep 'standard' and
dfdl:textStandardBase not 10 are mapped to an unsigned representation. On
unparsing the minimum number of characters to represent the digits is output
and it is a Processing Error if the value is negative.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Signed numbers with dfdl:textNumberRep 'zoned' are mapped using
the dfdl:textNumberPattern to indicate the position of the sign and virtual
decimal point. On parsing if the sign is not overpunched, that is it does not
have a sign, it is treated as positive. On unparsing the sign is always
overpunched.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Unsigned numbers with dfdl:textNumberRep 'standard' and
dfdl:textStandardBase 10&nbsp; are mapped using the dfdl:textNumberPattern. On
parsing it is a Processing Error if the data are negative.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Unsigned numbers with dfdl:textNumberRep 'standard' and
dfdl:textStandardBase not 10&nbsp; are mapped to an unsigned representation. On
unparsing the minimum number of characters to represent the digits is output.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Unsigned numbers with dfdl:textNumberRep 'zoned' are mapped using
the dfdl:textNumberPattern to indicate the position of the sign and virtual
decimal point. On parsing it is a Processing Error if the data are negative. On
unparsing the data are not overpunched with a sign.</p>
<b><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></b>
<h2><a name="_Toc177399102"></a><a name="_Toc175057389"></a><a
name="_Toc199516326"></a><a name="_Toc194983989"></a><a name="_Toc130873631"></a><a
name="_Toc140549603"></a><a name="_Toc243112833"></a><a name="_Ref251248830"></a><a
name="_Ref274819885"></a><a name="_Toc349042757"></a><a name="_Ref364444196"></a><a
name="_Ref364444201"></a><a name="_Ref38549327"></a><a name="_Ref38549335"></a><a
name="_Ref38551094"></a><a name="_Ref38551103"></a><a name="_Toc62570168"></a><a
name="_Toc322911345"></a><a name="_Toc322911660"></a><a name="_Toc322911908"></a><a
name="_Toc322912199"></a><a name="_Toc329093048"></a><a name="_Toc332701561"></a><a
name="_Toc332701865"></a><a name="_Toc332711659"></a><a name="_Toc332711967"></a><a
name="_Toc332712269"></a><a name="_Toc332724185"></a><a name="_Toc332724485"></a><a
name="_Toc341102781"></a><a name="_Toc347241516"></a><a name="_Toc347744709"></a><a
name="_Toc348984492"></a><a name="_Toc348984797"></a><a name="_Toc349037961"></a><a
name="_Toc349038263"></a><a name="_Toc349042756"></a><a name="_Toc349642170"></a><a
name="_Toc351912754"></a><a name="_Toc351914775"></a><a name="_Toc351915241"></a><a
name="_Toc361231298"></a><a name="_Toc361231824"></a><a name="_Toc362445122"></a><a
name="_Toc363909044"></a><a name="_Toc364463468"></a><a name="_Toc366078071"></a><a
name="_Toc366078690"></a><a name="_Toc366079675"></a><a name="_Toc366080287"></a><a
name="_Toc366080896"></a><a name="_Toc366505236"></a><a name="_Toc366508605"></a><a
name="_Toc366513106"></a><a name="_Toc366574295"></a><a name="_Toc366578088"></a><a
name="_Toc366578682"></a><a name="_Toc366579274"></a><a name="_Toc366579865"></a><a
name="_Toc366580457"></a><a name="_Toc366581048"></a><a name="_Toc366581640"></a>13.7<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties Specific to
Number with Binary Representation</h2>
<p class=MsoNormal>These properties are applicable to simple type xs:decimal
and its derived types which include all the signed and unsigned integer types.
These properties are not applicable to types xs:float and xs:double. See Section
<span class=MsoHyperlink>13.8</span>. Note that simple types derived from
xs:decimal do not imply base-10 representations in the data stream.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&nbsp;Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryNumberRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are&nbsp; 'packed', 'bcd', 'binary', 'ibm4690Packed'
</p>
<p class=MsoNormal>Allowable values for each number type are:</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Logical Type</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Permitted Value</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Decimal, Integer, NonNegativeInteger</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>packed, bcd, binary, ibm4690Packed</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Long, Int, Short, Byte,</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>packed, binary, ibm4690Packed (but not bcd)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>UnsignedLong, Unsignedint, UnsignedShort, UnsignedByte</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>packed, bcd, binary, ibm4690Packed</p>
</td>
</tr>
</table>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'packed' means represented as an IBM 390 packed decimal. Each
byte contains two decimal digits, except for the least significant byte,
which contains a sign in the least significant nibble.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'bcd' means represented as a binary coded decimal with two
digits per byte. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'binary' means represented as twos complement for signed types
and unsigned base-2 binary for unsigned types. </p>
<p class=MsoNormal>Note that the maximum allowed value for twos-complement
and unsigned base-2 binary integers is implementation-dependent but MUST be
at least that of a xs:long type, which is the equivalent of an 8 byte/64-bit
signed integer.</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'ibm4690Packed' is a variant of a packed decimal having the
following characteristics:</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:
-.25in'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Nibbles represent digits 0 - 9 in the usual BCD manner.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:
-.25in'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>A positive value is simply indicated by digits.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:
-.25in'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>A negative number is indicated by digits with the most
significant nibble being xD.</p>
<p class=MsoListParagraphCxSpLast style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>If a positive or negative value packs to an odd number of
nibbles, an extra xF nibble is added as the most significant nibble.</p>
<p class=MsoNormal>For all values, the dfdl:byteOrder property is used to
determine the numeric significance of the bytes making up the representation,
and the dfdl:bitOrder property is used to determine the numeric significance
of the bits within a byte.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType&nbsp; </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryDecimalVirtualPoint</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Integer.</p>
<p class=MsoNormal>Used when base simpleType is xs:decimal.</p>
<p class=MsoNormal>An integer that represents the position of an implied
decimal point within a number or specify 0. </p>
<p class=MsoNormal>If specified as 0 then there is no virtual decimal point</p>
<p class=MsoNormal>If specified as a positive integer, the position of the
decimal point is moved from the least-significant side of the number toward
the most-significant side of the number.&nbsp; For example, if 3 is specified
then, the integer value 1234 represents 1.234. This is equivalent to dividing
by 10<sup>3.</sup></p>
<p class=MsoNormal>If specified as a negative integer, the position of the
decimal point is moved from the least significant side of the number further
in the less-significant direction. For example, if specified as -3, the
integer value 1234 represents 1 234 000.This is equivalent to multiplying by
10<sup>3</sup>.</p>
<p class=MsoNormal>When unparsing, if the property value is not sufficient to
remove the decimal point from the Infoset value, it is a Processing Error.
This is true even if the resultant number can be converted into an integer
(that is, all digits after the decimal point are zero) because it is an
example of excess precision where no rounding is possible. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryPackedSignCodes</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of Characters</p>
<p class=MsoNormal>Used only when dfdl:binaryNumberRep or
dfdl:binaryCalendarRep is 'packed'</p>
<p class=MsoNormal>A whitespace separated string giving the hex sign nibbles
to use for a positive value, a negative value, an unsigned value, and zero.</p>
<p class=MsoNormal>Valid values for positive nibble: A, C, E, F</p>
<p class=MsoNormal>Valid values for negative nibble: B, D</p>
<p class=MsoNormal>Valid values for unsigned nibble: F</p>
<p class=MsoNormal>Valid values for zero sign: A C E F 0</p>
<p class=MsoNormal>Example: 'C D F C' &#8211; typical S/390 usage </p>
<p class=MsoNormal>Example: 'C D F 0' &#8211; handle special case for zero </p>
<p class=MsoNormal>On parsing, whether to accept all valid values for a
positive, negative or unsigned number, and for zero, is governed by the
dfdl:binaryNumberCheckPolicy property. On unparsing, the specified values are
always used. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryNumberCheckPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum </p>
<p class=MsoNormal>Values are 'strict' and 'lax'. </p>
<p class=MsoNormal>Indicates how lenient to be when parsing binary numbers. </p>
<p class=MsoNormal>If 'lax' then the parser tolerates all valid alternatives
where such alternatives exist. Specifically, for dfdl:binaryNumberRep
'packed' the sign nibble for positive, negative, unsigned and zero can be any
of the valid respective values. </p>
<p class=MsoNormal>On unparsing, the specified value is always used</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 35 Properties Specific to Number with Binary
Representation</p>
<h3><a name="_Ref216517198"></a><a name="_Toc243112834"></a><a
name="_Toc349042758"></a><a name="_Ref365060856"></a><a name="_Ref365060860"></a><a
name="_Toc62570169"></a><a name="_Ref263169411"></a><a name="_Ref263169417"><span
style='color:black;font-weight:normal'>13.7.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Converting Logical Numbers to/from Binary </a>Representation</h3>
<p class=MsoNormal>When unparsing a binary number (packed decimal or
twos-complement) and excess precision is supplied in the Infoset no rounding
occurs. It is a Processing Error.</p>
<h4><a name="_Ref364448330"><span style='color:black;font-weight:normal'>13.7.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Converting
Base-2 Binary Numbers</a></h4>
<p class=MsoNormal>For both parsing and unparsing, the bit string that
represents the content region for a base-2 binary number is converted to/from
an Infoset value by a calculation that involves the length and the
dfdl:byteOrder and dfdl:bitOrder properties.</p>
<p class=MsoNormal>When parsing, DFDL specifies how an unsigned integer of
unbounded magnitude is computed from a bit string based on its length, and the
dfdl:byteOrder and dfdl:bitOrder properties. For signed types, this unbounded
integer is converted into a signed value by way of the well-known
twos-complement scheme, and for the xs:decimal type, the
dfdl:binaryDecimalVirtualPoint property can be used to convert this integer
into a decimal value with an integer and a fractional component.</p>
<p class=MsoNormal>A DFDL implementation can use any conversion technique
consistent with this description. </p>
<h4><span style='color:black;font-weight:normal'>13.7.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Bit
strings, Alignment, and dfdl:fillByte</h4>
<p class=MsoNormal>The dfdl:alignmentUnits of 'bits', and dfdl:alignment of '1'
can be used to position a bit string anywhere in the data stream without regard
for any other grouping of bits into bytes.&nbsp;</p>
<p class=MsoNormal>The numeric value of the unsigned integer represented by a
bit string is unaffected by alignment.&nbsp;</p>
<p class=MsoNormal>When unparsing a bit string, alignment may cause the bits
within the bit string to occupy only some of the bits within a byte of the data
stream. The bits of data in the alignment fill region are unspecified by the
elements of the DFDL schema, and when parsing, neither they, nor any data
computed from them are put into the DFDL Infoset. During unparsing, such
unspecified bits are filled in using the value of the dfdl:fillByte property.
Corresponding bits from the dfdl:fillByte value are used to fill in unspecified
bits of the data stream. That is, if bit K (K is 1 or greater, but less than or
equal to 8) of a data stream byte is unspecified, its value is taken from bit K
of the dfdl:fillByte property value.&nbsp;</p>
<p class=MsoNormal>Since the value of any bit string element is unaffected by
alignment, the logical unsigned integer value for a bit-string is always
computed as if the first bit were at position 1 of the bit stream. If the
dfdl:length for the bit-string evaluates to M, then the bit-string conceptually
occupies bits 1 to M of a data stream for purposes of computing its value.</p>
<h4><span style='color:black;font-weight:normal'>13.7.1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Bits
within Bit Strings of Length &lt;= 8</h4>
<p class=MsoNormal>Any time the length in bits,<i> M</i>, &nbsp;is <i>&lt; 8</i>,
then when set, the bit at position <i>Z</i>, starting from the most-significant
bit, (typically written on the left) supplies value <i>2^(M-Z)</i>, and the
value of the bit string as an integer is the sum of these values for each of
its bits.&nbsp;</p>
<h4><a name="_Ref390341590"><span style='color:black;font-weight:normal'>13.7.1.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Bits
within Bit Strings of Length &gt; 8</a></h4>
<p class=MsoNormal>Call <i>M</i> the length of the bit string element in bits.
In general, when <i>M &gt; 8</i> the contribution of a bit in position <i>i</i>
to the numeric value of a bit string is given by a formula specific to the
dfdl:byteOrder.</p>
<p class=MsoNormal>For dfdl:byteOrder of 'bigEndian'&nbsp;the value of bit <i>i</i>
is given by <i>2^(M - i)</i>, where <i>i = 1</i> is the index of the
most-significant bit.</p>
<p class=MsoNormal>For dfdl:byteOrder of 'littleEndian' the value of bit i is
given by a more complex formula. The following pseudo code computes the value
of a bit in a littleEndian bit string. It is just a very big expression but is
spread out over many local variables to illustrate the various sub-calculations
clearly. DFDL implementations MAY use any way of converting bit strings to the
corresponding integer values that is consistent with this:</p>
<p class=MsoNormal>In the pseudo code below:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'%' is modular division (division where remainder is returned)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'/' is regular division (quotient is returned)</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>the expression 'a ? b : c' means 'if a is true, then the value is
b, otherwise the value is c'</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp;littleEndianBitValue(bitPosition,
bitStringLength) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>assert</b>
bitPosition &gt;= 1;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>assert</b>
bitStringLength &gt;= 1;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>assert</b>
bitStringLength &gt;= bitPosition;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
numBitsInFinalPartialByte = bitStringLength % 8;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
numBitsInWholeBytes = bitStringLength - </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
numBitsInFinalPartialByte;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bitPosInByte = ((bitPosition - 1) % 8) + 1;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
widthOfActiveBitsInByte = (bitPosition &lt;= numBitsInWholeBytes) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
? 8 : numBitsInFinalPartialByte;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; placeValueExponentOfBitInByte
= widthOfActiveBitsInByte &#8211; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bitPosInByte;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bitValueInByte = 2^placeValueExponentOfBitInByte;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
byteNumZeroBased = (bitPosition - 1)/8;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
scaleFactorForBytePosition = 2^(8 * byteNumZeroBased);</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bitValue = bitValueInByte * scaleFactorForBytePosition;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>return</b>
bitValue;</span></p>
</div>
<p class=MsoCaption>Figure 5&nbsp; Little Endian bit position and value</p>
<h5>13.7.1.4.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Examples
of Unsigned Integer Conversion</h5>
<p class=MsoNormal>Consider the first three bytes of the data stream. Imagine
their numeric values as 0x5A 0x92 0x00. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Positions:<br>
00000000 01111111 11122222<br>
12345678 90123456 78901234<br>
Bits:<br>
01011010 10010010 00000000</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Hex
values<br>
&nbsp;&nbsp; 5 &nbsp; A &nbsp; &nbsp;9 &nbsp; 2 &nbsp; &nbsp;0 &nbsp; 0 </span></span></p>
</div>
<p class=MsoNormal>Beginning at bit position 1, (the very first bit)
considering the first two bytes as a bigEndian short, the value is
0x5A92.&nbsp; </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;xs:element name=&quot;num&quot;
type=&quot;unsignedShort&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignment=&quot;1&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignmentUnits=&quot;bytes&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:byteOrder=&quot;bigEndian&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:bitOrder=&quot;mostSignificantBitFirst&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:binaryNumberRep=&quot;binary&quot;/&gt;</span></p>
</div>
<p class=MsoNormal>As a littleEndian short, the value is 0x925A.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;xs:element name=&quot;num&quot;
type=&quot;unsignedShort&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignment=&quot;1&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignmentUnits=&quot;bytes&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dfdl:byteOrder=&quot;littleEndian&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:bitOrder=&quot;mostSignificantBitFirst&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:binaryNumberRep=&quot;binary&quot;</span><span style='color:black'>/&gt;</span></p>
</div>
<p class=MsoNormal>Examining a bit string of length 13, beginning at position 2:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;xs:element name=&quot;ignored&quot;
type=&quot;unsignedByte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignment=&quot;1&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignmentUnits=&quot;bits&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:lengthUnits=&quot;bits&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:length=&quot;1&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:binaryNumberRep=&quot;binary&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&lt;xs:element name=&quot;x&quot;
type=&quot;unsignedShort&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignment=&quot;1&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:alignmentUnits=&quot;bits&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:byteOrder=&quot;bigEndian&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:bitOrder=&quot;mostSignificantBitFirst&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:lengthUnits=&quot;bits&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:length=&quot;13&quot;&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &nbsp; &nbsp;
&nbsp;dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:binaryNumberRep=&quot;binary&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;</span><span lang=EN-GB style='color:black'>/</span><span
lang=EN-GB style='color:black'>xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>One can examine the same data stream and consider the bit
positions that make up element 'x', which are the bits at positions 2 through
14 inclusive.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Positions:<br>
00000000 01111111 11122222<br>
12345678 90123456 78901234<br>
Bits:<br>
&nbsp;1011010 100100 </span></span></p>
</div>
<p class=MsoNormal>Since alignment does not affect logical value, one obtains
the same logical value as if the bits were realigned. That is, the value is the
same as if the bits of the element's representation began with bit position 1.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Realigned
Positions:<br>
00000000 01111111 11122222<br>
12345678 90123456 78901234<br>
Bits:<br>
10110101 00100</span></span></p>
</div>
<p class=MsoNormal>The DFDL schema fragment above gives element 'x' the
dfdl:byteOrder 'bigEndian' property and the dfdl:bitOrder
'mostSignificantBitFirst' property. In this case the place value of each
position is given by <i>2<sup>(M &#8211; i)</sup></i>. Below the bit values are
lined up underneath their place-values.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Place
value of bits</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>...11110
00000000<br>
...21098 76543210</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Bit
values</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>...10110
10100100<br>
Hex values<br>
&nbsp;&nbsp; 1 &nbsp; 6 &nbsp; &nbsp;A &nbsp; 4</span></span></p>
</div>
<p class=MsoNormal>The value of element 'x' is 0x16A4. Notice how it is the most-significant
byte -- which is the first byte when big endian -- that becomes the partial
byte (having fewer than 8 bits) in the case where the length of the bit string
is not a multiple of 8 bits.&nbsp;</p>
<p class=MsoNormal>For dfdl:byteOrder of 'littleEndian'. The place values of
the individual bits are not as easily visualized. However there is still a
basic formula (given in the pseudo code in Section <span
class=MsoHyperlink>13.7.1.4</span> Bits
within Bit Strings of Length &gt; 8) and value.</p>
<p class=MsoNormal>Looking again at our realigned positions:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Realigned
Positions:<br>
00000000 01111111 11122222<br>
12345678 90123456 78901234<br>
Bits:<br>
10110101 00100</span></span></p>
</div>
<p class=MsoNormal>The place values of each of these bits, for little endian
byte order can be seen to be:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>PlaceValue
positions </span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>00000000
...11100<br>
76543210 ...21098</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>Bit
values</span></span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
class=CodeCharacter><span lang=EN-GB style='font-size:10.0pt;color:black'>10110101
...00100<br>
Hex values<br>
&nbsp;&nbsp; B &nbsp; 5 &nbsp; &nbsp;0 &nbsp; 4 &nbsp;&nbsp;</span></span></p>
</div>
<p class=MsoNormal>One must reorder the bytes for little endian byte order. The
value of element 'x' is 0x04B5. In little endian form, the first 8 bits make up
the first byte, and that contains the least-significant byte of the logical
numeric unsignedShort value. The additional bits of the partial byte are once
again the most significant byte; however, for little endian form, this is the
second byte. The second byte contains only 5 bits, and they are the most
significant bits within that byte, but they are treated as if shifted to become
the least significant 5 bits of a logical byte that contributes to the integer
value. This logical byte makes up the most-significant byte of the
unsignedShort integer.</p>
<p class=MsoNormal style='margin-top:12.0pt'>Now examine the 13 bits beginning
at position 2, in the context where dfdl:byteOrder is 'littleEndian' and
dfdl:bitOrder is 'leastSignificantBitFirst' and dfdl:binaryNumberRep is
'binary'.</p>
<p class=MsoNormal>In this case, the bit positions are assigned differently.
Below the bytes are shown left-to-right:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Positions:<br>
00000000 11111110 22222111<br>
87654321 65432109 43210987<br>
Bits:<br>
<span style='background:yellow'>0101101</span>0 10<span style='background:yellow'>010010</span>
00000000</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Hex values<br>
&nbsp;&nbsp; 5&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; 0</span></p>
</div>
<p class=MsoNormal>The bits of interest are highlighted above. Redisplaying
this same data, but reversing the order of the bytes to right-to-left, then one
gets:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Positions:<br>
22222111 11111110 00000000<br>
43210987 65432109 87654321<br>
Bits:<br>
00000000 10<span style='background:yellow'>010010</span> <span
style='background:yellow'>0101101</span>0</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>Hex values<br>
&nbsp;&nbsp; 0&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;
2&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp; A</span></p>
</div>
<p class=MsoNormal>The above shows more clearly the contiguous region of bits
containing: </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>0 1001 0010 1101</span></p>
</div>
<p class=MsoNormal>or the value 0x092D.</p>
<h4><span style='color:black;font-weight:normal'>13.7.1.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Converting
Packed Decimal Numbers</h4>
<p class=MsoNormal>Signed numbers with dfdl:binaryNumberRep 'packed' are parsed
using a nibble to indicate the sign. The unsigned nibble is treated as positive.
On unparsing the sign nibble is written according to dfdl:binaryPackedSignCodes.
The unsigned nibble is never written.</p>
<p class=MsoNormal>Signed numbers with dfdl:binaryNumberRep 'bcd' are always
positive. On unparsing it is a Processing Error if the Infoset data is
negative.</p>
<p class=MsoNormal>Signed numbers with dfdl:binaryNumberRep 'ibm4690Packed' are
parsed using the sign nibble to identify negative values. There is no sign
nibble for positive values. On unparsing the nibble 0xD is written for negative
values.</p>
<p class=MsoNormal>Unsigned numbers with dfdl:binaryNumberRep 'packed' are
parsed if the nibble is positive or unsigned. It is a Processing Error if the
data is negative. On unparsing the unsigned nibble is used.</p>
<p class=MsoNormal>Unsigned numbers with dfdl:binaryNumberRep 'bcd' are readily
parsed as BCD data is always positive.</p>
<p class=MsoNormal>Unsigned numbers with dfdl:binaryNumberRep 'ibm4690Packed'
are parsed if there is no sign nibble of 0xD to identify a negative value. It
is a Processing Error if the data is negative. On unparsing no sign nibble is
written.</p>
<b><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></b>
<h2><a name="_Toc349042759"></a><a name="_Ref365053464"></a><a
name="_Ref365053468"></a><a name="_Toc62570170"></a><a name="_Ref251331995"></a><a
name="_Ref251332000"></a><a name="_Toc366078074"></a><a name="_Toc366078693"></a><a
name="_Toc366079678"></a><a name="_Toc366080290"></a><a name="_Toc366080899"></a><a
name="_Toc366505239"></a><a name="_Toc366508608"></a><a name="_Toc366513109"></a><a
name="_Toc366574298"></a><a name="_Toc366578091"></a><a name="_Toc366578685"></a><a
name="_Toc366579277"></a><a name="_Toc366579868"></a><a name="_Toc366580460"></a><a
name="_Toc366581051"></a><a name="_Toc366581643"></a><a
name="_Properties_Specific_to"></a>13.8<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Specific to Float/Double with Binary Representation</h2>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryFloatRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum or DFDL Expression</p>
<p class=MsoNormal>This specifies the encoding method for the float and
double.&nbsp; </p>
<p class=MsoNormal>Valid values are 'ieee', 'ibm390Hex',This property can be
computed by way of an expression which returns a string of 'ieee' or '
ibm390Hex' . The expression must not contain forward references to elements
which have not yet been processed.</p>
<p class=MsoNormal>The enumeration value 'ieee' refers to the IEEE 754-1985
specification.</p>
<p class=MsoNormal>For both 'ieee' and 'ibm390hex', an xs:float must have a
physical length of 4 bytes. It is a Schema Definition Error if there is a
specified length not equivalent to 4 bytes.</p>
<p class=MsoNormal>Similarly, for both 'ieee' and 'ibm390hex', an xs:double
must have a physical length of 8 bytes. It is a Schema Definition Error if
there is a specified length not equivalent to 8 bytes.</p>
<p class=MsoNormal>The dfdl:byteOrder property is used to construct a value
from the bytes in the binary representation. </p>
<p class=MsoNormal>Note: The DFDL Infoset float and double data types match
the precision of the IEEE specification. There<span style='color:black'> </span><span
style='color:black'>may</span><span style='color:black'> </span><span
style='color:black'>be</span><span style='color:black'> </span><span
style='color:black'>precision/rounding</span><span style='color:black'> </span><span
style='color:black'>issues</span><span style='color:black'> </span><span
style='color:black'>when</span><span style='color:black'> </span><span
style='color:black'>converting</span><span style='color:black'> </span><span
style='color:black'>IBM</span><span style='color:black'> </span><span
style='color:black'>float/double</span><span style='color:black'> </span><span
style='color:black'>to/from</span><span style='color:black'> the DFDL Infoset
</span><span style='color:black'>float/double</span><span style='color:black'>
</span><span style='color:black'>types.</span></p>
<p class=MsoNormal><span style='color:black'>Half-precision</span><span
style='color:black'> </span><span style='color:black'>IEEE</span><span
style='color:black'> </span><span style='color:black'>and</span><span
style='color:black'> </span><span style='color:black'>quad-precision</span><span
style='color:black'> </span><span style='color:black'>IEEE/IBM</span><span
style='color:black'> </span><span style='color:black'>are</span><span
style='color:black'> </span><span style='color:black'>not</span><span
style='color:black'> </span><span style='color:black'>supported.</span><a
href="#_ftn43" name="_ftnref43" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[43]</span></span></span></a></p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType &nbsp;</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 36 Properties Specific to Float/Double with Binary
Representation</p>
<h2><a name="_Toc243112835"></a><a name="_Toc349042760"></a><a
name="_Ref364442129"></a><a name="_Ref364442135"></a><a name="_Toc62570171">13.9<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties Specific </a>to
Boolean with Text Representation</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textBooleanTrueRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals or DFDL Expression</p>
<p class=MsoNormal>A whitespace separated list of representations to be used
for 'true'. These are compared after trimming when parsing, and before
padding when unparsing.</p>
<p class=MsoNormal>If dfdl:lengthKind is 'explicit' or 'implicit' and either
dfdl:textPadKind or dfdl:textTrimKind&nbsp; is 'none' then both
dfdl:textBooleanTrueRep and dfdl:textBooleanFalseRep must have the same length
else it is a Schema Definition Error.</p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a string of whitespace separated list of values. The expression
must not contain forward references to elements which have not yet been
processed.</p>
<p class=MsoNormal>On unparsing the first value is used</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Text
Boolean Character Restrictions:</span></em> The string literal is restricted
to allow only certain kinds of DFDL String Literal syntax:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL character entities are allowed</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The DFDL byte value entity ( %#rXX; ) is not allowed.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character classes&nbsp; NL, WSP, WSP+, WSP*, and ES are not
allowed</p>
<p class=MsoNormal>It is a Schema Definition Error if the string literal <span
class=InternetLink>is the empty string or </span>contains any of the
disallowed constructs.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textBooleanFalseRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals or DFDL Expression</p>
<p class=MsoNormal>A whitespace separated list of representations to be used
for 'false' These are compared after trimming when parsing, and before
padding when unparsing.&nbsp; </p>
<p class=MsoNormal>If dfdl:lengthKind is 'explicit' or 'implicit' and either
dfdl:textPadKind or dfdl:textTrimKind&nbsp; is 'none' then both
dfdl:textBooleanTrueRep and dfdl:textBooleanFalseRep must have the same length
else it is a Schema Definition Error.</p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a string of whitespace separated list of values. The expression
must not contain forward references to elements which have not yet been
processed.</p>
<p class=MsoNormal>On unparsing the first value is used</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Text Boolean Character Restrictions&quot; in the
description of the dfdl:textBooleanTrueRep property.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textBooleanJustification</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'left', 'right',&nbsp; 'center'</p>
<p class=MsoNormal>Controls how the data is padded or trimmed on parsing and
unparsing.</p>
<p class=MsoNormal>Behavior as for dfdl:textStringJustification.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textBooleanPadCharacter</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>The value that is used when padding or trimming boolean
elements. The value can be a single character or a single byte.<br>
If a character, then it can be specified using a literal character or using
DFDL entities. </p>
<p class=MsoNormal>If a byte, then it must be specified using a single byte
value entity.</p>
<p class=MsoNormal>If a pad character is specified when lengthUnits is 'bytes'
then the pad character must be a single-byte character. </p>
<p class=MsoNormal>If a pad byte is specified when lengthUnits is
'characters' then</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>the dfdl:encoding must be a fixed-width encoding</li>
<li class=MsoNormal>padding and trimming must be applied using a sequence of
N pad bytes, where N is the width of a character in the fixed-width
encoding.</li>
</ul>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Pad Character Restrictions&quot; in the description of the
dfdl:textStringPadCharacter property.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 37 Properties Specific to Boolean with Text
Representation</p>
<h2><a name="_Toc349042763"></a><a name="_Ref364442791"></a><a
name="_Ref364442803"></a><a name="_Toc62570172"></a><a name="_Toc322911351"></a><a
name="_Toc322911913"></a><a name="_Toc322912204"></a><a name="_Toc329093053"></a><a
name="_Toc332701566"></a><a name="_Toc332701870"></a><a name="_Toc332711664"></a><a
name="_Toc332711972"></a><a name="_Toc332712274"></a><a name="_Toc332724190"></a><a
name="_Toc332724490"></a><a name="_Toc341102786"></a><a name="_Toc347241521"></a><a
name="_Toc347744714"></a><a name="_Toc348984497"></a><a name="_Toc348984802"></a><a
name="_Toc349037966"></a><a name="_Toc349038268"></a><a name="_Toc349042761"></a><a
name="_Toc349642175"></a><a name="_Toc351912759"></a><a name="_Toc351914780"></a><a
name="_Toc351915246"></a><a name="_Toc361231303"></a><a name="_Toc361231829"></a><a
name="_Toc362445127"></a><a name="_Toc363909049"></a><a name="_Toc364463473"></a><a
name="_Toc366078077"></a><a name="_Toc366078696"></a><a name="_Toc366079681"></a><a
name="_Toc366080293"></a><a name="_Toc366080902"></a><a name="_Toc366505242"></a><a
name="_Toc366508611"></a><a name="_Toc366513112"></a><a name="_Toc366574301"></a><a
name="_Toc366578094"></a><a name="_Toc366578688"></a><a name="_Toc366579280"></a><a
name="_Toc366579871"></a><a name="_Toc366580463"></a><a name="_Toc366581054"></a><a
name="_Toc366581646"></a><a name="_Toc322912205"></a><a name="_Toc329093054"></a><a
name="_Toc332701567"></a><a name="_Toc332701871"></a><a name="_Toc332711665"></a><a
name="_Toc332711973"></a><a name="_Toc332712275"></a><a name="_Toc332724191"></a><a
name="_Toc332724491"></a><a name="_Toc341102787"></a><a name="_Toc347241522"></a><a
name="_Toc347744715"></a><a name="_Toc348984498"></a><a name="_Toc348984803"></a><a
name="_Toc349037967"></a><a name="_Toc349038269"></a><a name="_Toc349042762"></a><a
name="_Toc351912760"></a><a name="_Toc351914781"></a><a name="_Toc351915247"></a><a
name="_Toc361231304"></a><a name="_Toc361231830"></a><a name="_Toc362445128"></a><a
name="_Toc363909050"></a><a name="_Toc364463474"></a><a name="_Toc366078078"></a><a
name="_Toc366078697"></a><a name="_Toc366079682"></a><a name="_Toc366080294"></a><a
name="_Toc366080903"></a><a name="_Toc366505243"></a><a name="_Toc366508612"></a><a
name="_Toc366513113"></a><a name="_Toc366574302"></a><a name="_Toc366578095"></a><a
name="_Toc366578689"></a><a name="_Toc366579281"></a><a name="_Toc366579872"></a><a
name="_Toc366580464"></a><a name="_Toc366581055"></a><a name="_Toc366581647"></a>13.10<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties Specific to
Boolean with Binary Representation</h2>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryBooleanTrueRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>This value, treated as a binary xs:unsignedInt (See
Section <span
class=MsoHyperlink>13.7.1</span> <span
class=MsoHyperlink>Converting Logical Numbers to/from Binary Representation</span>
), gives the representation to be used for 'true' </p>
<p class=MsoNormal>If this property value is the empty string, when parsing
it means dfdl:binaryBooleanTrueRep is any value other than
dfdl:binaryBooleanFalseRep; when unparsing, the one's complement of the
dfdl:binaryBooleanFalseRep is used.</p>
<p class=MsoNormal>The length of the data value of the element must be
between 1 bit and 32 bits (4 bytes) as described in Section <span class=MsoHyperlink>12.3.7.2</span>. It is a Schema Definition Error if the value
(when provided) of dfdl:binaryBooleanTrueRep cannot fit as an unsigned binary
integer in the specified length.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryBooleanFalseRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>This value, treated as a binary xs:unsignedInt (See Section
<span class=MsoHyperlink>13.7.1</span> <span
class=MsoHyperlink>Converting Logical Numbers to/from Binary Representation</span>
),&nbsp; gives the representation to be used for 'false' </p>
<p class=MsoNormal>The length of the data value of the element must be
between 1 bit and 32 bits (4 bytes) as described in Section <span class=MsoHyperlink>12.3.7.2</span>. It is a Schema Definition Error if the value
of dfdl:binaryBooleanFalseRep cannot fit as an unsigned binary integer in the
specified length.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc199516329"></a><a name="_Toc194983992"></a><a
name="_Toc130873634"></a><a name="_Toc140549606"></a><a name="_Toc177399105"></a><a
name="_Toc175057392">Table </a>38 Properties Specific to Boolean with Binary
Representation</p>
<h2><a name="_Toc349042764"></a><a name="_Toc62570173"></a><a
name="_Ref229814365"></a><a name="_Ref229814405"></a><a name="_Toc243112838">13.11<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties Specific to
Calendar with Text or Binary Representatio</a>n</h2>
<p class=nobreak>The properties describe how a calendar (that is, date/time
data) &nbsp;is to be interpreted including an unparsing pattern property plus
properties that qualify the pattern.</p>
<p class=MsoNormal>These properties can be used when a calendar has dfdl:representation
'text' or dfdl:representation 'binary' and a packed decimal representation.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarPattern</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String </p>
<p class=MsoNormal>Defines the ICU pattern that describes the format of the
calendar. The pattern defines where the year, month, day, hour, minute,
second, fractional second and time zone components appear. See
calendarPattern property section below.&nbsp;&nbsp;&nbsp; </p>
<p class=MsoNormal>When the dfdl<em><span style='font-family:"Arial",sans-serif'>:</span></em>representation
is <em><span style='font-family:"Arial",sans-serif'>'</span></em>binary<em><span
style='font-family:"Arial",sans-serif'>',</span></em> and the representation
is a packed decimal<em><span style='font-family:"Arial",sans-serif'> </span></em>then
the pattern can contain only characters and symbols that always result in the
presentation of digits.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarPatternKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'explicit', 'implicit'</p>
<p class=MsoNormal>'explicit' means the pattern is given by
dfdl:calendarPattern, </p>
<p class=MsoNormal>'implicit' means the pattern is derived from the XML
schema date/time type.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=220 valign=top style='width:165.2pt;border:solid windowtext 1.0pt;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Logical Type </span></b></p>
</td>
<td width=204 valign=top style='width:153.15pt;border:solid windowtext 1.0pt;
border-left:none;background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Default Pattern</span></b></p>
</td>
</tr>
<tr>
<td width=220 valign=top style='width:165.2pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:date</p>
</td>
<td width=204 valign=top style='width:153.15pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>yyyy-MM-dd</p>
</td>
</tr>
<tr>
<td width=220 valign=top style='width:165.2pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:dateTime</p>
</td>
<td width=204 valign=top style='width:153.15pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>yyyy-MM-dd'T'HH:mm:ss</p>
</td>
</tr>
<tr>
<td width=220 valign=top style='width:165.2pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:time</p>
</td>
<td width=204 valign=top style='width:153.15pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>HH:mm:ssZ</p>
</td>
</tr>
</table>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarCheckPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'strict', 'lax'</p>
<p class=MsoNormal>Indicates how lenient to be when parsing against the
pattern. </p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.11.2</span> The
dfdl:calendarCheckPolicy Property below for details of the specific behaviors
for 'strict' and 'lax'.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarTimeZone</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String</p>
<p class=MsoNormal>This property provides the time zone that is assumed if no
time zone explicitly occurs in the data. </p>
<p class=MsoNormal>Valid values specify a UTC time zone offset by matching
the regular expression: </p>
<p class=MsoNormal><span class=CodeCharacter>(UTC)([+\-]([01]\d|\d)((([:][0-5]\d){1,2})?))?</span><span
class=CodeCharacter> </span></p>
<p class=MsoNormal>In addition, empty string can be specified to indicate
&quot;no time zone&quot; which simply leaves the time zone
unknown/unspecified. Data which does not specify a time zone does not obtain
a time zone from this property and so simply lacks time zone information. </p>
<p class=MsoNormal>The IANA time zone format (also known as the Olson time
zone format) may also be used. (e.g., America/New_York)) See [<a
href="#a_IANATimeZone">IANATimeZone</a>].</p>
<p class=MsoNormal>Note that this property is used when parsing only. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarObserveDST</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>Whether the time zone given in dfdl:calendarTimeZone
observes daylight savings time.&nbsp;&nbsp; </p>
<p class=MsoNormal>Ignored if dfdl:calendarTimeZone is specified in UTC
format, or if dfdl:calendarTimeZone is empty string. That is, this property
is used only if the dfdl:calendarTimeZone is in IANA (also known as Olson)
format [<a href="#a_IANATimeZone">IANATimeZone</a>].</p>
<p class=MsoNormal>This property applies to parsing only. </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarFirstDayOfWeek</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'Monday' &#8230; 'Sunday'</p>
<p class=MsoNormal>The day of the week upon which a new week is considered to
start.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarDaysInFirstWeek</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>Valid values 1 to 7</p>
<p class=MsoNormal>Specify the number of days of the new year that must fall
within the first week. </p>
<p class=MsoNormal>The start of a year usually falls in the middle of a week.
If the number of days in that week is less than the value specified here, the
week is considered to be the last week of the previous year; hence week 1
starts some days into the new year. Otherwise it is considered to be the
first week of the new year; hence week 1 starts some days before the new
year.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarCenturyStart</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-negative Integer</p>
<p class=MsoNormal>Valid values 0 to 99.</p>
<p class=MsoNormal>This property determines on parsing how two-digit years
are interpreted. It specifies the two digits that start a 100-year window
that contains the current year. For example, if 89 is specified, and the
current year is 2006, all two-digit dates are interpreted as being in the
range 1989 to 2088. A two-digit year less than 89 is interpreted as 20nn and
a two-digit year more than or equal to 89 is treated as 19nn.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>calendarLanguage</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>String or DFDL Expression</p>
<p class=MsoNormal>The language that is used when the pattern produces a
presentation in text such as for names of the months, and names of days of
the week. </p>
<p class=MsoNormal>The value must match the regular expression: </p>
<p class=MsoNormal><span class=CodeCharacter>([A-Za-z]{1,8}([\-_][A-Za-z0-9]{1,8})*)</span></p>
<p class=MsoNormal>It is a Schema Definition Error otherwise. </p>
<p class=MsoNormal>The expression must not contain forward references to
elements which have not yet been processed.</p>
<p class=MsoNormal style='text-autospace:none'>All DFDL Implementations MUST support
dfdl:calendarLanguage value &quot;en&quot;. </p>
<p class=MsoNormal style='text-autospace:none'>DFDL implementations MAY support
additional values, however, the value of the dfdl:calendarLanguage property
is always interpreted as a Unicode Language Identifier as defined by [<a
href="#a_LDML">LDML</a>], and [<a href="#a_CLDR">CLDR</a>].</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc142877208">Table </a>39
Properties specific to Calendar with Text or Binary Representation</p>
<h3><a name="_Toc243112839"></a><a name="_Toc349042765"></a><a
name="_Toc62570174"><span style='color:black;font-weight:normal'>13.11.1<span
style='font:7.0pt "Times New Roman"'>&nbsp; </span></span>The
dfdl:calendarPattern property</a></h3>
<p class=MsoNormal>The dfdl:calendarPattern describes how to parse and unparse
text and binary representations of dateTime, date and time logical types. The
pattern is primarily used on unparsing to define the format but is also used to
aid parsing.</p>
<p class=MsoNormal>The pattern is derived from the ICU SimpleDatetimeFormat
class described here: [<a href="#a_ICUDateTime">ICUDateTime</a>], which uses
symbols defined by [<a href="#a_LDML">LDML</a>].</p>
<p class=MsoNormal>An extension is the formatting symbol I which means accept a
subset of ISO 8601 [<a href="#a_ISO8601">ISO8601</a>] compliant calendars&nbsp;
</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b>Symbol</b></p>
</td>
<td width=96 valign=top style='width:1.0in;border:solid windowtext 1.0pt;
border-left:none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Presentation</span></b></p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border:solid windowtext 1.0pt;
border-left:none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
<td width=264 colspan=2 valign=top style='width:197.75pt;border:solid windowtext 1.0pt;
border-left:none;background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Example</span></b></p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>G</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>era designator </p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>G</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AD</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=3 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>y</p>
</td>
<td width=96 rowspan=3 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=3 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>year</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>y</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1996</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>yyyy</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1996</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>yy</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>96</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>u</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>year(allows negative years)</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>u</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1900, 0, -500</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>Y</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>year (of the week of year)</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Y</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1997</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=5 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>M</p>
</td>
<td width=96 rowspan=5 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text &amp; Number</p>
</td>
<td width=192 nowrap rowspan=5 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>month in year</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>M</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>09</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>MM</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>09</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>MMM</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Sep</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>MMMM</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>September</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>MMMMM</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>S</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>d</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>day in month</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>d</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dd</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>02</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>h</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>hour in am/pm (1~12)</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>h</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>7</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>hh</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>07</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>H</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>hour in day (0~23)</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>H</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>HH</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>00</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>m</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>minute in hour</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>m</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>4</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>mm</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>04</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>s</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>second in minute</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>s</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>5</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ss</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>05</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=3 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>S</p>
</td>
<td width=96 rowspan=3 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=3 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>fractional second</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>S</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>SS</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>23</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>SSS</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>235</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=6 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>E</p>
</td>
<td width=96 rowspan=6 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap rowspan=6 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>day of week</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>E</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>Tue</span></p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>EE</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>Tue</span></p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>EEE</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>Tue</span></p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>EEEE</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Tuesday</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>EEEEE</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>T</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>EEEEEE</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Tu</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=6 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>e</p>
</td>
<td width=96 rowspan=6 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text &amp; Number</p>
</td>
<td width=192 nowrap rowspan=6 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>day of week (local)</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>e</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>ee</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>eee</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Tue</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>eeee</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Tuesday</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>eeeee</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>T</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>eeeeee</span></p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Tu</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>D</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>day in year</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>D</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>189</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>F</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>day of week in month</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>F</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2 (2nd Wed in July)</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>w</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>week in year</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>w, ww</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>27</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>W</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>week in month</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>W</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>a</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>am/pm marker</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>A</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>pm</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>k</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>hour in day (0~24 )</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>k</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2, 24</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>kk</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>02, 24</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>K</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Number</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>hour in am/pm (0~11)</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>K</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>KK</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>00</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>z</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: specific non-location</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>z, zz, zzz</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PDT</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>zzzz</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Pacific Daylight Time</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>Z</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Text</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: ISO8601 basic format</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Z, ZZ, ZZZ</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-0800, +0000</p>
</td>
</tr>
<tr>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: long localized GMT</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ZZZZ</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>GMT-08:00, GMT+00:00</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center'>O</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: localized GMT</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>O</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>GMT-8</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>OOOO</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>GMT-08:00</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=2 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>v</p>
</td>
<td width=96 rowspan=2 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap rowspan=2 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: generic non-location</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>v</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PT</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>vvvv</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Pacific Time</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=4 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>V</p>
</td>
<td width=96 rowspan=4 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: short time zone ID</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>V</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>uslax</p>
</td>
</tr>
<tr>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: long time zone ID</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>VV</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>America/Los_Angeles</p>
</td>
</tr>
<tr>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: exemplar city</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>VVV</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Los Angeles</p>
</td>
</tr>
<tr>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: generic location.</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>VVVV</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Los Angeles Time</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=3 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>x</p>
</td>
<td width=96 rowspan=3 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap rowspan=3 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>time zone: ISO8601 basic or extended format </p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>x</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-08, +0530, +0000</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xx</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-0800, +0000</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xxx</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-08:00, +00:00</p>
</td>
</tr>
<tr>
<td width=24 nowrap rowspan=3 valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>X</p>
</td>
<td width=96 rowspan=3 valign=top style='width:1.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap rowspan=3 valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Time Zone: ISO8601 basic or extended format .The UTC
indicator &quot;Z&quot; is used when local time offset is 0.</p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>X</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-08, +0530, Z</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>XX</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-0800, Z</p>
</td>
</tr>
<tr>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>XXX</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>-08:00, Z</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>I</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>ISO8601 date/time </p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>I</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-size:8.0pt'>2006&#8209;10&#8209;07T12:06:56.568+01:00</span></p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>'</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Delimiter</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>escape for text&nbsp;&nbsp;&nbsp; </p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'Date='</p>
</td>
</tr>
<tr>
<td width=24 nowrap valign=top style='width:17.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'>''</p>
</td>
<td width=96 valign=top style='width:1.0in;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Literal</p>
</td>
<td width=192 nowrap valign=top style='width:2.0in;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>single quote&nbsp; </p>
</td>
<td width=90 valign=top style='width:67.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>''</p>
</td>
<td width=174 nowrap valign=top style='width:130.25pt;border-top:none;
border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>&nbsp;'o''clock'</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 40 Symbols in the dfdl:calendarPattern Property</p>
<p class=MsoNormal>The count of pattern letters determines the format as
indicated in the table.</p>
<p class=MsoNormal>When numeric fields abut one another directly, with no
intervening delimiter characters, they constitute a run of abutting numeric
fields. Such runs are parsed specially as described at [<a href="#a_ICUDateTime">ICUDateTime</a>].</p>
<p class=MsoNormal>The maximum number of &quot;S&quot; symbols that may appear
in the pattern is implementation-defined but MUST be at least three. The stored
accuracy for fractional seconds is also implementation-defined but MUST be at
least millisecond accuracy. When the number of &quot;S&quot; symbols in a
pattern exceeds the supported accuracy, excess fractional seconds are truncated
from the right (not rounded) when parsing, and zeros are added to the right
when unparsing. For example, a DFDL processor allows up to six &quot;S&quot;
symbols and has millisecond accuracy; for pattern &quot;ss.SSSSSS&quot;, data
&quot;12.345678&quot; would be parsed into Infoset xs:time
&quot;00:00:12:345&quot;, which would be unparsed into data
&quot;12.345000&quot;.</p>
<p class=MsoNormal>Unlike other fields, fractional seconds, &#8220;S&#8221;,
are padded on the right with zero.</p>
<p class=MsoNormal>It is a Processing Error if seconds appear in that part of
the SimpleContent region that represents a time zone.</p>
<p class=MsoNormal>The count of pattern letters determines the format as
indicated in the table. </p>
<p class=MsoNormal>If dfdl:representation is text, any characters in the
pattern that are not in the ranges of ['a'..'z'] and ['A'..'Z'] are treated as
quoted text. For instance, characters like ':', '.', ' ', '#' and '@' appear in
the formatted output even if they are not embraced within single quotes. The
single quote is used to 'escape' letters. Two single quotes in a row, whether
inside or outside a quoted sequence, represent a 'real' single quote.</p>
<p class=MsoNormal><span style='color:black'>If dfdl:representation is binary,
then the pattern can contain only characters and symbols that always result in
the presentation of digits.</span> </p>
<p class=MsoNormal>The symbols 'z', 'zz', and 'zzz' have identical meaning, as
do 'Z', 'ZZ', and 'ZZZ'.</p>
<p class=MsoNormal>The 'I' symbol must not be used with any other symbol except
for 'escape for text'. It represents calendar formats that match those defined
in the restricted profile of the ISO 8601 standard proposed by the W3C at <a
href="http://www.w3.org/TR/NOTE-datetime">http://www.w3.org/TR/NOTE-datetime.</a>
The formats are referred to as 'granularities'. </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>xs:dateTime. When parsing, the data must match one of the
granularities. When unparsing, the fullest granularity is used. </li>
<li class=MsoNormal>xs:date. When parsing, the data must match one of the
date-only granularities. When unparsing, the fullest date-only granularity
is used. </li>
<li class=MsoNormal>xs:time. When parsing, the data must match only the time
components of one of the granularities that contains time components. When
unparsing, the time components of the fullest granularity are used. The
literal 'T' character is not expected in the data when parsing and is not
output when unparsing. </li>
<li class=MsoNormal>The number of fractional second digits supported is the
same as for the &#8220;S&#8221; fractional seconds specifier described
above.</li>
<li class=MsoNormal>The omission of time zone from the input data when the type
is xs:dateTime or xs:time is not a Processing Error. If that occurs then
the time zone is obtained from the calendarTimeZone property.</li>
<li class=MsoNormal>When unparsing and the time zone is UTC, the time zone is
output as &#8216;+00:00&#8217;.</li>
</ul>
<p class=MsoNormal>When parsing, for any pattern that omits components the
values for the omitted components are supplied from the Unix epoch
1970-01-01T00:00:00.000.<a href="#_ftn44" name="_ftnref44" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[44]</span></span></span></a></p>
<p class=nobreak>When unparsing, and the pattern contains a formatting symbol
that requires a component of the date/time and the Infoset value does not contain
that component, it is a Processing Error.</p>
<p class=MsoNormal>When parsing a calendar element with a packed decimal
representation then the nibbles from the data are converted to text digits
without any trimming of leading or trailing zeros, and the result is then
matched against the pattern according to the usual rules.</p>
<p class=MsoNormal>When unparsing, if a time zone symbol is not available for a
particular time zone, a fallback may be used as defined in [<a
href="#a_ICUDateTime">ICUDateTime</a>].</p>
<h3><a name="_Ref364431481"></a><a name="_Toc62570175"><span style='color:black;
font-weight:normal'>13.11.2<span style='font:7.0pt "Times New Roman"'>&nbsp; </span></span>The
dfdl:calendarCheckPolicy Property</a></h3>
<p class=nobreak>The differences in behavior between 'strict' and 'lax' for
this property can be subtle. Both are quite lenient in enforcement of many
variations in format, with the 'lax' value adding additional tolerance of more
format variations to those already allowed by the 'strict' value.</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Lenient parsing behaviour when in 'strict' policy: </li>
<ol style='margin-top:0in' start=1 type=a>
<li class=MsoNormal>Case insensitive matching for text fields </li>
<li class=MsoNormal>MMM, MMMM, and MMMMM all accept either short or long form
of Month </li>
<li class=MsoNormal>E, EE, EEE, EEEE, EEEEE , and EEEEEE all accept either
abbreviated, full, narrow and short forms of Day of Week </li>
<li class=MsoNormal>Accepts truncated leftmost numeric field (e.g., pattern
&quot;HHmmss&quot; allows &quot;123456&quot; (12:34:56) and
&quot;23456&quot; (2:34:56) but not &quot;3456&quot;) </li>
</ol>
<li class=MsoNormal>Additional lenient parsing behaviour when in 'lax' policy
is implementation-defined, but typically includes: </li>
<ol style='margin-top:0in' start=1 type=a>
<li class=MsoNormal>Values outside valid ranges are normalized (e.g.,
&quot;March 32 1996&quot; is treated as &quot;April 1 1996&quot;) </li>
<li class=MsoNormal>Ignoring a trailing dot after a non-numeric field</li>
<li class=MsoNormal>Leading and trailing whitespace in the data but not in
the pattern is accepted</li>
<li class=MsoNormal>Whitespace in the pattern can be missing in the data</li>
<li class=MsoNormal>Partial matching on literal strings. E.g., data
&quot;20130621d&quot; allowed for pattern &quot;yyyyMMdd'date' &quot;</li>
</ol>
</ol>
<h2><a name="_Ref38561053"></a><a name="_Toc62570176"></a><a
name="_Toc349042766"></a><a name="_Toc243112837"></a><a name="_Toc322014184"></a><a
name="_Toc322014368"></a><a name="_Toc322014551"></a><a name="_Toc322014733"></a><a
name="_Toc332711670"></a><a name="_Toc322014185"></a><a name="_Toc322014369"></a><a
name="_Toc322014552"></a><a name="_Toc322014734"></a><a name="_Toc332711671"></a><a
name="_Toc322014188"></a><a name="_Toc322014372"></a><a name="_Toc322014555"></a><a
name="_Toc322014737"></a><a name="_Toc322911361"></a><a name="_Toc322911923"></a><a
name="_Toc332711674"></a>13.12<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Specific to Calendar with Text Representation </h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textCalendarJustification</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum </p>
<p class=MsoNormal>Valid values 'left', 'right',&nbsp; 'center' </p>
<p class=MsoNormal>Controls how the data is padded or trimmed on parsing and
unparsing.</p>
<p class=MsoNormal>Behavior as for dfdl:textStringJustification.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>textCalendarPadCharacter</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL String Literal</p>
<p class=MsoNormal>The value that is used when padding or trimming calendar
elements. The value can be a single character or a single byte.<br>
If a character, then it can be specified using a literal character or using
DFDL entities. </p>
<p class=MsoNormal>If a byte, then it must be specified using a single byte
value entity</p>
<p class=MsoNormal>If a pad character is specified when dfdl:lengthUnits is
'bytes' then the pad character must be a single-byte character. </p>
<p class=MsoNormal>If a pad byte is specified when dfdl:lengthUnits is
'characters' then </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>the encoding must be a fixed-width encoding </li>
<li class=MsoNormal>padding and trimming must be applied using a sequence of
N pad bytes, where N is the width of a character in the fixed-width
encoding. </li>
</ul>
<p class=MsoNormal>The string literal value is restricted in the same way as
described in &quot;Pad Character Restrictions&quot; in the description of the
dfdl:textStringPadCharacter property.</p>
<p class=MsoNormal style='page-break-after:avoid'>&nbsp;Annotation:
dfdl:element, dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 41 Properties Specific to Calendar with Text
Representation</p>
<h2><a name="_Toc349042768"></a><a name="_Ref364443310"></a><a
name="_Ref364443313"></a><a name="_Ref37179949"></a><a name="_Ref37180064"></a><a
name="_Ref37180094"></a><a name="_Toc62570177"></a><a name="_Toc322912212"></a><a
name="_Toc329093061"></a><a name="_Toc332701574"></a><a name="_Toc332701878"></a><a
name="_Toc332711677"></a><a name="_Toc332711979"></a><a name="_Toc332712280"></a><a
name="_Toc332724196"></a><a name="_Toc332724496"></a><a name="_Toc341102792"></a><a
name="_Toc347241527"></a><a name="_Toc347744720"></a><a name="_Toc348984503"></a><a
name="_Toc348984808"></a><a name="_Toc349037972"></a><a name="_Toc349038274"></a><a
name="_Toc349042767"></a><a name="_Toc351912765"></a><a name="_Toc351914786"></a><a
name="_Toc351915252"></a><a name="_Toc361231309"></a><a name="_Toc361231835"></a><a
name="_Toc362445133"></a><a name="_Toc363909055"></a><a name="_Toc364463480"></a><a
name="_Toc366078084"></a><a name="_Toc366078703"></a><a name="_Toc366079688"></a><a
name="_Toc366080300"></a><a name="_Toc366080909"></a><a name="_Toc366505249"></a><a
name="_Toc366508618"></a><a name="_Toc366513119"></a><a name="_Toc366574308"></a><a
name="_Toc366578101"></a><a name="_Toc366578695"></a><a name="_Toc366579287"></a><a
name="_Toc366579878"></a><a name="_Toc366580470"></a><a name="_Toc366581061"></a><a
name="_Toc366581653"></a>13.13<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Specific to Calendar with Binary Representation</h2>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryCalendarRep</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'packed', 'bcd', 'ibm4690Packed', 'binarySeconds',
'binaryMilliseconds'</p>
<p class=MsoNormal>For all values, the dfdl:byteOrder property is used to
determine the numeric significance of the bytes making up the representation.</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'packed' means represented as an IBM 390 packed decimal. Each
byte contains two decimal digits, except for the rightmost byte, which
contains a sign to the right of a decimal digit. The digits are interpreted
according to the dfdl:calendarPattern property. Property
dfdl:binaryPackedSignCodes is applicable.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'bcd' means represented as a binary coded decimal with two
digits per byte. The digits are interpreted according to the
dfdl:calendarPattern property</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'ibm4690Packed' means represented as a variant of packed format
as described in property dfdl:binaryNumberRep. The digits are interpreted
according to the dfdl:calendarPattern property.</p>
<p class=MsoNormal>For all packed decimals, property
dfdl:binaryNumberCheckPolicy is applicable. </p>
<p class=MsoNormal>For all these packed decimals, dfdl:calendarPattern can
contain only characters and symbols that always result in the presentation of
digits. It is a Schema Definition Error otherwise. This implies that property
dfdl:calendarPatternKind must be 'explicit' because the default patterns for
'implicit' contain non-numeric characters. It is a Schema Definition Error
otherwise.</p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>13.7</span> <span
class=MsoHyperlink>Properties Specific to Number with Binary Representation</span>.</p>
<p class=MsoNormal>Note also that a virtual decimal point for the boundary
between seconds and fractional seconds is implied from the pattern at the
boundary of 's' and 'S', i.e., where the substring 'sS' appears in the
pattern.</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'binarySeconds' means represented as binary xs:int, that is, as
a 4 byte signed integer that is the number of seconds from the epoch
(positive or negative).&nbsp; It is a Schema Definition Error if there is a
specified length not equivalent to 4 bytes.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>'binaryMilliseconds' means represented as binary xs:long, that
is, as an 8 byte signed integer that is the number of milliseconds from the
epoch (positive or negative).&nbsp; It is a Schema Definition Error if there
is a specified length not equivalent to 8 bytes.&nbsp;&nbsp; </p>
<p class=MsoNormal>Values binarySeconds and binaryMilliseconds may only be
used when the type is xs:dateTime. (It is a Schema Definition Error
otherwise.) </p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:simpleType</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>binaryCalendarEpoch</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DateTime</p>
<p class=MsoNormal>Used when dfdl:binaryCalendarRep is 'binarySeconds' or
'binaryMilliseconds'</p>
<p class=MsoNormal>The epoch from which to calculate dates and times.&nbsp; </p>
<p class=MsoNormal>If the time zone is omitted from the value, then UTC is
used.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element,
dfdl:simpleType</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 42 Properties Specific to Calendar with Binary
Representation</p>
<p class=MsoNormal>Examples of packed decimal format calendars for December 14,
1923 and dfdl:calendarPattern of 'MMddyy' would be:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>packed: (hexadecimal) <span style='font-family:"Courier New"'>01
21 42 3C</span> </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>bcd: (hexadecimal) <span style='font-family:"Courier New"'>12 14
23</span> </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
class=CodeCharacter><span style='font-family:Symbol'>&middot;<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span>ibm4690Packed: (hexadecimal) <span style='font-family:
"Courier New"'>12 14 23</span><span class=CodeCharacter> </span></p>
<p class=MsoNormal>The 'C' nibble at the end of the 'packed' representation is
a sign nibble, and the leading 0 nibble is just to align to a byte boundary..</p>
<h2><a name="_Toc243112841"></a><a name="_Toc349042769"></a><a
name="_Toc62570178">13.14<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Properties Specific to </a>Opaque Types (xs:hexBinary)</h2>
<p class=MsoNormal>There are no properties specific to opaque types</p>
<h2><a name="_Toc177399106"></a><a name="_Toc175057393"></a><a
name="_Toc199516330"></a><a name="_Toc194983993"></a><a name="_Toc243112842"></a><a
name="_Ref268264542"></a><a name="_Toc349042772"></a><a name="_Toc62570179"></a><a
name="_Toc322911367"></a><a name="_Toc322911676"></a><a name="_Toc322911928"></a><a
name="_Toc322912215"></a><a name="_Toc329093064"></a><a name="_Toc332701577"></a><a
name="_Toc332701881"></a><a name="_Toc332711680"></a><a name="_Toc332711982"></a><a
name="_Toc332712283"></a><a name="_Toc332724199"></a><a name="_Toc332724499"></a><a
name="_Toc341102795"></a><a name="_Toc347241530"></a><a name="_Toc347744723"></a><a
name="_Toc348984506"></a><a name="_Toc348984811"></a><a name="_Toc349037975"></a><a
name="_Toc349038277"></a><a name="_Toc349042770"></a><a name="_Toc349642184"></a><a
name="_Toc351912768"></a><a name="_Toc351914789"></a><a name="_Toc351915255"></a><a
name="_Toc361231312"></a><a name="_Toc361231838"></a><a name="_Toc362445136"></a><a
name="_Toc363909058"></a><a name="_Toc364463483"></a><a name="_Toc366078087"></a><a
name="_Toc366078706"></a><a name="_Toc366079691"></a><a name="_Toc366080303"></a><a
name="_Toc366080912"></a><a name="_Toc366505252"></a><a name="_Toc366508621"></a><a
name="_Toc366513122"></a><a name="_Toc366574311"></a><a name="_Toc366578104"></a><a
name="_Toc366578698"></a><a name="_Toc366579290"></a><a name="_Toc366579881"></a><a
name="_Toc366580473"></a><a name="_Toc366581064"></a><a name="_Toc366581656"></a><a
name="_Toc322911368"></a><a name="_Toc322911677"></a><a name="_Toc322911929"></a><a
name="_Toc322912216"></a><a name="_Toc329093065"></a><a name="_Toc332701578"></a><a
name="_Toc332701882"></a><a name="_Toc332711681"></a><a name="_Toc332711983"></a><a
name="_Toc332712284"></a><a name="_Toc332724200"></a><a name="_Toc332724500"></a><a
name="_Toc341102796"></a><a name="_Toc347241531"></a><a name="_Toc347744724"></a><a
name="_Toc348984507"></a><a name="_Toc348984812"></a><a name="_Toc349037976"></a><a
name="_Toc349038278"></a><a name="_Toc349042771"></a><a name="_Toc349642185"></a><a
name="_Toc351912769"></a><a name="_Toc351914790"></a><a name="_Toc351915256"></a><a
name="_Toc361231313"></a><a name="_Toc361231839"></a><a name="_Toc362445137"></a><a
name="_Toc363909059"></a><a name="_Toc364463484"></a><a name="_Toc366078088"></a><a
name="_Toc366078707"></a><a name="_Toc366079692"></a><a name="_Toc366080304"></a><a
name="_Toc366080913"></a><a name="_Toc366505253"></a><a name="_Toc366508622"></a><a
name="_Toc366513123"></a><a name="_Toc366574312"></a><a name="_Toc366578105"></a><a
name="_Toc366578699"></a><a name="_Toc366579291"></a><a name="_Toc366579882"></a><a
name="_Toc366580474"></a><a name="_Toc366581065"></a><a name="_Toc366581657"></a>13.15<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Nil Value Processing</h2>
<p class=nobreak>Sometimes it is desirable to represent an unused element,
place-holder for unknown information, or inapplicable information <i>explicitly</i>
with an element, rather than by the lack of an element. </p>
<p class=nobreak>For example, it may be desirable to represent a sparsely
populated array of data&nbsp; using a distinguished nil element to fill the
locations where data is absent, thereby preserving the position for the
elements that are present.</p>
<p class=MsoNormal>As another example, it may be desirable to represent an
unused simple element by a value which is not conformant to the logical type of
the element. </p>
<p class=nobreak>Such cases can be represented using the DFDL nil mechanism
which is based on the XML Schema nil mechanism. DFDL provides what are commonly
called &quot;in-band&quot; nil values by way of dfdl:nilKind 'logicalValue',
and also provides for two kinds of literal indicators of nil through
dfdl:nilKind 'literalValue' and dfdl:nilKind 'literalCharacter'. Nil processing
is used when the XSD 'nillable' property of an element is true. </p>
<p class=MsoNormal>DFDL allows elements of complex type to be nillable.
However, to avoid the concept of a complex element having a value, which does
not exist in DFDL, the only permissible nil value is the empty string, represented
by the DFDL %ES; entity and using dfdl:nilKind 'literalValue'.</p>
<p class=nobreak>On parsing, an element occurrence is nil if the element has
XSD nillable 'true' and the data is a nil representation as defined in Section <span class=MsoHyperlink>9.2.1</span>. Specifically:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>When dfdl:nilKind is 'literalValue', the <b><i>NilLiteralValue
</i></b>region of the data stream matches any of the dfdl:nilValue values.
</li>
<li class=MsoNormal>When dfdl:nilKind is 'literalCharacter', all characters in
the <b><i>NilLiteralCharacters </i></b>region of the data stream match the
dfdl:nilValue character.</li>
<li class=MsoNormal>When dfdl:nilKind is 'logicalValue', the data contains a
normal representation, and the <b><i>NilLogicalValue </i></b>region of the
data stream, converted to the element's logical type, matches any of the
dfdl:nilValue values.</li>
</ol>
<p class=MsoNormal>For dfdl:nilKind 'literalValue' or 'literalCharacter':</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Determination of whether the data is a nil representation
for a literal nil happens first before any consideration of whether the
representation is the empty, normal, or absent representations. </li>
<li class=MsoNormal>Property dfdl:nilValueDelimiterPolicy controls whether
matching one of the nil values also involves matching the initiator or
terminator specified by the element. This gives control over whether a nil
indicator may or may not also require the delimiters that a normal data
element requires.</li>
</ul>
<p class=MsoNormal>On unparsing, an element is nil if XSD nillable is 'true'
AND the element information item in the augmented Infoset has the <b>[nilled] </b>member
as true, in which case what is output to the data stream is one of the
following:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>When dfdl:nilKind is 'logicalValue' then the first value
of dfdl:nilValue converted to the physical representation is output as the
<b><i>NilLogicalValue</i></b> region.</li>
<li class=MsoNormal>When dfdl:nilKind is 'literalValue' then the first value
of dfdl:nilValue is output as the <b><i>NilLiteralValue</i></b> region.</li>
<li class=MsoNormal>When dfdl:nilKind is 'literalCharacter' then the character
from dfdl:nilValue, repeated to the needed length, is output as the <b><i>NilLiteralCharacters
</i></b>region.</li>
</ol>
<p class=MsoNormal>For dfdl:nilKind 'literalValue' or 'literalCharacter' then
dfdl:nilValueDelimiterPolicy determines whether any initiator or terminator
also appear surrounding the literal nil in the output data.</p>
<h2><a name="_Toc349042778"></a><a name="_Ref38543945"></a><a
name="_Ref38543953"></a><a name="_Ref52983719"></a><a name="_Toc62570180"></a><a
name="_Toc25586310"></a><a name="_Toc25586555"></a><a name="_Toc25589838"></a><a
name="_Toc27061105"></a><a name="_Toc322911679"></a><a name="_Toc322912218"></a><a
name="_Toc329093067"></a><a name="_Toc332701580"></a><a name="_Toc332701884"></a><a
name="_Toc332711683"></a><a name="_Toc332711985"></a><a name="_Toc332712286"></a><a
name="_Toc332724202"></a><a name="_Toc332724502"></a><a name="_Toc341102798"></a><a
name="_Toc347241533"></a><a name="_Toc347744726"></a><a name="_Toc348984509"></a><a
name="_Toc348984814"></a><a name="_Toc349037978"></a><a name="_Toc349038280"></a><a
name="_Toc349042773"></a><a name="_Toc351912771"></a><a name="_Toc351914792"></a><a
name="_Toc351915258"></a><a name="_Toc361231315"></a><a name="_Toc361231841"></a><a
name="_Toc362445139"></a><a name="_Toc363909061"></a><a name="_Toc364463486"></a><a
name="_Toc366078090"></a><a name="_Toc366078709"></a><a name="_Toc366079694"></a><a
name="_Toc366080306"></a><a name="_Toc366080915"></a><a name="_Toc366505255"></a><a
name="_Toc366508624"></a><a name="_Toc366513125"></a><a name="_Toc366574314"></a><a
name="_Toc366578107"></a><a name="_Toc366578701"></a><a name="_Toc366579293"></a><a
name="_Toc366579884"></a><a name="_Toc366580476"></a><a name="_Toc366581067"></a><a
name="_Toc366581659"></a><a name="_Toc351912772"></a><a name="_Toc351914793"></a><a
name="_Toc351915259"></a><a name="_Toc361231316"></a><a name="_Toc361231842"></a><a
name="_Toc362445140"></a><a name="_Toc363909062"></a><a name="_Toc364463487"></a><a
name="_Toc366078091"></a><a name="_Toc366078710"></a><a name="_Toc366079695"></a><a
name="_Toc366080307"></a><a name="_Toc366080916"></a><a name="_Toc366505256"></a><a
name="_Toc366508625"></a><a name="_Toc366513126"></a><a name="_Toc366574315"></a><a
name="_Toc366578108"></a><a name="_Toc366578702"></a><a name="_Toc366579294"></a><a
name="_Toc366579885"></a><a name="_Toc366580477"></a><a name="_Toc366581068"></a><a
name="_Toc366581660"></a><a name="_Toc351912773"></a><a name="_Toc351914794"></a><a
name="_Toc351915260"></a><a name="_Toc361231317"></a><a name="_Toc361231843"></a><a
name="_Toc362445141"></a><a name="_Toc363909063"></a><a name="_Toc364463488"></a><a
name="_Toc366078092"></a><a name="_Toc366078711"></a><a name="_Toc366079696"></a><a
name="_Toc366080308"></a><a name="_Toc366080917"></a><a name="_Toc366505257"></a><a
name="_Toc366508626"></a><a name="_Toc366513127"></a><a name="_Toc366574316"></a><a
name="_Toc366578109"></a><a name="_Toc366578703"></a><a name="_Toc366579295"></a><a
name="_Toc366579886"></a><a name="_Toc366580478"></a><a name="_Toc366581069"></a><a
name="_Toc366581661"></a><a name="_Toc351912774"></a><a name="_Toc351914795"></a><a
name="_Toc351915261"></a><a name="_Toc361231318"></a><a name="_Toc361231844"></a><a
name="_Toc362445142"></a><a name="_Toc363909064"></a><a name="_Toc364463489"></a><a
name="_Toc366078093"></a><a name="_Toc366078712"></a><a name="_Toc366079697"></a><a
name="_Toc366080309"></a><a name="_Toc366080918"></a><a name="_Toc366505258"></a><a
name="_Toc366508627"></a><a name="_Toc366513128"></a><a name="_Toc366574317"></a><a
name="_Toc366578110"></a><a name="_Toc366578704"></a><a name="_Toc366579296"></a><a
name="_Toc366579887"></a><a name="_Toc366580479"></a><a name="_Toc366581070"></a><a
name="_Toc366581662"></a><a name="_Toc351912775"></a><a name="_Toc351914796"></a><a
name="_Toc351915262"></a><a name="_Toc361231319"></a><a name="_Toc361231845"></a><a
name="_Toc362445143"></a><a name="_Toc363909065"></a><a name="_Toc364463490"></a><a
name="_Toc366078094"></a><a name="_Toc366078713"></a><a name="_Toc366079698"></a><a
name="_Toc366080310"></a><a name="_Toc366080919"></a><a name="_Toc366505259"></a><a
name="_Toc366508628"></a><a name="_Toc366513129"></a><a name="_Toc366574318"></a><a
name="_Toc366578111"></a><a name="_Toc366578705"></a><a name="_Toc366579297"></a><a
name="_Toc366579888"></a><a name="_Toc366580480"></a><a name="_Toc366581071"></a><a
name="_Toc366581663"></a><a name="_Toc351912776"></a><a name="_Toc351914797"></a><a
name="_Toc351915263"></a><a name="_Toc361231320"></a><a name="_Toc361231846"></a><a
name="_Toc362445144"></a><a name="_Toc363909066"></a><a name="_Toc364463491"></a><a
name="_Toc366078095"></a><a name="_Toc366078714"></a><a name="_Toc366079699"></a><a
name="_Toc366080311"></a><a name="_Toc366080920"></a><a name="_Toc366505260"></a><a
name="_Toc366508629"></a><a name="_Toc366513130"></a><a name="_Toc366574319"></a><a
name="_Toc366578112"></a><a name="_Toc366578706"></a><a name="_Toc366579298"></a><a
name="_Toc366579889"></a><a name="_Toc366580481"></a><a name="_Toc366581072"></a><a
name="_Toc366581664"></a><a name="_Toc351912777"></a><a name="_Toc351914798"></a><a
name="_Toc351915264"></a><a name="_Toc361231321"></a><a name="_Toc361231847"></a><a
name="_Toc362445145"></a><a name="_Toc363909067"></a><a name="_Toc364463492"></a><a
name="_Toc366078096"></a><a name="_Toc366078715"></a><a name="_Toc366079700"></a><a
name="_Toc366080312"></a><a name="_Toc366080921"></a><a name="_Toc366505261"></a><a
name="_Toc366508630"></a><a name="_Toc366513131"></a><a name="_Toc366574320"></a><a
name="_Toc366578113"></a><a name="_Toc366578707"></a><a name="_Toc366579299"></a><a
name="_Toc366579890"></a><a name="_Toc366580482"></a><a name="_Toc366581073"></a><a
name="_Toc366581665"></a><a name="_Toc351912778"></a><a name="_Toc351914799"></a><a
name="_Toc351915265"></a><a name="_Toc361231322"></a><a name="_Toc361231848"></a><a
name="_Toc362445146"></a><a name="_Toc363909068"></a><a name="_Toc364463493"></a><a
name="_Toc366078097"></a><a name="_Toc366078716"></a><a name="_Toc366079701"></a><a
name="_Toc366080313"></a><a name="_Toc366080922"></a><a name="_Toc366505262"></a><a
name="_Toc366508631"></a><a name="_Toc366513132"></a><a name="_Toc366574321"></a><a
name="_Toc366578114"></a><a name="_Toc366578708"></a><a name="_Toc366579300"></a><a
name="_Toc366579891"></a><a name="_Toc366580483"></a><a name="_Toc366581074"></a><a
name="_Toc366581666"></a><a name="_Toc351912779"></a><a name="_Toc351914800"></a><a
name="_Toc351915266"></a><a name="_Toc361231323"></a><a name="_Toc361231849"></a><a
name="_Toc362445147"></a><a name="_Toc363909069"></a><a name="_Toc364463494"></a><a
name="_Toc366078098"></a><a name="_Toc366078717"></a><a name="_Toc366079702"></a><a
name="_Toc366080314"></a><a name="_Toc366080923"></a><a name="_Toc366505263"></a><a
name="_Toc366508632"></a><a name="_Toc366513133"></a><a name="_Toc366574322"></a><a
name="_Toc366578115"></a><a name="_Toc366578709"></a><a name="_Toc366579301"></a><a
name="_Toc366579892"></a><a name="_Toc366580484"></a><a name="_Toc366581075"></a><a
name="_Toc366581667"></a><a name="_Toc351912780"></a><a name="_Toc351914801"></a><a
name="_Toc351915267"></a><a name="_Toc361231324"></a><a name="_Toc361231850"></a><a
name="_Toc362445148"></a><a name="_Toc363909070"></a><a name="_Toc364463495"></a><a
name="_Toc366078099"></a><a name="_Toc366078718"></a><a name="_Toc366079703"></a><a
name="_Toc366080315"></a><a name="_Toc366080924"></a><a name="_Toc366505264"></a><a
name="_Toc366508633"></a><a name="_Toc366513134"></a><a name="_Toc366574323"></a><a
name="_Toc366578116"></a><a name="_Toc366578710"></a><a name="_Toc366579302"></a><a
name="_Toc366579893"></a><a name="_Toc366580485"></a><a name="_Toc366581076"></a><a
name="_Toc366581668"></a><a name="_Toc351912781"></a><a name="_Toc351914802"></a><a
name="_Toc351915268"></a><a name="_Toc361231325"></a><a name="_Toc361231851"></a><a
name="_Toc362445149"></a><a name="_Toc363909071"></a><a name="_Toc364463496"></a><a
name="_Toc366078100"></a><a name="_Toc366078719"></a><a name="_Toc366079704"></a><a
name="_Toc366080316"></a><a name="_Toc366080925"></a><a name="_Toc366505265"></a><a
name="_Toc366508634"></a><a name="_Toc366513135"></a><a name="_Toc366574324"></a><a
name="_Toc366578117"></a><a name="_Toc366578711"></a><a name="_Toc366579303"></a><a
name="_Toc366579894"></a><a name="_Toc366580486"></a><a name="_Toc366581077"></a><a
name="_Toc366581669"></a><a name="_Toc351912782"></a><a name="_Toc351914803"></a><a
name="_Toc351915269"></a><a name="_Toc361231326"></a><a name="_Toc361231852"></a><a
name="_Toc362445150"></a><a name="_Toc363909072"></a><a name="_Toc364463497"></a><a
name="_Toc366078101"></a><a name="_Toc366078720"></a><a name="_Toc366079705"></a><a
name="_Toc366080317"></a><a name="_Toc366080926"></a><a name="_Toc366505266"></a><a
name="_Toc366508635"></a><a name="_Toc366513136"></a><a name="_Toc366574325"></a><a
name="_Toc366578118"></a><a name="_Toc366578712"></a><a name="_Toc366579304"></a><a
name="_Toc366579895"></a><a name="_Toc366580487"></a><a name="_Toc366581078"></a><a
name="_Toc366581670"></a><a name="_Toc351912783"></a><a name="_Toc351914804"></a><a
name="_Toc351915270"></a><a name="_Toc361231327"></a><a name="_Toc361231853"></a><a
name="_Toc362445151"></a><a name="_Toc363909073"></a><a name="_Toc364463498"></a><a
name="_Toc366078102"></a><a name="_Toc366078721"></a><a name="_Toc366079706"></a><a
name="_Toc366080318"></a><a name="_Toc366080927"></a><a name="_Toc366505267"></a><a
name="_Toc366508636"></a><a name="_Toc366513137"></a><a name="_Toc366574326"></a><a
name="_Toc366578119"></a><a name="_Toc366578713"></a><a name="_Toc366579305"></a><a
name="_Toc366579896"></a><a name="_Toc366580488"></a><a name="_Toc366581079"></a><a
name="_Toc366581671"></a><a name="_Toc351912784"></a><a name="_Toc351914805"></a><a
name="_Toc351915271"></a><a name="_Toc361231328"></a><a name="_Toc361231854"></a><a
name="_Toc362445152"></a><a name="_Toc363909074"></a><a name="_Toc364463499"></a><a
name="_Toc366078103"></a><a name="_Toc366078722"></a><a name="_Toc366079707"></a><a
name="_Toc366080319"></a><a name="_Toc366080928"></a><a name="_Toc366505268"></a><a
name="_Toc366508637"></a><a name="_Toc366513138"></a><a name="_Toc366574327"></a><a
name="_Toc366578120"></a><a name="_Toc366578714"></a><a name="_Toc366579306"></a><a
name="_Toc366579897"></a><a name="_Toc366580489"></a><a name="_Toc366581080"></a><a
name="_Toc366581672"></a><a name="_Toc351912785"></a><a name="_Toc351914806"></a><a
name="_Toc351915272"></a><a name="_Toc361231329"></a><a name="_Toc361231855"></a><a
name="_Toc362445153"></a><a name="_Toc363909075"></a><a name="_Toc364463500"></a><a
name="_Toc366078104"></a><a name="_Toc366078723"></a><a name="_Toc366079708"></a><a
name="_Toc366080320"></a><a name="_Toc366080929"></a><a name="_Toc366505269"></a><a
name="_Toc366508638"></a><a name="_Toc366513139"></a><a name="_Toc366574328"></a><a
name="_Toc366578121"></a><a name="_Toc366578715"></a><a name="_Toc366579307"></a><a
name="_Toc366579898"></a><a name="_Toc366580490"></a><a name="_Toc366581081"></a><a
name="_Toc366581673"></a><a name="_Toc351912786"></a><a name="_Toc351914807"></a><a
name="_Toc351915273"></a><a name="_Toc361231330"></a><a name="_Toc361231856"></a><a
name="_Toc362445154"></a><a name="_Toc363909076"></a><a name="_Toc364463501"></a><a
name="_Toc366078105"></a><a name="_Toc366078724"></a><a name="_Toc366079709"></a><a
name="_Toc366080321"></a><a name="_Toc366080930"></a><a name="_Toc366505270"></a><a
name="_Toc366508639"></a><a name="_Toc366513140"></a><a name="_Toc366574329"></a><a
name="_Toc366578122"></a><a name="_Toc366578716"></a><a name="_Toc366579308"></a><a
name="_Toc366579899"></a><a name="_Toc366580491"></a><a name="_Toc366581082"></a><a
name="_Toc366581674"></a><a name="_Toc351912787"></a><a name="_Toc351914808"></a><a
name="_Toc351915274"></a><a name="_Toc361231331"></a><a name="_Toc361231857"></a><a
name="_Toc362445155"></a><a name="_Toc363909077"></a><a name="_Toc364463502"></a><a
name="_Toc366078106"></a><a name="_Toc366078725"></a><a name="_Toc366079710"></a><a
name="_Toc366080322"></a><a name="_Toc366080931"></a><a name="_Toc366505271"></a><a
name="_Toc366508640"></a><a name="_Toc366513141"></a><a name="_Toc366574330"></a><a
name="_Toc366578123"></a><a name="_Toc366578717"></a><a name="_Toc366579309"></a><a
name="_Toc366579900"></a><a name="_Toc366580492"></a><a name="_Toc366581083"></a><a
name="_Toc366581675"></a><a name="_Toc351912788"></a><a name="_Toc351914809"></a><a
name="_Toc351915275"></a><a name="_Toc361231332"></a><a name="_Toc361231858"></a><a
name="_Toc362445156"></a><a name="_Toc363909078"></a><a name="_Toc364463503"></a><a
name="_Toc366078107"></a><a name="_Toc366078726"></a><a name="_Toc366079711"></a><a
name="_Toc366080323"></a><a name="_Toc366080932"></a><a name="_Toc366505272"></a><a
name="_Toc366508641"></a><a name="_Toc366513142"></a><a name="_Toc366574331"></a><a
name="_Toc366578124"></a><a name="_Toc366578718"></a><a name="_Toc366579310"></a><a
name="_Toc366579901"></a><a name="_Toc366580493"></a><a name="_Toc366581084"></a><a
name="_Toc366581676"></a><a name="_Toc351912789"></a><a name="_Toc351914810"></a><a
name="_Toc351915276"></a><a name="_Toc361231333"></a><a name="_Toc361231859"></a><a
name="_Toc362445157"></a><a name="_Toc363909079"></a><a name="_Toc364463504"></a><a
name="_Toc366078108"></a><a name="_Toc366078727"></a><a name="_Toc366079712"></a><a
name="_Toc366080324"></a><a name="_Toc366080933"></a><a name="_Toc366505273"></a><a
name="_Toc366508642"></a><a name="_Toc366513143"></a><a name="_Toc366574332"></a><a
name="_Toc366578125"></a><a name="_Toc366578719"></a><a name="_Toc366579311"></a><a
name="_Toc366579902"></a><a name="_Toc366580494"></a><a name="_Toc366581085"></a><a
name="_Toc366581677"></a><a name="_Toc351912790"></a><a name="_Toc351914811"></a><a
name="_Toc351915277"></a><a name="_Toc361231334"></a><a name="_Toc361231860"></a><a
name="_Toc362445158"></a><a name="_Toc363909080"></a><a name="_Toc364463505"></a><a
name="_Toc366078109"></a><a name="_Toc366078728"></a><a name="_Toc366079713"></a><a
name="_Toc366080325"></a><a name="_Toc366080934"></a><a name="_Toc366505274"></a><a
name="_Toc366508643"></a><a name="_Toc366513144"></a><a name="_Toc366574333"></a><a
name="_Toc366578126"></a><a name="_Toc366578720"></a><a name="_Toc366579312"></a><a
name="_Toc366579903"></a><a name="_Toc366580495"></a><a name="_Toc366581086"></a><a
name="_Toc366581678"></a><a name="_Toc351912791"></a><a name="_Toc351914812"></a><a
name="_Toc351915278"></a><a name="_Toc361231335"></a><a name="_Toc361231861"></a><a
name="_Toc362445159"></a><a name="_Toc363909081"></a><a name="_Toc364463506"></a><a
name="_Toc366078110"></a><a name="_Toc366078729"></a><a name="_Toc366079714"></a><a
name="_Toc366080326"></a><a name="_Toc366080935"></a><a name="_Toc366505275"></a><a
name="_Toc366508644"></a><a name="_Toc366513145"></a><a name="_Toc366574334"></a><a
name="_Toc366578127"></a><a name="_Toc366578721"></a><a name="_Toc366579313"></a><a
name="_Toc366579904"></a><a name="_Toc366580496"></a><a name="_Toc366581087"></a><a
name="_Toc366581679"></a><a name="_Toc351912792"></a><a name="_Toc351914813"></a><a
name="_Toc351915279"></a><a name="_Toc361231336"></a><a name="_Toc361231862"></a><a
name="_Toc362445160"></a><a name="_Toc363909082"></a><a name="_Toc364463507"></a><a
name="_Toc366078111"></a><a name="_Toc366078730"></a><a name="_Toc366079715"></a><a
name="_Toc366080327"></a><a name="_Toc366080936"></a><a name="_Toc366505276"></a><a
name="_Toc366508645"></a><a name="_Toc366513146"></a><a name="_Toc366574335"></a><a
name="_Toc366578128"></a><a name="_Toc366578722"></a><a name="_Toc366579314"></a><a
name="_Toc366579905"></a><a name="_Toc366580497"></a><a name="_Toc366581088"></a><a
name="_Toc366581680"></a><a name="_Toc351912793"></a><a name="_Toc351914814"></a><a
name="_Toc351915280"></a><a name="_Toc361231337"></a><a name="_Toc361231863"></a><a
name="_Toc362445161"></a><a name="_Toc363909083"></a><a name="_Toc364463508"></a><a
name="_Toc366078112"></a><a name="_Toc366078731"></a><a name="_Toc366079716"></a><a
name="_Toc366080328"></a><a name="_Toc366080937"></a><a name="_Toc366505277"></a><a
name="_Toc366508646"></a><a name="_Toc366513147"></a><a name="_Toc366574336"></a><a
name="_Toc366578129"></a><a name="_Toc366578723"></a><a name="_Toc366579315"></a><a
name="_Toc366579906"></a><a name="_Toc366580498"></a><a name="_Toc366581089"></a><a
name="_Toc366581681"></a><a name="_Toc351912794"></a><a name="_Toc351914815"></a><a
name="_Toc351915281"></a><a name="_Toc361231338"></a><a name="_Toc361231864"></a><a
name="_Toc362445162"></a><a name="_Toc363909084"></a><a name="_Toc364463509"></a><a
name="_Toc366078113"></a><a name="_Toc366078732"></a><a name="_Toc366079717"></a><a
name="_Toc366080329"></a><a name="_Toc366080938"></a><a name="_Toc366505278"></a><a
name="_Toc366508647"></a><a name="_Toc366513148"></a><a name="_Toc366574337"></a><a
name="_Toc366578130"></a><a name="_Toc366578724"></a><a name="_Toc366579316"></a><a
name="_Toc366579907"></a><a name="_Toc366580499"></a><a name="_Toc366581090"></a><a
name="_Toc366581682"></a><a name="_Toc351912795"></a><a name="_Toc351914816"></a><a
name="_Toc351915282"></a><a name="_Toc361231339"></a><a name="_Toc361231865"></a><a
name="_Toc362445163"></a><a name="_Toc363909085"></a><a name="_Toc364463510"></a><a
name="_Toc366078114"></a><a name="_Toc366078733"></a><a name="_Toc366079718"></a><a
name="_Toc366080330"></a><a name="_Toc366080939"></a><a name="_Toc366505279"></a><a
name="_Toc366508648"></a><a name="_Toc366513149"></a><a name="_Toc366574338"></a><a
name="_Toc366578131"></a><a name="_Toc366578725"></a><a name="_Toc366579317"></a><a
name="_Toc366579908"></a><a name="_Toc366580500"></a><a name="_Toc366581091"></a><a
name="_Toc366581683"></a><a name="_Toc351912796"></a><a name="_Toc351914817"></a><a
name="_Toc351915283"></a><a name="_Toc361231340"></a><a name="_Toc361231866"></a><a
name="_Toc362445164"></a><a name="_Toc363909086"></a><a name="_Toc364463511"></a><a
name="_Toc366078115"></a><a name="_Toc366078734"></a><a name="_Toc366079719"></a><a
name="_Toc366080331"></a><a name="_Toc366080940"></a><a name="_Toc366505280"></a><a
name="_Toc366508649"></a><a name="_Toc366513150"></a><a name="_Toc366574339"></a><a
name="_Toc366578132"></a><a name="_Toc366578726"></a><a name="_Toc366579318"></a><a
name="_Toc366579909"></a><a name="_Toc366580501"></a><a name="_Toc366581092"></a><a
name="_Toc366581684"></a><a name="_Toc351912797"></a><a name="_Toc351914818"></a><a
name="_Toc351915284"></a><a name="_Toc361231341"></a><a name="_Toc361231867"></a><a
name="_Toc362445165"></a><a name="_Toc363909087"></a><a name="_Toc364463512"></a><a
name="_Toc366078116"></a><a name="_Toc366078735"></a><a name="_Toc366079720"></a><a
name="_Toc366080332"></a><a name="_Toc366080941"></a><a name="_Toc366505281"></a><a
name="_Toc366508650"></a><a name="_Toc366513151"></a><a name="_Toc366574340"></a><a
name="_Toc366578133"></a><a name="_Toc366578727"></a><a name="_Toc366579319"></a><a
name="_Toc366579910"></a><a name="_Toc366580502"></a><a name="_Toc366581093"></a><a
name="_Toc366581685"></a><a name="_Toc351912798"></a><a name="_Toc351914819"></a><a
name="_Toc351915285"></a><a name="_Toc361231342"></a><a name="_Toc361231868"></a><a
name="_Toc362445166"></a><a name="_Toc363909088"></a><a name="_Toc364463513"></a><a
name="_Toc366078117"></a><a name="_Toc366078736"></a><a name="_Toc366079721"></a><a
name="_Toc366080333"></a><a name="_Toc366080942"></a><a name="_Toc366505282"></a><a
name="_Toc366508651"></a><a name="_Toc366513152"></a><a name="_Toc366574341"></a><a
name="_Toc366578134"></a><a name="_Toc366578728"></a><a name="_Toc366579320"></a><a
name="_Toc366579911"></a><a name="_Toc366580503"></a><a name="_Toc366581094"></a><a
name="_Toc366581686"></a><a name="_Toc351912799"></a><a name="_Toc351914820"></a><a
name="_Toc351915286"></a><a name="_Toc361231343"></a><a name="_Toc361231869"></a><a
name="_Toc362445167"></a><a name="_Toc363909089"></a><a name="_Toc364463514"></a><a
name="_Toc366078118"></a><a name="_Toc366078737"></a><a name="_Toc366079722"></a><a
name="_Toc366080334"></a><a name="_Toc366080943"></a><a name="_Toc366505283"></a><a
name="_Toc366508652"></a><a name="_Toc366513153"></a><a name="_Toc366574342"></a><a
name="_Toc366578135"></a><a name="_Toc366578729"></a><a name="_Toc366579321"></a><a
name="_Toc366579912"></a><a name="_Toc366580504"></a><a name="_Toc366581095"></a><a
name="_Toc366581687"></a><a name="_Toc351912800"></a><a name="_Toc351914821"></a><a
name="_Toc351915287"></a><a name="_Toc361231344"></a><a name="_Toc361231870"></a><a
name="_Toc362445168"></a><a name="_Toc363909090"></a><a name="_Toc364463515"></a><a
name="_Toc366078119"></a><a name="_Toc366078738"></a><a name="_Toc366079723"></a><a
name="_Toc366080335"></a><a name="_Toc366080944"></a><a name="_Toc366505284"></a><a
name="_Toc366508653"></a><a name="_Toc366513154"></a><a name="_Toc366574343"></a><a
name="_Toc366578136"></a><a name="_Toc366578730"></a><a name="_Toc366579322"></a><a
name="_Toc366579913"></a><a name="_Toc366580505"></a><a name="_Toc366581096"></a><a
name="_Toc366581688"></a><a name="_Toc351912801"></a><a name="_Toc351914822"></a><a
name="_Toc351915288"></a><a name="_Toc361231345"></a><a name="_Toc361231871"></a><a
name="_Toc362445169"></a><a name="_Toc363909091"></a><a name="_Toc364463516"></a><a
name="_Toc366078120"></a><a name="_Toc366078739"></a><a name="_Toc366079724"></a><a
name="_Toc366080336"></a><a name="_Toc366080945"></a><a name="_Toc366505285"></a><a
name="_Toc366508654"></a><a name="_Toc366513155"></a><a name="_Toc366574344"></a><a
name="_Toc366578137"></a><a name="_Toc366578731"></a><a name="_Toc366579323"></a><a
name="_Toc366579914"></a><a name="_Toc366580506"></a><a name="_Toc366581097"></a><a
name="_Toc366581689"></a><a name="_Toc351912802"></a><a name="_Toc351914823"></a><a
name="_Toc351915289"></a><a name="_Toc361231346"></a><a name="_Toc361231872"></a><a
name="_Toc362445170"></a><a name="_Toc363909092"></a><a name="_Toc364463517"></a><a
name="_Toc366078121"></a><a name="_Toc366078740"></a><a name="_Toc366079725"></a><a
name="_Toc366080337"></a><a name="_Toc366080946"></a><a name="_Toc366505286"></a><a
name="_Toc366508655"></a><a name="_Toc366513156"></a><a name="_Toc366574345"></a><a
name="_Toc366578138"></a><a name="_Toc366578732"></a><a name="_Toc366579324"></a><a
name="_Toc366579915"></a><a name="_Toc366580507"></a><a name="_Toc366581098"></a><a
name="_Toc366581690"></a><a name="_Toc351912803"></a><a name="_Toc351914824"></a><a
name="_Toc351915290"></a><a name="_Toc361231347"></a><a name="_Toc361231873"></a><a
name="_Toc362445171"></a><a name="_Toc363909093"></a><a name="_Toc364463518"></a><a
name="_Toc366078122"></a><a name="_Toc366078741"></a><a name="_Toc366079726"></a><a
name="_Toc366080338"></a><a name="_Toc366080947"></a><a name="_Toc366505287"></a><a
name="_Toc366508656"></a><a name="_Toc366513157"></a><a name="_Toc366574346"></a><a
name="_Toc366578139"></a><a name="_Toc366578733"></a><a name="_Toc366579325"></a><a
name="_Toc366579916"></a><a name="_Toc366580508"></a><a name="_Toc366581099"></a><a
name="_Toc366581691"></a><a name="_Toc351912804"></a><a name="_Toc351914825"></a><a
name="_Toc351915291"></a><a name="_Toc361231348"></a><a name="_Toc361231874"></a><a
name="_Toc362445172"></a><a name="_Toc363909094"></a><a name="_Toc364463519"></a><a
name="_Toc366078123"></a><a name="_Toc366078742"></a><a name="_Toc366079727"></a><a
name="_Toc366080339"></a><a name="_Toc366080948"></a><a name="_Toc366505288"></a><a
name="_Toc366508657"></a><a name="_Toc366513158"></a><a name="_Toc366574347"></a><a
name="_Toc366578140"></a><a name="_Toc366578734"></a><a name="_Toc366579326"></a><a
name="_Toc366579917"></a><a name="_Toc366580509"></a><a name="_Toc366581100"></a><a
name="_Toc366581692"></a><a name="_Toc351912805"></a><a name="_Toc351914826"></a><a
name="_Toc351915292"></a><a name="_Toc361231349"></a><a name="_Toc361231875"></a><a
name="_Toc362445173"></a><a name="_Toc363909095"></a><a name="_Toc364463520"></a><a
name="_Toc366078124"></a><a name="_Toc366078743"></a><a name="_Toc366079728"></a><a
name="_Toc366080340"></a><a name="_Toc366080949"></a><a name="_Toc366505289"></a><a
name="_Toc366508658"></a><a name="_Toc366513159"></a><a name="_Toc366574348"></a><a
name="_Toc366578141"></a><a name="_Toc366578735"></a><a name="_Toc366579327"></a><a
name="_Toc366579918"></a><a name="_Toc366580510"></a><a name="_Toc366581101"></a><a
name="_Toc366581693"></a><a name="_Toc351912806"></a><a name="_Toc351914827"></a><a
name="_Toc351915293"></a><a name="_Toc361231350"></a><a name="_Toc361231876"></a><a
name="_Toc362445174"></a><a name="_Toc363909096"></a><a name="_Toc364463521"></a><a
name="_Toc366078125"></a><a name="_Toc366078744"></a><a name="_Toc366079729"></a><a
name="_Toc366080341"></a><a name="_Toc366080950"></a><a name="_Toc366505290"></a><a
name="_Toc366508659"></a><a name="_Toc366513160"></a><a name="_Toc366574349"></a><a
name="_Toc366578142"></a><a name="_Toc366578736"></a><a name="_Toc366579328"></a><a
name="_Toc366579919"></a><a name="_Toc366580511"></a><a name="_Toc366581102"></a><a
name="_Toc366581694"></a><a name="_Toc351912807"></a><a name="_Toc351914828"></a><a
name="_Toc351915294"></a><a name="_Toc361231351"></a><a name="_Toc361231877"></a><a
name="_Toc362445175"></a><a name="_Toc363909097"></a><a name="_Toc364463522"></a><a
name="_Toc366078126"></a><a name="_Toc366078745"></a><a name="_Toc366079730"></a><a
name="_Toc366080342"></a><a name="_Toc366080951"></a><a name="_Toc366505291"></a><a
name="_Toc366508660"></a><a name="_Toc366513161"></a><a name="_Toc366574350"></a><a
name="_Toc366578143"></a><a name="_Toc366578737"></a><a name="_Toc366579329"></a><a
name="_Toc366579920"></a><a name="_Toc366580512"></a><a name="_Toc366581103"></a><a
name="_Toc366581695"></a><a name="_Toc322911681"></a><a name="_Toc322912220"></a><a
name="_Toc329093069"></a><a name="_Toc332701582"></a><a name="_Toc332701886"></a><a
name="_Toc332711685"></a><a name="_Toc332711987"></a><a name="_Toc332712288"></a><a
name="_Toc332724204"></a><a name="_Toc332724504"></a><a name="_Toc341102800"></a><a
name="_Toc347241535"></a><a name="_Toc347744728"></a><a name="_Toc348984511"></a><a
name="_Toc348984816"></a><a name="_Toc349037980"></a><a name="_Toc349038282"></a><a
name="_Toc349042775"></a><a name="_Toc351912808"></a><a name="_Toc351914829"></a><a
name="_Toc351915295"></a><a name="_Toc361231352"></a><a name="_Toc361231878"></a><a
name="_Toc362445176"></a><a name="_Toc363909098"></a><a name="_Toc364463523"></a><a
name="_Toc366078127"></a><a name="_Toc366078746"></a><a name="_Toc366079731"></a><a
name="_Toc366080343"></a><a name="_Toc366080952"></a><a name="_Toc366505292"></a><a
name="_Toc366508661"></a><a name="_Toc366513162"></a><a name="_Toc366574351"></a><a
name="_Toc366578144"></a><a name="_Toc366578738"></a><a name="_Toc366579330"></a><a
name="_Toc366579921"></a><a name="_Toc366580513"></a><a name="_Toc366581104"></a><a
name="_Toc366581696"></a><a name="_Toc351912809"></a><a name="_Toc351914830"></a><a
name="_Toc351915296"></a><a name="_Toc361231353"></a><a name="_Toc361231879"></a><a
name="_Toc362445177"></a><a name="_Toc363909099"></a><a name="_Toc364463524"></a><a
name="_Toc366078128"></a><a name="_Toc366078747"></a><a name="_Toc366079732"></a><a
name="_Toc366080344"></a><a name="_Toc366080953"></a><a name="_Toc366505293"></a><a
name="_Toc366508662"></a><a name="_Toc366513163"></a><a name="_Toc366574352"></a><a
name="_Toc366578145"></a><a name="_Toc366578739"></a><a name="_Toc366579331"></a><a
name="_Toc366579922"></a><a name="_Toc366580514"></a><a name="_Toc366581105"></a><a
name="_Toc366581697"></a><a name="_Toc351912810"></a><a name="_Toc351914831"></a><a
name="_Toc351915297"></a><a name="_Toc361231354"></a><a name="_Toc361231880"></a><a
name="_Toc362445178"></a><a name="_Toc363909100"></a><a name="_Toc364463525"></a><a
name="_Toc366078129"></a><a name="_Toc366078748"></a><a name="_Toc366079733"></a><a
name="_Toc366080345"></a><a name="_Toc366080954"></a><a name="_Toc366505294"></a><a
name="_Toc366508663"></a><a name="_Toc366513164"></a><a name="_Toc366574353"></a><a
name="_Toc366578146"></a><a name="_Toc366578740"></a><a name="_Toc366579332"></a><a
name="_Toc366579923"></a><a name="_Toc366580515"></a><a name="_Toc366581106"></a><a
name="_Toc366581698"></a><a name="_Toc351912811"></a><a name="_Toc351914832"></a><a
name="_Toc351915298"></a><a name="_Toc361231355"></a><a name="_Toc361231881"></a><a
name="_Toc362445179"></a><a name="_Toc363909101"></a><a name="_Toc364463526"></a><a
name="_Toc366078130"></a><a name="_Toc366078749"></a><a name="_Toc366079734"></a><a
name="_Toc366080346"></a><a name="_Toc366080955"></a><a name="_Toc366505295"></a><a
name="_Toc366508664"></a><a name="_Toc366513165"></a><a name="_Toc366574354"></a><a
name="_Toc366578147"></a><a name="_Toc366578741"></a><a name="_Toc366579333"></a><a
name="_Toc366579924"></a><a name="_Toc366580516"></a><a name="_Toc366581107"></a><a
name="_Toc366581699"></a><a name="_Toc351912812"></a><a name="_Toc351914833"></a><a
name="_Toc351915299"></a><a name="_Toc361231356"></a><a name="_Toc361231882"></a><a
name="_Toc362445180"></a><a name="_Toc363909102"></a><a name="_Toc364463527"></a><a
name="_Toc366078131"></a><a name="_Toc366078750"></a><a name="_Toc366079735"></a><a
name="_Toc366080347"></a><a name="_Toc366080956"></a><a name="_Toc366505296"></a><a
name="_Toc366508665"></a><a name="_Toc366513166"></a><a name="_Toc366574355"></a><a
name="_Toc366578148"></a><a name="_Toc366578742"></a><a name="_Toc366579334"></a><a
name="_Toc366579925"></a><a name="_Toc366580517"></a><a name="_Toc366581108"></a><a
name="_Toc366581700"></a><a name="_Toc351912813"></a><a name="_Toc351914834"></a><a
name="_Toc351915300"></a><a name="_Toc361231357"></a><a name="_Toc361231883"></a><a
name="_Toc362445181"></a><a name="_Toc363909103"></a><a name="_Toc364463528"></a><a
name="_Toc366078132"></a><a name="_Toc366078751"></a><a name="_Toc366079736"></a><a
name="_Toc366080348"></a><a name="_Toc366080957"></a><a name="_Toc366505297"></a><a
name="_Toc366508666"></a><a name="_Toc366513167"></a><a name="_Toc366574356"></a><a
name="_Toc366578149"></a><a name="_Toc366578743"></a><a name="_Toc366579335"></a><a
name="_Toc366579926"></a><a name="_Toc366580518"></a><a name="_Toc366581109"></a><a
name="_Toc366581701"></a><a name="_Toc351912814"></a><a name="_Toc351914835"></a><a
name="_Toc351915301"></a><a name="_Toc361231358"></a><a name="_Toc361231884"></a><a
name="_Toc362445182"></a><a name="_Toc363909104"></a><a name="_Toc364463529"></a><a
name="_Toc366078133"></a><a name="_Toc366078752"></a><a name="_Toc366079737"></a><a
name="_Toc366080349"></a><a name="_Toc366080958"></a><a name="_Toc366505298"></a><a
name="_Toc366508667"></a><a name="_Toc366513168"></a><a name="_Toc366574357"></a><a
name="_Toc366578150"></a><a name="_Toc366578744"></a><a name="_Toc366579336"></a><a
name="_Toc366579927"></a><a name="_Toc366580519"></a><a name="_Toc366581110"></a><a
name="_Toc366581702"></a><a name="_Toc351912815"></a><a name="_Toc351914836"></a><a
name="_Toc351915302"></a><a name="_Toc361231359"></a><a name="_Toc361231885"></a><a
name="_Toc362445183"></a><a name="_Toc363909105"></a><a name="_Toc364463530"></a><a
name="_Toc366078134"></a><a name="_Toc366078753"></a><a name="_Toc366079738"></a><a
name="_Toc366080350"></a><a name="_Toc366080959"></a><a name="_Toc366505299"></a><a
name="_Toc366508668"></a><a name="_Toc366513169"></a><a name="_Toc366574358"></a><a
name="_Toc366578151"></a><a name="_Toc366578745"></a><a name="_Toc366579337"></a><a
name="_Toc366579928"></a><a name="_Toc366580520"></a><a name="_Toc366581111"></a><a
name="_Toc366581703"></a><a name="_Toc351912816"></a><a name="_Toc351914837"></a><a
name="_Toc351915303"></a><a name="_Toc361231360"></a><a name="_Toc361231886"></a><a
name="_Toc362445184"></a><a name="_Toc363909106"></a><a name="_Toc364463531"></a><a
name="_Toc366078135"></a><a name="_Toc366078754"></a><a name="_Toc366079739"></a><a
name="_Toc366080351"></a><a name="_Toc366080960"></a><a name="_Toc366505300"></a><a
name="_Toc366508669"></a><a name="_Toc366513170"></a><a name="_Toc366574359"></a><a
name="_Toc366578152"></a><a name="_Toc366578746"></a><a name="_Toc366579338"></a><a
name="_Toc366579929"></a><a name="_Toc366580521"></a><a name="_Toc366581112"></a><a
name="_Toc366581704"></a><a name="_Toc351912817"></a><a name="_Toc351914838"></a><a
name="_Toc351915304"></a><a name="_Toc361231361"></a><a name="_Toc361231887"></a><a
name="_Toc362445185"></a><a name="_Toc363909107"></a><a name="_Toc364463532"></a><a
name="_Toc366078136"></a><a name="_Toc366078755"></a><a name="_Toc366079740"></a><a
name="_Toc366080352"></a><a name="_Toc366080961"></a><a name="_Toc366505301"></a><a
name="_Toc366508670"></a><a name="_Toc366513171"></a><a name="_Toc366574360"></a><a
name="_Toc366578153"></a><a name="_Toc366578747"></a><a name="_Toc366579339"></a><a
name="_Toc366579930"></a><a name="_Toc366580522"></a><a name="_Toc366581113"></a><a
name="_Toc366581705"></a><a name="_Toc351912818"></a><a name="_Toc351914839"></a><a
name="_Toc351915305"></a><a name="_Toc361231362"></a><a name="_Toc361231888"></a><a
name="_Toc362445186"></a><a name="_Toc363909108"></a><a name="_Toc364463533"></a><a
name="_Toc366078137"></a><a name="_Toc366078756"></a><a name="_Toc366079741"></a><a
name="_Toc366080353"></a><a name="_Toc366080962"></a><a name="_Toc366505302"></a><a
name="_Toc366508671"></a><a name="_Toc366513172"></a><a name="_Toc366574361"></a><a
name="_Toc366578154"></a><a name="_Toc366578748"></a><a name="_Toc366579340"></a><a
name="_Toc366579931"></a><a name="_Toc366580523"></a><a name="_Toc366581114"></a><a
name="_Toc366581706"></a><a name="_Toc351912819"></a><a name="_Toc351914840"></a><a
name="_Toc351915306"></a><a name="_Toc361231363"></a><a name="_Toc361231889"></a><a
name="_Toc362445187"></a><a name="_Toc363909109"></a><a name="_Toc364463534"></a><a
name="_Toc366078138"></a><a name="_Toc366078757"></a><a name="_Toc366079742"></a><a
name="_Toc366080354"></a><a name="_Toc366080963"></a><a name="_Toc366505303"></a><a
name="_Toc366508672"></a><a name="_Toc366513173"></a><a name="_Toc366574362"></a><a
name="_Toc366578155"></a><a name="_Toc366578749"></a><a name="_Toc366579341"></a><a
name="_Toc366579932"></a><a name="_Toc366580524"></a><a name="_Toc366581115"></a><a
name="_Toc366581707"></a><a name="_Toc351912820"></a><a name="_Toc351914841"></a><a
name="_Toc351915307"></a><a name="_Toc361231364"></a><a name="_Toc361231890"></a><a
name="_Toc362445188"></a><a name="_Toc363909110"></a><a name="_Toc364463535"></a><a
name="_Toc366078139"></a><a name="_Toc366078758"></a><a name="_Toc366079743"></a><a
name="_Toc366080355"></a><a name="_Toc366080964"></a><a name="_Toc366505304"></a><a
name="_Toc366508673"></a><a name="_Toc366513174"></a><a name="_Toc366574363"></a><a
name="_Toc366578156"></a><a name="_Toc366578750"></a><a name="_Toc366579342"></a><a
name="_Toc366579933"></a><a name="_Toc366580525"></a><a name="_Toc366581116"></a><a
name="_Toc366581708"></a><a name="_Toc351912821"></a><a name="_Toc351914842"></a><a
name="_Toc351915308"></a><a name="_Toc361231365"></a><a name="_Toc361231891"></a><a
name="_Toc362445189"></a><a name="_Toc363909111"></a><a name="_Toc364463536"></a><a
name="_Toc366078140"></a><a name="_Toc366078759"></a><a name="_Toc366079744"></a><a
name="_Toc366080356"></a><a name="_Toc366080965"></a><a name="_Toc366505305"></a><a
name="_Toc366508674"></a><a name="_Toc366513175"></a><a name="_Toc366574364"></a><a
name="_Toc366578157"></a><a name="_Toc366578751"></a><a name="_Toc366579343"></a><a
name="_Toc366579934"></a><a name="_Toc366580526"></a><a name="_Toc366581117"></a><a
name="_Toc366581709"></a><a name="_Toc351912822"></a><a name="_Toc351914843"></a><a
name="_Toc351915309"></a><a name="_Toc361231366"></a><a name="_Toc361231892"></a><a
name="_Toc362445190"></a><a name="_Toc363909112"></a><a name="_Toc364463537"></a><a
name="_Toc366078141"></a><a name="_Toc366078760"></a><a name="_Toc366079745"></a><a
name="_Toc366080357"></a><a name="_Toc366080966"></a><a name="_Toc366505306"></a><a
name="_Toc366508675"></a><a name="_Toc366513176"></a><a name="_Toc366574365"></a><a
name="_Toc366578158"></a><a name="_Toc366578752"></a><a name="_Toc366579344"></a><a
name="_Toc366579935"></a><a name="_Toc366580527"></a><a name="_Toc366581118"></a><a
name="_Toc366581710"></a><a name="_Toc351912823"></a><a name="_Toc351914844"></a><a
name="_Toc351915310"></a><a name="_Toc361231367"></a><a name="_Toc361231893"></a><a
name="_Toc362445191"></a><a name="_Toc363909113"></a><a name="_Toc364463538"></a><a
name="_Toc366078142"></a><a name="_Toc366078761"></a><a name="_Toc366079746"></a><a
name="_Toc366080358"></a><a name="_Toc366080967"></a><a name="_Toc366505307"></a><a
name="_Toc366508676"></a><a name="_Toc366513177"></a><a name="_Toc366574366"></a><a
name="_Toc366578159"></a><a name="_Toc366578753"></a><a name="_Toc366579345"></a><a
name="_Toc366579936"></a><a name="_Toc366580528"></a><a name="_Toc366581119"></a><a
name="_Toc366581711"></a><a name="_Toc351912824"></a><a name="_Toc351914845"></a><a
name="_Toc351915311"></a><a name="_Toc361231368"></a><a name="_Toc361231894"></a><a
name="_Toc362445192"></a><a name="_Toc363909114"></a><a name="_Toc364463539"></a><a
name="_Toc366078143"></a><a name="_Toc366078762"></a><a name="_Toc366079747"></a><a
name="_Toc366080359"></a><a name="_Toc366080968"></a><a name="_Toc366505308"></a><a
name="_Toc366508677"></a><a name="_Toc366513178"></a><a name="_Toc366574367"></a><a
name="_Toc366578160"></a><a name="_Toc366578754"></a><a name="_Toc366579346"></a><a
name="_Toc366579937"></a><a name="_Toc366580529"></a><a name="_Toc366581120"></a><a
name="_Toc366581712"></a><a name="_Toc351912825"></a><a name="_Toc351914846"></a><a
name="_Toc351915312"></a><a name="_Toc361231369"></a><a name="_Toc361231895"></a><a
name="_Toc362445193"></a><a name="_Toc363909115"></a><a name="_Toc364463540"></a><a
name="_Toc366078144"></a><a name="_Toc366078763"></a><a name="_Toc366079748"></a><a
name="_Toc366080360"></a><a name="_Toc366080969"></a><a name="_Toc366505309"></a><a
name="_Toc366508678"></a><a name="_Toc366513179"></a><a name="_Toc366574368"></a><a
name="_Toc366578161"></a><a name="_Toc366578755"></a><a name="_Toc366579347"></a><a
name="_Toc366579938"></a><a name="_Toc366580530"></a><a name="_Toc366581121"></a><a
name="_Toc366581713"></a><a name="_Toc351912826"></a><a name="_Toc351914847"></a><a
name="_Toc351915313"></a><a name="_Toc361231370"></a><a name="_Toc361231896"></a><a
name="_Toc362445194"></a><a name="_Toc363909116"></a><a name="_Toc364463541"></a><a
name="_Toc366078145"></a><a name="_Toc366078764"></a><a name="_Toc366079749"></a><a
name="_Toc366080361"></a><a name="_Toc366080970"></a><a name="_Toc366505310"></a><a
name="_Toc366508679"></a><a name="_Toc366513180"></a><a name="_Toc366574369"></a><a
name="_Toc366578162"></a><a name="_Toc366578756"></a><a name="_Toc366579348"></a><a
name="_Toc366579939"></a><a name="_Toc366580531"></a><a name="_Toc366581122"></a><a
name="_Toc366581714"></a><a name="_Toc351912827"></a><a name="_Toc351914848"></a><a
name="_Toc351915314"></a><a name="_Toc361231371"></a><a name="_Toc361231897"></a><a
name="_Toc362445195"></a><a name="_Toc363909117"></a><a name="_Toc364463542"></a><a
name="_Toc366078146"></a><a name="_Toc366078765"></a><a name="_Toc366079750"></a><a
name="_Toc366080362"></a><a name="_Toc366080971"></a><a name="_Toc366505311"></a><a
name="_Toc366508680"></a><a name="_Toc366513181"></a><a name="_Toc366574370"></a><a
name="_Toc366578163"></a><a name="_Toc366578757"></a><a name="_Toc366579349"></a><a
name="_Toc366579940"></a><a name="_Toc366580532"></a><a name="_Toc366581123"></a><a
name="_Toc366581715"></a><a name="_Toc351912828"></a><a name="_Toc351914849"></a><a
name="_Toc351915315"></a><a name="_Toc361231372"></a><a name="_Toc361231898"></a><a
name="_Toc362445196"></a><a name="_Toc363909118"></a><a name="_Toc364463543"></a><a
name="_Toc366078147"></a><a name="_Toc366078766"></a><a name="_Toc366079751"></a><a
name="_Toc366080363"></a><a name="_Toc366080972"></a><a name="_Toc366505312"></a><a
name="_Toc366508681"></a><a name="_Toc366513182"></a><a name="_Toc366574371"></a><a
name="_Toc366578164"></a><a name="_Toc366578758"></a><a name="_Toc366579350"></a><a
name="_Toc366579941"></a><a name="_Toc366580533"></a><a name="_Toc366581124"></a><a
name="_Toc366581716"></a><a name="_Toc351912829"></a><a name="_Toc351914850"></a><a
name="_Toc351915316"></a><a name="_Toc361231373"></a><a name="_Toc361231899"></a><a
name="_Toc362445197"></a><a name="_Toc363909119"></a><a name="_Toc364463544"></a><a
name="_Toc366078148"></a><a name="_Toc366078767"></a><a name="_Toc366079752"></a><a
name="_Toc366080364"></a><a name="_Toc366080973"></a><a name="_Toc366505313"></a><a
name="_Toc366508682"></a><a name="_Toc366513183"></a><a name="_Toc366574372"></a><a
name="_Toc366578165"></a><a name="_Toc366578759"></a><a name="_Toc366579351"></a><a
name="_Toc366579942"></a><a name="_Toc366580534"></a><a name="_Toc366581125"></a><a
name="_Toc366581717"></a><a name="_Toc351912830"></a><a name="_Toc351914851"></a><a
name="_Toc351915317"></a><a name="_Toc361231374"></a><a name="_Toc361231900"></a><a
name="_Toc362445198"></a><a name="_Toc363909120"></a><a name="_Toc364463545"></a><a
name="_Toc366078149"></a><a name="_Toc366078768"></a><a name="_Toc366079753"></a><a
name="_Toc366080365"></a><a name="_Toc366080974"></a><a name="_Toc366505314"></a><a
name="_Toc366508683"></a><a name="_Toc366513184"></a><a name="_Toc366574373"></a><a
name="_Toc366578166"></a><a name="_Toc366578760"></a><a name="_Toc366579352"></a><a
name="_Toc366579943"></a><a name="_Toc366580535"></a><a name="_Toc366581126"></a><a
name="_Toc366581718"></a><a name="_Toc351912831"></a><a name="_Toc351914852"></a><a
name="_Toc351915318"></a><a name="_Toc361231375"></a><a name="_Toc361231901"></a><a
name="_Toc362445199"></a><a name="_Toc363909121"></a><a name="_Toc364463546"></a><a
name="_Toc366078150"></a><a name="_Toc366078769"></a><a name="_Toc366079754"></a><a
name="_Toc366080366"></a><a name="_Toc366080975"></a><a name="_Toc366505315"></a><a
name="_Toc366508684"></a><a name="_Toc366513185"></a><a name="_Toc366574374"></a><a
name="_Toc366578167"></a><a name="_Toc366578761"></a><a name="_Toc366579353"></a><a
name="_Toc366579944"></a><a name="_Toc366580536"></a><a name="_Toc366581127"></a><a
name="_Toc366581719"></a><a name="_Toc351912832"></a><a name="_Toc351914853"></a><a
name="_Toc351915319"></a><a name="_Toc361231376"></a><a name="_Toc361231902"></a><a
name="_Toc362445200"></a><a name="_Toc363909122"></a><a name="_Toc364463547"></a><a
name="_Toc366078151"></a><a name="_Toc366078770"></a><a name="_Toc366079755"></a><a
name="_Toc366080367"></a><a name="_Toc366080976"></a><a name="_Toc366505316"></a><a
name="_Toc366508685"></a><a name="_Toc366513186"></a><a name="_Toc366574375"></a><a
name="_Toc366578168"></a><a name="_Toc366578762"></a><a name="_Toc366579354"></a><a
name="_Toc366579945"></a><a name="_Toc366580537"></a><a name="_Toc366581128"></a><a
name="_Toc366581720"></a><a name="_Toc351912833"></a><a name="_Toc351914854"></a><a
name="_Toc351915320"></a><a name="_Toc361231377"></a><a name="_Toc361231903"></a><a
name="_Toc362445201"></a><a name="_Toc363909123"></a><a name="_Toc364463548"></a><a
name="_Toc366078152"></a><a name="_Toc366078771"></a><a name="_Toc366079756"></a><a
name="_Toc366080368"></a><a name="_Toc366080977"></a><a name="_Toc366505317"></a><a
name="_Toc366508686"></a><a name="_Toc366513187"></a><a name="_Toc366574376"></a><a
name="_Toc366578169"></a><a name="_Toc366578763"></a><a name="_Toc366579355"></a><a
name="_Toc366579946"></a><a name="_Toc366580538"></a><a name="_Toc366581129"></a><a
name="_Toc366581721"></a><a name="_Toc351912834"></a><a name="_Toc351914855"></a><a
name="_Toc351915321"></a><a name="_Toc361231378"></a><a name="_Toc361231904"></a><a
name="_Toc362445202"></a><a name="_Toc363909124"></a><a name="_Toc364463549"></a><a
name="_Toc366078153"></a><a name="_Toc366078772"></a><a name="_Toc366079757"></a><a
name="_Toc366080369"></a><a name="_Toc366080978"></a><a name="_Toc366505318"></a><a
name="_Toc366508687"></a><a name="_Toc366513188"></a><a name="_Toc366574377"></a><a
name="_Toc366578170"></a><a name="_Toc366578764"></a><a name="_Toc366579356"></a><a
name="_Toc366579947"></a><a name="_Toc366580539"></a><a name="_Toc366581130"></a><a
name="_Toc366581722"></a><a name="_Toc351912835"></a><a name="_Toc351914856"></a><a
name="_Toc351915322"></a><a name="_Toc361231379"></a><a name="_Toc361231905"></a><a
name="_Toc362445203"></a><a name="_Toc363909125"></a><a name="_Toc364463550"></a><a
name="_Toc366078154"></a><a name="_Toc366078773"></a><a name="_Toc366079758"></a><a
name="_Toc366080370"></a><a name="_Toc366080979"></a><a name="_Toc366505319"></a><a
name="_Toc366508688"></a><a name="_Toc366513189"></a><a name="_Toc366574378"></a><a
name="_Toc366578171"></a><a name="_Toc366578765"></a><a name="_Toc366579357"></a><a
name="_Toc366579948"></a><a name="_Toc366580540"></a><a name="_Toc366581131"></a><a
name="_Toc366581723"></a><a name="_Toc351912836"></a><a name="_Toc351914857"></a><a
name="_Toc351915323"></a><a name="_Toc361231380"></a><a name="_Toc361231906"></a><a
name="_Toc362445204"></a><a name="_Toc363909126"></a><a name="_Toc364463551"></a><a
name="_Toc366078155"></a><a name="_Toc366078774"></a><a name="_Toc366079759"></a><a
name="_Toc366080371"></a><a name="_Toc366080980"></a><a name="_Toc366505320"></a><a
name="_Toc366508689"></a><a name="_Toc366513190"></a><a name="_Toc366574379"></a><a
name="_Toc366578172"></a><a name="_Toc366578766"></a><a name="_Toc366579358"></a><a
name="_Toc366579949"></a><a name="_Toc366580541"></a><a name="_Toc366581132"></a><a
name="_Toc366581724"></a><a name="_Toc351912837"></a><a name="_Toc351914858"></a><a
name="_Toc351915324"></a><a name="_Toc361231381"></a><a name="_Toc361231907"></a><a
name="_Toc362445205"></a><a name="_Toc363909127"></a><a name="_Toc364463552"></a><a
name="_Toc366078156"></a><a name="_Toc366078775"></a><a name="_Toc366079760"></a><a
name="_Toc366080372"></a><a name="_Toc366080981"></a><a name="_Toc366505321"></a><a
name="_Toc366508690"></a><a name="_Toc366513191"></a><a name="_Toc366574380"></a><a
name="_Toc366578173"></a><a name="_Toc366578767"></a><a name="_Toc366579359"></a><a
name="_Toc366579950"></a><a name="_Toc366580542"></a><a name="_Toc366581133"></a><a
name="_Toc366581725"></a><a name="_Toc351912838"></a><a name="_Toc351914859"></a><a
name="_Toc351915325"></a><a name="_Toc361231382"></a><a name="_Toc361231908"></a><a
name="_Toc362445206"></a><a name="_Toc363909128"></a><a name="_Toc364463553"></a><a
name="_Toc366078157"></a><a name="_Toc366078776"></a><a name="_Toc366079761"></a><a
name="_Toc366080373"></a><a name="_Toc366080982"></a><a name="_Toc366505322"></a><a
name="_Toc366508691"></a><a name="_Toc366513192"></a><a name="_Toc366574381"></a><a
name="_Toc366578174"></a><a name="_Toc366578768"></a><a name="_Toc366579360"></a><a
name="_Toc366579951"></a><a name="_Toc366580543"></a><a name="_Toc366581134"></a><a
name="_Toc366581726"></a><a name="_Toc351912839"></a><a name="_Toc351914860"></a><a
name="_Toc351915326"></a><a name="_Toc361231383"></a><a name="_Toc361231909"></a><a
name="_Toc362445207"></a><a name="_Toc363909129"></a><a name="_Toc364463554"></a><a
name="_Toc366078158"></a><a name="_Toc366078777"></a><a name="_Toc366079762"></a><a
name="_Toc366080374"></a><a name="_Toc366080983"></a><a name="_Toc366505323"></a><a
name="_Toc366508692"></a><a name="_Toc366513193"></a><a name="_Toc366574382"></a><a
name="_Toc366578175"></a><a name="_Toc366578769"></a><a name="_Toc366579361"></a><a
name="_Toc366579952"></a><a name="_Toc366580544"></a><a name="_Toc366581135"></a><a
name="_Toc366581727"></a><a name="_Toc351912840"></a><a name="_Toc351914861"></a><a
name="_Toc351915327"></a><a name="_Toc361231384"></a><a name="_Toc361231910"></a><a
name="_Toc362445208"></a><a name="_Toc363909130"></a><a name="_Toc364463555"></a><a
name="_Toc366078159"></a><a name="_Toc366078778"></a><a name="_Toc366079763"></a><a
name="_Toc366080375"></a><a name="_Toc366080984"></a><a name="_Toc366505324"></a><a
name="_Toc366508693"></a><a name="_Toc366513194"></a><a name="_Toc366574383"></a><a
name="_Toc366578176"></a><a name="_Toc366578770"></a><a name="_Toc366579362"></a><a
name="_Toc366579953"></a><a name="_Toc366580545"></a><a name="_Toc366581136"></a><a
name="_Toc366581728"></a><a name="_Toc351912841"></a><a name="_Toc351914862"></a><a
name="_Toc351915328"></a><a name="_Toc361231385"></a><a name="_Toc361231911"></a><a
name="_Toc362445209"></a><a name="_Toc363909131"></a><a name="_Toc364463556"></a><a
name="_Toc366078160"></a><a name="_Toc366078779"></a><a name="_Toc366079764"></a><a
name="_Toc366080376"></a><a name="_Toc366080985"></a><a name="_Toc366505325"></a><a
name="_Toc366508694"></a><a name="_Toc366513195"></a><a name="_Toc366574384"></a><a
name="_Toc366578177"></a><a name="_Toc366578771"></a><a name="_Toc366579363"></a><a
name="_Toc366579954"></a><a name="_Toc366580546"></a><a name="_Toc366581137"></a><a
name="_Toc366581729"></a><a name="_Toc351912842"></a><a name="_Toc351914863"></a><a
name="_Toc351915329"></a><a name="_Toc361231386"></a><a name="_Toc361231912"></a><a
name="_Toc362445210"></a><a name="_Toc363909132"></a><a name="_Toc364463557"></a><a
name="_Toc366078161"></a><a name="_Toc366078780"></a><a name="_Toc366079765"></a><a
name="_Toc366080377"></a><a name="_Toc366080986"></a><a name="_Toc366505326"></a><a
name="_Toc366508695"></a><a name="_Toc366513196"></a><a name="_Toc366574385"></a><a
name="_Toc366578178"></a><a name="_Toc366578772"></a><a name="_Toc366579364"></a><a
name="_Toc366579955"></a><a name="_Toc366580547"></a><a name="_Toc366581138"></a><a
name="_Toc366581730"></a><a name="_Toc351912843"></a><a name="_Toc351914864"></a><a
name="_Toc351915330"></a><a name="_Toc361231387"></a><a name="_Toc361231913"></a><a
name="_Toc362445211"></a><a name="_Toc363909133"></a><a name="_Toc364463558"></a><a
name="_Toc366078162"></a><a name="_Toc366078781"></a><a name="_Toc366079766"></a><a
name="_Toc366080378"></a><a name="_Toc366080987"></a><a name="_Toc366505327"></a><a
name="_Toc366508696"></a><a name="_Toc366513197"></a><a name="_Toc366574386"></a><a
name="_Toc366578179"></a><a name="_Toc366578773"></a><a name="_Toc366579365"></a><a
name="_Toc366579956"></a><a name="_Toc366580548"></a><a name="_Toc366581139"></a><a
name="_Toc366581731"></a><a name="_Toc351912844"></a><a name="_Toc351914865"></a><a
name="_Toc351915331"></a><a name="_Toc361231388"></a><a name="_Toc361231914"></a><a
name="_Toc362445212"></a><a name="_Toc363909134"></a><a name="_Toc364463559"></a><a
name="_Toc366078163"></a><a name="_Toc366078782"></a><a name="_Toc366079767"></a><a
name="_Toc366080379"></a><a name="_Toc366080988"></a><a name="_Toc366505328"></a><a
name="_Toc366508697"></a><a name="_Toc366513198"></a><a name="_Toc366574387"></a><a
name="_Toc366578180"></a><a name="_Toc366578774"></a><a name="_Toc366579366"></a><a
name="_Toc366579957"></a><a name="_Toc366580549"></a><a name="_Toc366581140"></a><a
name="_Toc366581732"></a><a name="_Toc351912845"></a><a name="_Toc351914866"></a><a
name="_Toc351915332"></a><a name="_Toc361231389"></a><a name="_Toc361231915"></a><a
name="_Toc362445213"></a><a name="_Toc363909135"></a><a name="_Toc364463560"></a><a
name="_Toc366078164"></a><a name="_Toc366078783"></a><a name="_Toc366079768"></a><a
name="_Toc366080380"></a><a name="_Toc366080989"></a><a name="_Toc366505329"></a><a
name="_Toc366508698"></a><a name="_Toc366513199"></a><a name="_Toc366574388"></a><a
name="_Toc366578181"></a><a name="_Toc366578775"></a><a name="_Toc366579367"></a><a
name="_Toc366579958"></a><a name="_Toc366580550"></a><a name="_Toc366581141"></a><a
name="_Toc366581733"></a><a name="_Toc351912846"></a><a name="_Toc351914867"></a><a
name="_Toc351915333"></a><a name="_Toc361231390"></a><a name="_Toc361231916"></a><a
name="_Toc362445214"></a><a name="_Toc363909136"></a><a name="_Toc364463561"></a><a
name="_Toc366078165"></a><a name="_Toc366078784"></a><a name="_Toc366079769"></a><a
name="_Toc366080381"></a><a name="_Toc366080990"></a><a name="_Toc366505330"></a><a
name="_Toc366508699"></a><a name="_Toc366513200"></a><a name="_Toc366574389"></a><a
name="_Toc366578182"></a><a name="_Toc366578776"></a><a name="_Toc366579368"></a><a
name="_Toc366579959"></a><a name="_Toc366580551"></a><a name="_Toc366581142"></a><a
name="_Toc366581734"></a><a name="_Toc351912847"></a><a name="_Toc351914868"></a><a
name="_Toc351915334"></a><a name="_Toc361231391"></a><a name="_Toc361231917"></a><a
name="_Toc362445215"></a><a name="_Toc363909137"></a><a name="_Toc364463562"></a><a
name="_Toc366078166"></a><a name="_Toc366078785"></a><a name="_Toc366079770"></a><a
name="_Toc366080382"></a><a name="_Toc366080991"></a><a name="_Toc366505331"></a><a
name="_Toc366508700"></a><a name="_Toc366513201"></a><a name="_Toc366574390"></a><a
name="_Toc366578183"></a><a name="_Toc366578777"></a><a name="_Toc366579369"></a><a
name="_Toc366579960"></a><a name="_Toc366580552"></a><a name="_Toc366581143"></a><a
name="_Toc366581735"></a><a name="_Toc322911372"></a><a name="_Toc322911683"></a><a
name="_Toc322911933"></a><a name="_Toc322912222"></a><a name="_Toc329093071"></a><a
name="_Toc332701584"></a><a name="_Toc332701888"></a><a name="_Toc332711687"></a><a
name="_Toc332711989"></a><a name="_Toc332712290"></a><a name="_Toc332724206"></a><a
name="_Toc332724506"></a><a name="_Toc341102802"></a><a name="_Toc347241537"></a><a
name="_Toc347744730"></a><a name="_Toc348984513"></a><a name="_Toc348984818"></a><a
name="_Toc349037982"></a><a name="_Toc349038284"></a><a name="_Toc349042777"></a><a
name="_Toc349642189"></a><a name="_Toc351912848"></a><a name="_Toc351914869"></a><a
name="_Toc351915335"></a><a name="_Toc361231392"></a><a name="_Toc361231918"></a><a
name="_Toc362445216"></a><a name="_Toc363909138"></a><a name="_Toc364463563"></a><a
name="_Toc366078167"></a><a name="_Toc366078786"></a><a name="_Toc366079771"></a><a
name="_Toc366080383"></a><a name="_Toc366080992"></a><a name="_Toc366505332"></a><a
name="_Toc366508701"></a><a name="_Toc366513202"></a><a name="_Toc366574391"></a><a
name="_Toc366578184"></a><a name="_Toc366578778"></a><a name="_Toc366579370"></a><a
name="_Toc366579961"></a><a name="_Toc366580553"></a><a name="_Toc366581144"></a><a
name="_Toc366581736"></a><a name="_Properties_for_Nillable"></a>13.16<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties for
Nillable Elements</h2>
<p class=nobreak>These properties are used when the XSD 'nillable' property of
an element is 'true', and they control when and how the representation data are
interpreted as having the logical meaning 'nil'. </p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property<span style='color:black'> Name</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>nilKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'literalValue', 'logicalValue',
'literalCharacter'. </p>
<p class=MsoNormal>Used when XSD nillable is 'true'.</p>
<p class=MsoNormal>Specifies how dfdl:nilValue is interpreted to represent
the nil value in the data stream. </p>
<p class=MsoNormal>If 'literalCharacter' then dfdl:nilValue specifies a
single character or a single byte that, when repeated to the length of the
element, is the nil value. 'literalCharacter' may only be specified for
fixed-length elements, otherwise it is a Schema Definition Error..</p>
<p class=MsoNormal>If 'literalValue' then dfdl:nilValue specifies a list of
DFDL literal strings that are the possible representations for nil. </p>
<p class=MsoNormal>If 'logicalValue' then dfdl:nilValue specifies a list of
logical values that are the possible logical values for nil.&nbsp; </p>
<p class=MsoNormal>Complex elements can be nillable, but dfdl:nilKind can
only be 'literalValue' and dfdl:nilValue must be &quot;%ES;&quot;. It is a
Schema Definition Error otherwise. </p>
<p class=MsoNormal>Annotation: dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>nilValue</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals, List of Logical Values, DFDL
String Literal </p>
<p class=MsoNormal>Specifies the text strings that are the possible literal
or logical nil values of the element.&nbsp; </p>
<p class=MsoNormal>If dfdl:nilKind is 'literalValue' then dfdl:nilValue
specifies a whitespace separated list of DFDL literal strings that are the
possible representations for nil. On parsing the element value is nil if the
trimmed data matches one of the string literals in the list. On unparsing if
the element value is nil the first string literal in the list is output. </p>
<p class=MsoNormal>If dfdl:nilKind is 'logicalValue' then dfdl:nilValue
specifies a whitespace separated list of logical values that are the possible
logical values for nil. On parsing the element value is nil if the data,
converted to its logical type, matches any of the logical values in the list.
On unparsing if the element value is nil, the first value from the list is
converted to its physical representation and output.</p>
<p class=MsoNormal>If dfdl:nilKind is&nbsp; 'literalCharacter' then
dfdl:nilValue specifies a single character or byte that, when repeated to the
length of the element, is the nil representation. If a character, then it can
be specified using a literal character or using DFDL entities. If a character
is specified when dfdl:lengthUnits is 'bytes' then the dfdl:nilValue must be
a single-byte character. To specify a byte, it must be specified using a
single &quot;%#r;&quot; entity. If a byte is specified when dfdl:lengthUnits
is 'characters' then the dfdl:encoding must be a fixed-width encoding. </p>
<p class=MsoNormal>On parsing, the element value is nil if all characters in
the untrimmed data content match the dfdl:nilValue character . On unparsing,
if the element value is nil the dfdl:nilValue character is output to the
needed length. &nbsp;</p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>There are
restrictions on the string literal syntax of dfdl:nilValue. </p>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When dfdl:nilKind
is literalValue and text representation: </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>DFDL character entities are allowed</li>
<li class=MsoNormal>The DFDL byte value entity ( %#rXX; ) is allowed</li>
<li class=MsoNormal>DFDL Character classes NL, WSP, WSP+, WSP*, and ES are allowed.</li>
</ul>
<p class=MsoNormal>When dfdl:nilKind is literal value and binary representation:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>DFDL character entities are allowed</li>
<li class=MsoNormal>The DFDL byte value entity ( %#rXX; ) is allowed</li>
<li class=MsoNormal>DFDL Character class ES is allowed.</li>
<li class=MsoNormal>Other DFDL Character classes NL, WSP, WSP+, and WSP*,
are not allowed.</li>
</ul>
<p class=MsoNormal style='text-autospace:ideograph-numeric'>When dfdl:nilKind
is literalCharacter and text representation: </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>DFDL character entities are allowed</li>
<li class=MsoNormal>The DFDL byte value entity ( %#rXX; ) is allowed.</li>
<li class=MsoNormal>DFDL Character classes&nbsp; NL, WSP, WSP+, WSP*, and ES
are not allowed.</li>
</ul>
<p class=MsoNormal>When dfdl:nilKind is literalCharacter and binary representation:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>DFDL character entities are allowed</li>
<li class=MsoNormal>The DFDL byte value entity ( %#rXX; ) is allowed</li>
<li class=MsoNormal>DFDL Character classes NL, WSP, WSP+, WSP*, and ES are
not allowed.</li>
</ul>
<p class=MsoNormal>dfdl:nilValue is sensitive to dfdl:ignoreCase when
dfdl:nilKind is 'literalValue' or 'logicalValue', but not when dfdl:nilKind
is 'literalCharacter'</p>
<p class=MsoNormal>Complex elements can be nillable, but dfdl:nilKind can
only be 'literalValue' and dfdl:nilValue must be &quot;%ES;&quot;. It is a
Schema Definition Error otherwise. </p>
<p class=MsoNormal>Annotation: dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>nilValueDelimiterPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'none', 'initiator', 'terminator' or
'both'.</p>
<p class=MsoNormal>Indicates that when the value nil is represented, an
initiator (if one is defined), a terminator (if one is defined), both an
initiator and a terminator (if defined) or neither must be present.</p>
<p class=MsoNormal>This property enables distinguishing the nil
representation from the representation of a value or an empty representation
based on presence or absence of the initiator and terminator. </p>
<p class=MsoNormal>Ignored if both dfdl:initiator and dfdl:terminator are
&quot;&quot; (empty string).</p>
<p class=MsoNormal>Ignored if dfdl:nilKind is set to 'logicalValue' In this
case the DFDL processor treats a nil representation like any other
representation of the element in that it expects delimiters when parsing,
outputs them when unparsing.</p>
<p class=MsoNormal>'initiator' indicates that, on parsing, the dfdl:initiator
followed by a dfdl:nilValue indicates that a nil representation is present.
It also indicates that on unparsing when the logical value is nil that the
dfdl:initiator is output followed by the first dfdl:nilValue.</p>
<p class=MsoNormal>'terminator' indicates that, on parsing, a dfdl:nilValue
followed by the dfdl:terminator indicates that a nil representation is
present. It also indicates that on unparsing when the logical value is nil
the first dfdl:nilValue followed by the dfdl:terminator is output.</p>
<p class=MsoNormal>'both' indicates&nbsp; that, on parsing, both the
dfdl:initiator and dfdl:terminator must be present with a dfdl:nilValue to
indicate that a nil representation is present. On unparsing the
dfdl:initiator followed by the first dfdl:nilValue, followed by the
dfdl:terminator is output.</p>
<p class=MsoNormal>'none' indicates that a dfdl:nilValue without any
dfdl:initiator or dfdl:terminator indicates that a nil representation is
present. On unparsing the first dfdl:nilValue is output without any
dfdl:initiator or dfdl:terminator.</p>
<p class=MsoNormal>The value of dfdl:nilValueDelimiterPolicy MUST only be
checked if there is a dfdl:initiator or dfdl:terminator in scope. If so, and
dfdl:nilValueDelimiterPolicy is not set, it is a Schema Definition Error. If
dfdl:initiator is not &quot;&quot; and dfdl:terminator is &quot;&quot; and
dfdl:nilValueDelimiterPolicy is 'terminator' it is a Schema Definition Error.
If dfdl:terminator is not &quot;&quot; and dfdl:initiator is &quot;&#8221;
and dfdl:nilValueDelimiterPolicy is 'initiator' it is a Schema Definition
Error. It is not a Schema Definition Error if dfdl:nilValueDelimiterPolicy is
'both' and one or both of dfdl:initiator and dfdl:terminator is &quot;&quot;.
This is to accommodate the common use of setting 'both' as a schema-wide
setting.</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:nilValueDelimiterPolicy
is set to 'none' or 'terminator' when the parent xs:sequence has
dfdl:initiatedContent 'yes'.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>useNilForDefault</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>When the conditions for applying a simple element default
are satisfied, this property controls whether to set the Infoset item <b>[nilled]</b>
boolean member, or to use the XSD default or fixed properties to obtain a
data value.&nbsp; </p>
<p class=MsoNormal>This property has precedence over the XSD default and XSD
fixed properties. It is only used, and must be defined, if the XSD nillable
property is 'true'.</p>
<p class=MsoNormal>Defaulting occurs as described in Section 9.4 <span class=MsoHyperlink>Element Defaults</span> with nil as the default value. The
dfdl:nilValue property must specify at least one nil value otherwise it is a
Schema Definition Error. The dfdl:nilKind property may be any of its values. </p>
<p class=MsoNormal>Annotation: dfdl:element (simpleType)</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc177399107"></a><a name="_Toc175057394"></a><a
name="_Toc199516331"></a><a name="_Toc194983994"></a><a name="_Toc243112843"></a><a
name="_Ref254775881"></a><a name="_Toc349042782"></a><a name="_Toc322911374"></a><a
name="_Toc322911685"></a><a name="_Toc322911935"></a><a name="_Toc322912224"></a><a
name="_Toc329093073"></a><a name="_Toc332701586"></a><a name="_Toc332701890"></a><a
name="_Toc332711689"></a><a name="_Toc332711991"></a><a name="_Toc332712292"></a><a
name="_Toc332724208"></a><a name="_Toc332724508"></a><a name="_Toc341102804"></a><a
name="_Toc347241539"></a><a name="_Toc347744732"></a><a name="_Toc348984515"></a><a
name="_Toc348984820"></a><a name="_Toc349037984"></a><a name="_Toc349038286"></a><a
name="_Toc349042779"></a><a name="_Toc349642191"></a><a name="_Toc351912850"></a><a
name="_Toc351914871"></a><a name="_Toc351915337"></a><a name="_Toc361231394"></a><a
name="_Toc361231920"></a><a name="_Toc362445218"></a><a name="_Toc363909140"></a><a
name="_Toc364463565"></a><a name="_Toc366078169"></a><a name="_Toc366078788"></a><a
name="_Toc366079773"></a><a name="_Toc366080385"></a><a name="_Toc366080994"></a><a
name="_Toc366505334"></a><a name="_Toc366508703"></a><a name="_Toc366513204"></a><a
name="_Toc366574393"></a><a name="_Toc366578186"></a><a name="_Toc366578780"></a><a
name="_Toc366579372"></a><a name="_Toc366579963"></a><a name="_Toc366580555"></a><a
name="_Toc366581146"></a><a name="_Toc366581738"></a><a name="_Toc322911375"></a><a
name="_Toc322911686"></a><a name="_Toc322911936"></a><a name="_Toc322912225"></a><a
name="_Toc329093074"></a><a name="_Toc332701587"></a><a name="_Toc332701891"></a><a
name="_Toc332711690"></a><a name="_Toc332711992"></a><a name="_Toc332712293"></a><a
name="_Toc332724209"></a><a name="_Toc332724509"></a><a name="_Toc341102805"></a><a
name="_Toc347241540"></a><a name="_Toc347744733"></a><a name="_Toc348984516"></a><a
name="_Toc348984821"></a><a name="_Toc349037985"></a><a name="_Toc349038287"></a><a
name="_Toc349042780"></a><a name="_Toc349642192"></a><a name="_Toc351912851"></a><a
name="_Toc351914872"></a><a name="_Toc351915338"></a><a name="_Toc361231395"></a><a
name="_Toc361231921"></a><a name="_Toc362445219"></a><a name="_Toc363909141"></a><a
name="_Toc364463566"></a><a name="_Toc366078170"></a><a name="_Toc366078789"></a><a
name="_Toc366079774"></a><a name="_Toc366080386"></a><a name="_Toc366080995"></a><a
name="_Toc366505335"></a><a name="_Toc366508704"></a><a name="_Toc366513205"></a><a
name="_Toc366574394"></a><a name="_Toc366578187"></a><a name="_Toc366578781"></a><a
name="_Toc366579373"></a><a name="_Toc366579964"></a><a name="_Toc366580556"></a><a
name="_Toc366581147"></a><a name="_Toc366581739"></a><a name="_Toc322911376"></a><a
name="_Toc322911687"></a><a name="_Toc322911937"></a><a name="_Toc322912226"></a><a
name="_Toc329093075"></a><a name="_Toc332701588"></a><a name="_Toc332701892"></a><a
name="_Toc332711691"></a><a name="_Toc332711993"></a><a name="_Toc332712294"></a><a
name="_Toc332724210"></a><a name="_Toc332724510"></a><a name="_Toc341102806"></a><a
name="_Toc347241541"></a><a name="_Toc347744734"></a><a name="_Toc348984517"></a><a
name="_Toc348984822"></a><a name="_Toc349037986"></a><a name="_Toc349038288"></a><a
name="_Toc349042781"></a><a name="_Toc349642193"></a><a name="_Toc351912852"></a><a
name="_Toc351914873"></a><a name="_Toc351915339"></a><a name="_Toc361231396"></a><a
name="_Toc361231922"></a><a name="_Toc362445220"></a><a name="_Toc363909142"></a><a
name="_Toc364463567"></a><a name="_Toc366078171"></a><a name="_Toc366078790"></a><a
name="_Toc366079775"></a><a name="_Toc366080387"></a><a name="_Toc366080996"></a><a
name="_Toc366505336"></a><a name="_Toc366508705"></a><a name="_Toc366513206"></a><a
name="_Toc366574395"></a><a name="_Toc366578188"></a><a name="_Toc366578782"></a><a
name="_Toc366579374"></a><a name="_Toc366579965"></a><a name="_Toc366580557"></a><a
name="_Toc366581148"></a><a name="_Toc366581740"></a>Table 43
Properties for Nillable Elements</p>
<p class=nobreak>The DFDL element defaults processing uses XSD default, XSD
fixed or dfdl:useNilForDefault to provide a default value. See Section <span class=MsoHyperlink>9.4</span> Element
Defaults for a full description.</p>
<h1><a name="_Toc199516339"></a><a name="_Toc194983998"></a><a
name="_Toc243112845"></a><a name="_Ref255476240"></a><a name="_Toc349042784"></a><a
name="_Ref38542599"></a><a name="_Ref38542608"></a><a name="_Toc62570181"></a><a
name="_Toc322911689"></a><a name="_Toc322912228"></a><a name="_Toc329093077"></a><a
name="_Toc332701590"></a><a name="_Toc332701894"></a><a name="_Toc332711693"></a><a
name="_Toc332711995"></a><a name="_Toc332712296"></a><a name="_Toc332724212"></a><a
name="_Toc332724512"></a><a name="_Toc341102808"></a><a name="_Toc347241543"></a><a
name="_Toc347744736"></a><a name="_Toc348984519"></a><a name="_Toc348984824"></a><a
name="_Toc349037988"></a><a name="_Toc349038290"></a><a name="_Toc349042783"></a><a
name="_Toc349642195"></a><a name="_Toc351912854"></a><a name="_Toc351914875"></a><a
name="_Toc351915341"></a><a name="_Toc361231398"></a><a name="_Toc361231924"></a><a
name="_Toc362445222"></a><a name="_Toc363909144"></a><a name="_Toc364463569"></a><a
name="_Toc366078173"></a><a name="_Toc366078792"></a><a name="_Toc366079777"></a><a
name="_Toc366080389"></a><a name="_Toc366080998"></a><a name="_Toc366505338"></a><a
name="_Toc366508707"></a><a name="_Toc366513208"></a><a name="_Toc366574397"></a><a
name="_Toc366578190"></a><a name="_Toc366578784"></a><a name="_Toc366579376"></a><a
name="_Toc366579967"></a><a name="_Toc366580559"></a><a name="_Toc366581150"></a><a
name="_Toc366581742"></a><a name="_Toc199515707"></a><a name="_Toc199515895"></a><a
name="_Toc199516334"></a><a name="_Toc199841890"></a><a name="_Toc199844456"></a><a
name="_Toc199515708"></a><a name="_Toc199515896"></a><a name="_Toc199516335"></a><a
name="_Toc199841891"></a><a name="_Toc199844457"></a><a name="_Toc199515709"></a><a
name="_Toc199515897"></a><a name="_Toc199516336"></a><a name="_Toc199841892"></a><a
name="_Toc199844458"></a><a name="_Toc199515710"></a><a name="_Toc199515898"></a><a
name="_Toc199516337"></a><a name="_Toc199841893"></a><a name="_Toc199844459"></a><a
name="_Sequence_Groups"></a>14<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Sequence Groups</h1>
<p class=MsoNormal>The following properties are specific to sequences.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>sequenceKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'ordered', 'unordered' </p>
<p class=MsoNormal>When 'ordered', this property means that the contained
items of the sequence are expected in the same order that they appear in the
schema, which is called schema-definition-order.</p>
<p class=MsoNormal>When 'unordered', this property means that the items of
the sequence are expected in any order. Repeating occurrences of the same
element do not need to be contiguous. The children of an unordered sequence must
be xs:element otherwise it is a Schema Definition Error.</p>
<p class=MsoNormal>Annotation: dfdl:sequence, dfdl:group (sequence)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>initiatedContent</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>When 'yes' indicates that all the children of the sequence
are initiated. It is a Schema Definition Error if any children have their
dfdl:initiator property set to the empty string.</p>
<p class=MsoNormal>If the child is optional then it is known to exist when
its initiator has been found. Any subsequent error parsing the child does not
cause the parser to backtrack to try other alternatives.</p>
<p class=MsoNormal>When 'no', the children of the sequence may have their
dfdl:initiator property set to the empty string.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:sequence,
dfdl:choice, dfdl:group </p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc175057395"></a><a name="_Toc199516340"></a><a
name="_Toc194983999">Table </a>44 Properties for Sequence Groups</p>
<p class=nobreak>A sequence can have a dfdl:initiator and/or a dfdl:terminator
as described earlier. </p>
<h2><a name="_Toc243112846"></a><a name="_Toc349042785"></a><a
name="_Toc62570182">14.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Empty Sequences</a></h2>
<p class=MsoNormal>A sequence having no children is syntactically legal in
DFDL. In the data stream, such a sequence can have non-zero length <b><i>LeftFraming</i></b>
and <b><i>RightFraming</i></b> regions, but the SequenceContent region in
between must be empty. It is a Processing Error if the SequenceContent<em><span
style='font-family:"Arial",sans-serif'> </span></em>region of an empty sequence
has non-zero length when parsing.</p>
<p class=MsoNormal>XML schema does not define an empty sequence that is the
content model of a complex type definition as effective content so any DFDL
annotations on such a construct would be ignored. It is a Schema Definition
Error if the empty sequence is the content model of a complex type, or if a
complex type has nothing in its content model at all.</p>
<p class=MsoBodyText>A hidden group reference is indicated in DFDL using an
empty sequence such as </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; </span><span
class=SourceText><span lang=EN-GB style='color:black'>&lt;xs:sequence
dfdl:hiddenGroupRef=&quot;QName&quot;/&gt;</span></span><span lang=EN-GB
style='color:black'> </span></p>
</div>
<p class=MsoBodyText>To XML Schema this is an empty sequence group; hence it is
a Schema Definition Error if this appears as the model group of a complex type.
Otherwise this is not considered an empty sequence, but a group reference.</p>
<b><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></b>
<h2><a name="_Ref362445886"></a><a name="_Ref362445872"></a><a
name="_Toc62570183"></a><a name="_Ref255896230"></a><a name="_Ref255896225"></a><a
name="_Ref255896215"></a><a name="_Toc243112848"></a><a name="_Toc194984001"></a><a
name="_Toc199516342"></a><a name="_Toc177399108"></a><a name="_Toc349042787"></a><a
name="_Toc322911380"></a><a name="_Toc322911692"></a><a name="_Toc322911941"></a><a
name="_Toc322912231"></a><a name="_Toc329093080"></a><a name="_Toc332701593"></a><a
name="_Toc332701897"></a><a name="_Toc332711696"></a><a name="_Toc332711998"></a><a
name="_Toc332712299"></a><a name="_Toc332724215"></a><a name="_Toc332724515"></a><a
name="_Toc341102811"></a><a name="_Toc347241546"></a><a name="_Toc347744739"></a><a
name="_Toc348984522"></a><a name="_Toc348984827"></a><a name="_Toc349037991"></a><a
name="_Toc349038293"></a><a name="_Toc349042786"></a><a name="_Toc349642198"></a><a
name="_Toc351912857"></a><a name="_Toc351914878"></a><a name="_Toc351915344"></a><a
name="_Toc361231401"></a><a name="_Toc361231927"></a><a name="_Toc362445225"></a><a
name="_Toc363909147"></a><a name="_Toc364463572"></a><a name="_Toc366078176"></a><a
name="_Toc366078795"></a><a name="_Toc366079780"></a><a name="_Toc366080392"></a><a
name="_Toc366081001"></a><a name="_Toc366505341"></a><a name="_Toc366508710"></a><a
name="_Toc366513211"></a><a name="_Toc366574400"></a><a name="_Toc366578193"></a><a
name="_Toc366578787"></a><a name="_Toc366579379"></a><a name="_Toc366579970"></a><a
name="_Toc366580562"></a><a name="_Toc366581153"></a><a name="_Toc366581745"></a>14.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Sequence Groups with Separators</h2>
<p class=nobreak>Additional properties apply to sequence groups that use text
delimiters to separate one occurrence of a member of the group from the next.
Such a delimiter is called a separator. DFDL provides several properties that
control the parsing and writing of separators, and satisfy the requirement to
model sequences where: </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>A separator has alternative potential representations in
the data.</li>
<li class=MsoNormal>A separator is placed before, after, or between
occurrences in the data.</li>
<li class=MsoNormal>Separators are used to indicate the position of
occurrences in the data</li>
</ol>
<p class=MsoNormal>These requirements are addressed by the properties
dfdl:separator, dfdl:separatorPosition and dfdl:separatorSuppressionPolicy, as
described below.</p>
<p class=MsoNormal>These properties combine to define the syntax for a sequence
group with dfdl:sequenceKind 'ordered'. Not all combinations of the properties
give rise to consistent syntax, so some combinations are disallowed and give
rise to a Schema Definition Error. </p>
<p class=MsoNormal style='text-autospace:none'>In some sequences, the presence
of separators alone is enough to establish occurrences within the sequence.
Such a sequence is called a <em><span style='font-family:"Arial",sans-serif'>positional</span></em>
sequence. </p>
<p class=MsoNormal style='text-autospace:none'><b><i>Positional sequence - </i></b>Each
occurrence in the sequence can be identified by its position in the data.
Typically, the components of such a sequence do not have an initiator. In some
such sequences, the separators for optional zero-length occurrences may or must
be omitted when at the end of the group. In DFDL, a sequence is considered
positional if it contains only required elements and/or optional and array
elements that have dfdl:occursCountKind 'implicit', 'fixed' or 'expression',
and it has dfdl:separatorSuppressionPolicy 'never', 'trailingEmptyStrict'
&nbsp;or 'trailingEmpty'.</p>
<p class=MsoNormal style='text-autospace:none'><b><i>Non-positional sequence</i></b>
- Occurrences in the sequence cannot be identified by their position in the
data alone. Often the components of such a sequence have an initiator. Such
sequences sometimes allow the separator to be omitted for optional zero-length
occurrences anywhere in the sequence. Speculative parsing might need to be
employed by the parser to identify each occurrence.&nbsp; In DFDL, a sequence
is non-positional if it contains any optional or array elements that have
dfdl:occursCountKind 'parsed' or 'stopValue', and/or it has
dfdl:separatorSuppressionPolicy 'anyEmpty'. </p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>separator</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals or DFDL Expression</p>
<p class=MsoNormal>Specifies a whitespace separated list of alternative DFDL
String Literals that are the possible separators for the sequence. Separators
occur in the data either before, between or after all occurrences of the
elements or groups that are the children of the sequence, in accordance with
dfdl:separatorPosition and dfdl:separatorSuppressionPolicy. Elements with
dfdl:inputValueCalc have no representation in the data stream, and so never
have an associated separator.</p>
<p class=MsoNormal>This property can be computed by way of an expression
which returns a string of whitespace separated values. The expression must
not contain forward references to elements which have not yet been processed.
It is a Schema Definition Error if the expression returns an empty string.</p>
<p class=MsoNormal><span style='color:black'>This property can be used to
determine the length of an element as described in Section </span><a
href="#_dfdl:lengthKind_'delimited'">12.3.2</a><span style='color:black'>
dfdl:lengthKind 'delimited'.</span></p>
<p class=MsoNormal>Each string literal in the list, whether apparent in the
schema, or returned as the value of an expression, is restricted to allow
only certain kinds of DFDL String Literal syntax:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL character entities are allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Byte Value entities ( %#rXX; ) are allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character Class ES is not allowed.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Character Classes NL, WSP, WSP+, and WSP* are allowed. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The WSP* entity cannot appear on its own as one of the string
literals in the list when determining the length of a component by scanning
for delimiters.</p>
<p class=MsoNormal>If the above rules are not followed it is a Schema
Definition Error.</p>
<p class=MsoNormal>The <b><i>Separator, PrefixSeparator </i></b>and<b><i>
PostfixSeparator </i></b>&nbsp;regions contain one of the strings specified
by the dfdl:separator property. When this property has &quot;&quot; (empty
string) as its value then the separator region is of length zero.</p>
<p class=MsoNormal>When parsing, the list of values is processed in a greedy manner,
meaning it takes all the separators, that is, each of the string literals in the
whitespace separated list, and matches them each against the data. The
separator with the longest match is the one that is selected as having been
'found'. Once a matching separator is found, no other matches are subsequently
attempted (i.e., there is no backtracking).</p>
<p class=MsoNormal>On unparsing the first separator in the list is used as
the separator. </p>
<p class=MsoNormal>If a child element uses an escape scheme, then the escape
scheme also applies to any separator; hence, if the separator appears within
the element value, it is escaped.</p>
<p class=MsoNormal>If dfdl:ignoreCase is 'yes' then the case of the string is
ignored by the parser.</p>
<p class=MsoNormal>Annotation: dfdl:sequence, dfdl:group (sequence)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>separatorPosition</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'infix', 'prefix', 'postfix'</p>
<p class=MsoNormal>'infix' means the separator occurs between the elements in
the <b><i>Separator</i></b> grammar region.</p>
<p class=MsoNormal>'prefix' means the separator occurs before each element in
the <b><i>Separator</i></b> grammar region and the <b><i>PrefixSeparator</i></b>
grammar region.</p>
<p class=MsoNormal>'postfix' means the separator occurs after each element in
the <b><i>Separator</i></b> grammar region and the <b><i>PostfixSeparator</i></b>
grammar region. </p>
<p class=MsoNormal>Annotation: dfdl:sequence, dfdl:group (sequence).</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>separatorSuppressionPolicy</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values 'never', 'anyEmpty', 'trailingEmpty',
'trailingEmptyStrict'</p>
<p class=MsoNormal>Only applicable if dfdl:separator is not &quot;&quot;
(empty string) and dfdl:sequenceKind is 'ordered'. </p>
<p class=MsoNormal>Controls the circumstances when separators are expected in
the data when parsing, or generated when unparsing, if an optional element
occurrence or a group has a zero-length representation. </p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>14.2.1</span> <span
class=MsoHyperlink>Separators and Suppression</span>.</p>
<p class=MsoNormal>When dfdl:sequenceKind is 'unordered' then 'anyEmpty' is
implied.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:sequence,
dfdl:group (sequence)</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc177399109"></a><a name="_Toc175057396"></a><a
name="_Ref274739893"></a><a name="_Ref274739899"></a><a name="_Toc322911382"></a><a
name="_Toc322911694"></a><a name="_Toc322911943"></a><a name="_Toc322912233"></a><a
name="_Toc329093090"></a><a name="_Toc332701603"></a><a name="_Toc332701907"></a><a
name="_Toc332711706"></a><a name="_Toc332712008"></a><a name="_Toc332712309"></a><a
name="_Toc332724225"></a><a name="_Toc332724525"></a><a name="_Toc341102821"></a><a
name="_Toc347241556"></a><a name="_Toc347744749"></a><a name="_Toc348984532"></a><a
name="_Toc348984837"></a><a name="_Toc349038001"></a><a name="_Toc349038303"></a><a
name="_Toc349642200"></a><a name="_Toc177971278"></a><a name="_Toc179335620"></a><a
name="_Toc179788314"></a><a name="_Toc182890424"></a><a name="_Toc182973759"></a><a
name="_Toc183429615"></a><a name="_Toc322911383"></a><a name="_Toc322911695"></a><a
name="_Toc322911944"></a><a name="_Toc322912234"></a><a name="_Toc329093091"></a><a
name="_Toc332701604"></a><a name="_Toc332701908"></a><a name="_Toc332711707"></a><a
name="_Toc332712009"></a><a name="_Toc332712310"></a><a name="_Toc332724226"></a><a
name="_Toc332724526"></a><a name="_Toc341102822"></a><a name="_Toc347241557"></a><a
name="_Toc347744750"></a><a name="_Toc348984533"></a><a name="_Toc348984838"></a><a
name="_Toc349038002"></a><a name="_Toc349038304"></a><a name="_Toc349642201"></a>Table
45 Properties for Sequence Groups with Separators</p>
<h3><a name="_Ref362373313"></a><a name="_Ref362373324"></a><a
name="_Toc62570184"></a><a name="_Toc349042788"><span style='color:black;
font-weight:normal'>14.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Separators</a> and Suppression</h3>
<p class=MsoNormal>When parsing a sequence group that specifies a separator,
the number of occurrences and separators that are expected in the data stream
for a child (element or group) depends on several factors:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Whether element occurrences are optional or required</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Whether the occurrences (element or group) have a zero-length
representation</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Whether occurrences (element or group) are trailing</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Whether the sequence is positional</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The dfdl:occursCountKind of the element</p>
<p class=MsoNormal>Where to expect a separator for optional content of
zero-length is controlled by property dfdl:separatorSuppressionPolicy.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>separator<span style='color:black'>SuppressionPolicy</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Implications</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>never</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Positional sequence where all occurrences must be found in
the data, along with their associated separator. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>trailingEmptyStrict</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Positional sequence where <em><span style='font-family:
"Arial",sans-serif'>trailing occurrences</span></em> that have zero length
representation must be omitted from the data, along with their associated
separator.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>trailingEmpty</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Positional sequence where <em><span style='font-family:
"Arial",sans-serif'>trailing occurrences</span></em> that have zero length
representation may be omitted from the data, along with their associated
separator.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>anyEmpty</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Non-positional sequence where any occurrences that have
zero length representation may be omitted from the data, along with their
associated separator. It must be possible for speculative parsing to identify
which elements are present.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 46 Sequence groups and separator suppression</p>
<p class=MsoNormal>The following are definitions for terminology used in this
section:</p>
<p class=MsoNormal><b><i>Potentially trailing element</i></b><em><span
style='font-family:"Arial",sans-serif'> </span></em>&#8211; An array or
optional element describes an occurrence that is said to be <em><span
style='font-family:"Arial",sans-serif'>potentially trailing</span></em> if the
element can have a zero length representation and is followed in its enclosing
group definition by only these kinds of schema <span style='color:black'>components</span>:</p>
<p class=MsoListParagraphCxSpFirst style='margin-top:0in;margin-right:0in;
margin-bottom:0in;margin-left:39.0pt;text-indent:-.25in'><span
style='color:black'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span style='color:black'>calculated elements (those having
dfdl:inputValueCalc)</span></p>
<p class=MsoListParagraphCxSpMiddle style='margin-top:0in;margin-right:0in;
margin-bottom:0in;margin-left:39.0pt;text-indent:-.25in'><span
style='color:black'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span style='color:black'>additional potentially trailing
elements</span></p>
<p class=MsoListParagraphCxSpLast style='margin-top:0in;margin-right:0in;
margin-bottom:0in;margin-left:39.0pt;text-indent:-.25in'><span
style='color:black'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span style='color:black'>potentially trailing groups</span></p>
<p class=MsoNormal>Intuitively, the array or optional element occurrence could
be last.</p>
<p class=MsoNormal><b><i>Potentially trailing group</i></b><em><span
style='font-family:"Arial",sans-serif'> </span></em>&#8211; A group is said to
be <em><span style='font-family:"Arial",sans-serif'>potentially trailing</span></em>
if the group has no framing and contains only potentially trailing element
declarations/references, or recursively similar sequence or choice groups, and
is followed in its enclosing group definition by only additional potentially
trailing elements or potentially trailing groups.</p>
<p class=MsoNormal><b><i>Trailing or Actually Trailing</i></b> &#8211; An
element occurrence or group occurrence in the data is said to be <i>actually
trailing</i> if it is potentially trailing and has zero-length representation
and is not followed in the data by any other non-zero length element occurrence
or group occurrence limited by the end of the enclosing sequence group.</p>
<p class=MsoNormal>In the sections that follow, it is important to remember
that the dfdl:separatorSuppressionPolicy property is carried on the sequence,
while the XSD minOccurs, XSD maxOccurs and dfdl:occursCountKind properties are
carried on an <em><span style='font-family:"Arial",sans-serif'>element</span></em>
in that sequence.</p>
<h3><a name="_Toc62570185"></a><a name="_Toc349042789"></a><a
name="_Toc361231404"></a><a name="_Toc361231930"></a><a name="_Toc362445228"></a><a
name="_Toc363909150"></a><a name="_Toc364463575"></a><a name="_Toc366078179"></a><a
name="_Toc366078798"></a><a name="_Toc366079783"></a><a name="_Toc366080395"></a><a
name="_Toc366081004"></a><a name="_Toc366505344"></a><a name="_Toc366508713"></a><a
name="_Toc366513214"></a><a name="_Toc366574403"></a><a name="_Toc366578196"></a><a
name="_Toc366578790"></a><a name="_Toc366579382"></a><a name="_Toc366579973"></a><a
name="_Toc366580565"></a><a name="_Toc366581156"></a><a name="_Toc366581748"></a><span
style='color:black;font-weight:normal'>14.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Parsing Sequence Groups with Separators</h3>
<p class=MsoNormal>Parsing child elements is described first. Parsing for child
groups is described in Section <span
class=MsoHyperlink>14.2.2.3</span>.</p>
<p class=MsoNormal>When an element is required and is not an array then one
occurrence is always expected along with its separator. The
dfdl:separatorSuppressionPolicy of the sequence has no effect (nothing is
eligible for suppression). Otherwise the behaviour is dependent on
dfdl:occursCountKind.</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'fixed' then XSD minOccurs must
equal maxOccurs and that many occurrences are always expected along with their
separators. The dfdl:separatorSuppressionPolicy of the sequence has no effect
(nothing is eligible for suppression).</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'expression' the number of
occurrences is given by dfdl:occursCount and exactly that many occurrences are
always expected along with their separators. The
dfdl:separatorSuppressionPolicy of the sequence has no effect (nothing is
eligible for suppression).</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'parsed' any number of
occurrences and their separators are expected. The dfdl:separatorSuppressionPolicy
of the sequence must be 'anyEmpty' and it is a Schema Definition Error
otherwise. </p>
<p class=MsoNormal>When dfdl:occursCountKind is 'stopValue', any number of
occurrences and their separators are expected followed by the stop value and
its separator. The dfdl:separatorSuppressionPolicy of the sequence has no
effect. &nbsp;</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'implicit', between XSD
minOccurs and XSD maxOccurs (inclusive) occurrences and their separators are
expected, according to the dfdl:separatorSuppressionPolicy of the sequence.</p>
<p class=MsoNormal>The behaviour for 'implicit' is more fully expressed in
matrix form. The cells in the matrix give the number of occurrences of element
values that are expected in the data stream when parsing, for the different
values of dfdl:separatorSuppressionPolicy. The number of occurrences also
depends whether XSD maxOccurs is unbounded or not, and the position of the
element in the sequence. The number of separators can be inferred from this, considering
dfdl:separatorPosition.</p>
<div align=center>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr style='page-break-inside:avoid'>
<td width="17%" rowspan=4 style='width:17.98%;border:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><a name="_Toc318471275"><b><span style='font-size:8.0pt'>dfdl:</span></b></a></p>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>separator-Suppression-Policy</span></b></p>
</td>
<td width="82%" colspan=6 style='width:82.02%;border:solid windowtext 1.0pt;
border-left:none;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>dfdl:occursCountKind
'implicit'</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="56%" colspan=4 style='width:56.0%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Potentially Trailing</span></b></p>
</td>
<td width="26%" colspan=2 style='width:26.04%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Not Potentially Trailing</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="26%" colspan=2 style='width:26.56%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs unbounded</span></b></p>
</td>
<td width="29%" colspan=2 style='width:29.44%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs bounded</span></b></p>
</td>
<td width="13%" rowspan=2 style='width:13.02%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs unbounded</span></b></p>
</td>
<td width="13%" rowspan=2 style='width:13.02%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs bounded</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="10%" style='width:10.14%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element not declared last</span></b></p>
</td>
<td width="16%" style='width:16.42%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element declared last</span></b></p>
</td>
<td width="16%" style='width:16.42%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element declared last or
occurrence followed by end-of-group</span></b></p>
</td>
<td width="13%" style='width:13.02%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element not declared last
and occurrence not followed by end-of-group</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="17%" style='width:17.98%;border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>never</span></p>
</td>
<td width="26%" colspan=2 style='width:26.56%;border:none;border-right:solid windowtext 1.0pt;
background:#D6E3BC;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Schema definition error</span></p>
</td>
<td width="29%" colspan=2 style='width:29.44%;border:none;border-right:solid windowtext 1.0pt;
background:#92CDDC;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>&nbsp;</span></p>
</td>
<td width="13%" rowspan=3 style='width:13.02%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#D6E3BC;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Schema definition error</span></p>
</td>
<td width="13%" rowspan=3 style='width:13.02%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#92CDDC;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) ~ Rep(max - min)</span></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="17%" style='width:17.98%;border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>trailingEmptyStrict</span></p>
</td>
<td width="10%" rowspan=2 style='width:10.14%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#D6E3BC;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>&nbsp;</span></p>
</td>
<td width="16%" style='width:16.42%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>RepDef(min) [ ~ Rep(M &lt; INF) ~
RepNonZero(1) ]</span></p>
</td>
<td width="16%" style='width:16.42%;border:solid windowtext 1.0pt;border-left:
none;background:#E5B8B7;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) [ ~ Rep(M &lt;
max - min) ~ RepNonZero(1) ]</span></p>
</td>
<td width="13%" rowspan=2 style='width:13.02%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#92CDDC;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) ~ Rep(max - min)</span></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="17%" style='width:17.98%;border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>trailingEmpty</span></p>
</td>
<td width="16%" rowspan=2 style='width:16.42%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#CCC0D9;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) ~ Rep(M &lt;
INF)</span></p>
</td>
<td width="16%" rowspan=2 style='width:16.42%;border:none;border-bottom:solid windowtext 1.0pt;
background:#FBD4B4;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) ~ Rep(M &lt;=
max - min)</span></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="17%" style='width:17.98%;border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>anyEmpty</span></p>
</td>
<td width="10%" style='width:10.14%;border:none;border-bottom:solid windowtext 1.0pt;
background:#CCC0D9;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>&nbsp;</span></p>
</td>
<td width="13%" style='width:13.02%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#FBD4B4;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt'>&nbsp;</span></p>
</td>
<td width="13%" style='width:13.02%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#CCC0D9;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) ~ Rep(M &lt;
INF)</span></p>
</td>
<td width="13%" style='width:13.02%;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
background:#FBD4B4;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>RepDef(min) ~ Rep(M &lt;=
max - min)</span></p>
</td>
</tr>
</table>
</div>
<p class=MsoCaption><span style='color:white'>Table </span>47
Separator Suppression for dfdl:occursCountKind 'implicit' when Parsing</p>
<p class=MsoNormal>The notation in each cell uses the &quot;~&quot; symbol to
mean &quot;followed by&quot; in the data stream. Square brackets surround
things that are optional, as in they may or may not appear in the data stream.</p>
<p class=MsoNormal>The descriptions found in the cells of the matrix do not
provide a parsing algorithm, but rather state declaratively a pattern that the
data must match in order to be correctly parsed. </p>
<p class=MsoNormal><a name="_Toc318471276"><b><i>RepDef(min)</i></b> is short
for &quot;representation&quot; and &quot;defaultable&quot;. It means XSD
minOccurs occurrences of nil, empty or normal representation</a><a
href="#_ftn45" name="_ftnref45" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[45]</span></span></span></a>.
These are required occurrences, so default rules apply for empty representations.
XSD minOccurs may be 0, in which case there are no required occurrences.</p>
<p class=MsoNormal><a name="_Toc318471277"><b><i>Rep(M)</i></b> means M
occurrences of nil, empty, normal or absent representation. These are optional occurrences,
so default rules do not apply for empty representations.</a></p>
<p class=MsoNormal><a name="_Toc318471278"><b><i>RepNonZero(1)</i></b> means an
occurrence of a nil, empty or normal representation where such a representation
does not have zero-length</a><a href="#_ftn46" name="_ftnref46" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[46]</span></span></span></a>.
This is an optional occurrence, so default rules do not apply.</p>
<p class=MsoNormal>A notation like <b><i>Rep(M &lt;= max &#8211; min)</i></b>
means that there are M occurrences, where M is some value between the values of
the XSD minOccurs and XSD maxOccurs properties. When an unbounded number of
occurrences is possible this is shown explicitly by <em><span style='font-family:
"Arial",sans-serif'>Rep(M &lt; INF)</span></em> , INF meaning infinity or
unbounded.</p>
<h4><span style='color:black;font-weight:normal'>14.2.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Errors
When the Sequence is Positional </h4>
<p class=nobreak>In the matrix abovethere are some cells where the combination
of properties doesn't make sense, and a Schema Definition Error is raised.
These occur when an element has dfdl:occursCountKind 'implicit' and XSD
maxOccurs 'unbounded', and dfdl:separatorSuppressionPolicy implies that the
sequence is positional, specifically:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>If a sequence has dfdl:separatorSuppressionPolicy 'never';
</li>
<li class=MsoNormal>If a sequence has dfdl:separatorSuppressionPolicy
'trailingEmptyStrict' or 'trailingEmpty' and the element is not the last
declaration in the sequence. (This avoids ambiguity about which element is
being suppressed.)</li>
</ul>
<h4><span style='color:black;font-weight:normal'>14.2.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Example
Parsing Scenarios </h4>
<p class=MsoNormal>Consider the cell of the matrix above for the element in
this DFDL schema fragment:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator='|' dfdl:separatorPosition='infix'
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:separatorSuppressionPolicy='trailingEmptyStrict'&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name='a' type='xs:int'
default='0'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
maxOccurs='5' minOccurs='0'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation='text' dfdl:textNumberPattern='#0' </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;dfdl:occursCountKind='implicit' </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:initiator='[' dfdl:terminator=']'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:emptyValueDelimiterPolicy='both' /&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>Within the sequence this element 'a' is clearly potentially
trailing as it is declared last. The corresponding cell in the matrix above
contains this description:</p>
<p class=MsoNormal style='margin-left:.5in'><i>RepDef(min) [~ Rep(M &lt; max
&#8211; min) ~ RepNonZero(1) ]</i></p>
<p class=MsoNormal>Since XSD minOccurs='0', the first term, RepDef(min)
vanishes, leaving:</p>
<p class=MsoNormal style='margin-left:.5in'><i>Rep(M &lt; max - min) ~
RepNonZero(1)</i></p>
<p class=MsoNormal>Note Rep(M) permits absent representations, and if
encountered they are simply omitted from the Infoset. </p>
<p class=MsoNormal>So, this data </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>[1]|[2]|[3]|[4]|[5]</span></p>
</div>
<p class=MsoNormal>parses and 5 items appear in the Infoset. </p>
<p class=MsoNormal>This data</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>|||[4]</span></p>
</div>
<p class=MsoNormal>also parses because absent representations are accepted, but
only one item appears in the Infoset.(The fact that the occurrence is fourth in
the array is not preserved into the Infoset).&nbsp; However, this data</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>|||[4]|</span></p>
</div>
<p class=MsoNormal>causes a Processing Error because there is a final trailing
separator and dfdl:separatorSuppressionPolicy is 'trailingEmptyStrict'.</p>
<p class=MsoNormal>Now consider the same scenario but XSD minOccurs of '2'. The
first term reappears as <em><span style='font-family:"Arial",sans-serif'>RepDef(2).</span></em>
The data</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>|||[4]</span></p>
</div>
<p class=MsoNormal>which previously parsed successfully would now cause a Processing
Error because the first two occurrences are required, so they must be either a
normal representation, that is, matching xs:int syntax with surrounding
initiator and terminator, or the empty representation which is <span
class=dataexampleChar>[]</span>. An example which parses correctly with XSD minOccurs
of '2' is:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>[1]|[]||[4]</span></p>
</div>
<p class=MsoNormal>In this case the Infoset contains 3 items with values 1, 0,
4. The 0 value arises because the occurrence has the empty representation, the
occurs index is 2 so it is required, and there is a default value 0.</p>
<p class=MsoNormal>If the scenario is changed so that
dfdl:separatorSuppressionPolicy is 'trailingEmpty' then a different cell of the
matrix above applies. </p>
<p class=MsoNormal style='margin-left:.5in'><i>RepDef(min) [~ Rep(M &lt; max
&#8211; min) ]</i></p>
<p class=MsoNormal>This has a more lax behavior so that this data is also
acceptable:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>[1]|[]||[4]|</span></p>
</div>
<p class=MsoNormal>In this case the final trailing separator is tolerated,
though when unparsing this final trailing separator would not be created. This
is a case where what is parsed is not exactly recreated on unparsing from the resulting
Infoset, but all the information content is preserved.</p>
<p class=MsoNormal>Now consider the same scenario but XSD maxOccurs is
'unbounded'. In that case this data is acceptable:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>[1]|[]||||||||||||||||||||||||[4]|||||||||||||||||||||</span></p>
</div>
<p class=MsoNormal>The Infoset values are again 1, 0, 4. But all the excess
separators are tolerated.</p>
<h4><a name="_Ref25588773"><span style='color:black;font-weight:normal'>14.2.2.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Parsing
Child Groups within Separated Sequences</a></h4>
<p class=MsoNormal>When a child of a sequence is a group then a separator is
expected/tolerated depending on dfdl:separatorSuppressionPolicy and other factors:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;never&#8217; - the child group&#8217;s associated
separator is expected</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;trailingEmpty&#8217; &#8211; if the child group is
potentially trailing, has zero-length and it is actually trailing, its
separator may appear or not. Additional separators are not expected.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;trailingEmptyStrict&#8217; &#8211; if the child group is
potentially trailing, has zero-length and it is actually trailing, its
separator must not appear. </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;anyEmpty&#8217; &#8211; if the child group has zero-length
its separator must not appear.</p>
<h3><a name="_Toc62570186"><span style='color:black;font-weight:normal'>14.2.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Unparsing
Sequence Groups with Separators</a></h3>
<p class=MsoNormal>Unparsing child elements is described first. Unparsing for
child groups is described in Section <span
class=MsoHyperlink>14.2.3.2</span>.</p>
<p class=MsoNormal>When an element is required and is not an array then one
occurrence is always output along with its separator. The
dfdl:separatorSuppressionPolicy of the sequence has no effect (nothing is
eligible for suppression).</p>
<p class=MsoNormal>Otherwise the behaviour is dependent on
dfdl:occursCountKind.</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'fixed' or 'expression' the
occurrences in the augmented Infoset are always output along with their
separators. The dfdl:separatorSuppressionPolicy of the sequence has no effect
(nothing is eligible for suppression).</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'parsed' non zero-length
occurrences in the augmented Infoset are output along with their separators. The
dfdl:separatorSuppressionPolicy of the sequence must be 'anyEmpty' and it is a
Schema Definition Error otherwise.</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'stopValue' the occurrences in
the augmented Infoset are output along with their separators followed by the
stop value and its separator, according to the dfdl:separatorSuppressionPolicy
of the sequence.</p>
<p class=MsoNormal>When dfdl:occursCountKind is 'implicit' the occurrences in
the augmented Infoset are output along with their separators, according to the
dfdl:separatorSuppressionPolicy of the sequence. </p>
<p class=MsoNormal>The behaviour for 'implicit' is more fully expressed in
matrix form. The cells in the matrix give the number of occurrences of element values
that are output to the data stream when unparsing, for the different values of
dfdl:separatorSuppressionPolicy. The number of occurrences also depends whether
XSD maxOccurs is unbounded or not, and the position of the element in the
sequence. The number of separators output can be inferred from this, considering
dfdl:separatorPosition.<a name="_Toc318471280"></a></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr style='page-break-inside:avoid'>
<td rowspan=4 style='border:solid windowtext 1.0pt;background:#F2F2F2;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>dfdl:</span></b></p>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>separatorSuppressionPolicy</span></b></p>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>&nbsp;</span></b></p>
</td>
<td colspan=6 style='border:solid windowtext 1.0pt;border-left:none;
background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>dfdl:occursCountKind
'implicit'</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td colspan=4 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Potentially Trailing</span></b></p>
</td>
<td colspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Not Potentially Trailing</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td colspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs unbounded</span></b></p>
</td>
<td colspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs bounded</span></b></p>
</td>
<td rowspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs unbounded</span></b></p>
</td>
<td rowspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>maxOccurs bounded</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element not declared last</span></b></p>
</td>
<td style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element declared last</span></b></p>
</td>
<td style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element declared last or
occurrence followed by end-of-group</span></b></p>
</td>
<td style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><b><span style='font-size:8.0pt;color:black'>Element not declared last
and occurrence not followed by end-of-group</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td style='border:solid windowtext 1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>never</span></p>
</td>
<td colspan=2 style='border:none;border-right:solid windowtext 1.0pt;
background:#D6E3BC;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Schema definition error</span></p>
</td>
<td colspan=2 style='border:none;border-right:solid windowtext 1.0pt;
background:#92CDDC;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Unparse N occurrences ~
unparse (maxOccurs -- N) trailing zero-length occurrences</span></p>
</td>
<td rowspan=3 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#D6E3BC;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Schema definition error</span></p>
</td>
<td rowspan=3 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#92CDDC;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Unparse N occurrences ~
unparse (maxOccurs -- N) trailing zero-length occurrences</span></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td style='border:solid windowtext 1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>trailingEmptyStrict</span></p>
</td>
<td rowspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#D6E3BC;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>&nbsp;</span></p>
</td>
<td colspan=2 rowspan=2 style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;background:#FDE9D9;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Unparse N occurrences
(suppressing trailing zero-length occurrences)</span></p>
</td>
<td rowspan=2 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#92CDDC;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>&nbsp;</span></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td style='border:solid windowtext 1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>trailingEmpty</span></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td style='border:solid windowtext 1.0pt;border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>anyEmpty</span></p>
</td>
<td colspan=6 style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#DAEEF3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center;page-break-after:
avoid'><span style='font-size:8.0pt;color:black'>Unparse N occurrences
(suppressing any optional zero-length occurrences)</span></p>
</td>
</tr>
<tr height=0>
<td width=159 style='border:none'></td>
<td width=69 style='border:none'></td>
<td width=67 style='border:none'></td>
<td width=105 style='border:none'></td>
<td width=111 style='border:none'></td>
<td width=80 style='border:none'></td>
<td width=116 style='border:none'></td>
</tr>
</table>
<p class=MsoCaption><span style='color:black'>Table </span>48
Separator Suppressions for dfdl:occursCountKind 'implicit'</p>
<p class=MsoNormal><a name="_Toc318471281">The notation in each cell uses the
&quot;~&quot; symbol to mean &quot;followed by&quot; in the output data stream.
</a></p>
<p class=MsoNormal><b><i>N </i></b>stands for the number of elements in the
augmented Infoset, which includes any defaults.</p>
<p class=MsoNormal><b><i>unparse N occurrences</i></b> means output N unparsed Infoset
items and associated separators. </p>
<p class=MsoNormal><b><i>unparse(M) trailing zero length occurrences</i></b>
means output M adjacent separators (according to dfdl:separatorPosition) as if
separating M element occurrences. </p>
<p class=MsoNormal><b><i>(suppressing trailing zero-length reps)</i></b>
implies the unparser MUST look ahead into the Infoset and determine when the
representations are zero-length, and then identify those in trailing position.
No separators are output corresponding to the trailing zero-length representations.</p>
<h4><a name="_Toc322911385"></a><a name="_Toc322911946"></a><a
name="_Toc324948128"></a><a name="_Toc349042791"><span style='color:black;
font-weight:normal'>14.2.3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Example Unparsing Scenarios </a></h4>
<p class=MsoNormal>Consider the cell of the matrix above for the element in
this DFDL schema fragment:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:separator='|'
dfdl:separatorPosition='infix' </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:separatorSuppressionPolicy='trailingEmpty'&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name='a' type='xs:int' </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
maxOccurs='5' minOccurs='0'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
nillable='true'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation='text' dfdl:textNumberPattern='#0'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occursCountKind='implicit' </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;dfdl:initiator='['
dfdl:terminator=']'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:emptyValueDelimiterPolicy='none'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:nilKind='literalValue' dfdl:nilValue='%ES;'</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:nilValueDelimiterPolicy='none' /&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>This example is similar to the one used above in the
discussion of parsing with separator suppression. However, the element has no
default value, the dfdl:emptyValueDelimterPolicy has been removed, and the
element is nillable. Element 'a' is clearly potentially trailing as it is
declared last. The corresponding cell in the matrix above contains this
description:</p>
<p class=MsoNormal style='margin-left:.5in'><i>unparse N occurrences
(suppressing trailing zero length reps)</i></p>
<p class=MsoNormal>Assume unparsing an Infoset containing five values: 1, 0,
nil<a href="#_ftn47" name="_ftnref47" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[47]</span></span></span></a>,
4, nil. Five occurrences are unparsed; however, the last value is nil, which
has a representation of '%ES;' meaning empty-string, and
dfdl:nilvalueDelimiterPolicy is 'none' meaning no initiator or terminator is to
appear in the data. Since the schema is suppressing trailing zero-length reps
the unparse results in this output:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>[1]|[0]||[4]</span></p>
</div>
<p class=MsoNormal>This is an example where if the data is reparsed, it does not
result in that original Infoset, because the trailing empty value which is the
representation of the nil value, is not represented in the output, and so does not
cause an Infoset item with <b>[nilled]</b> true to be created in the Infoset
when this data is parsed. To preserve the nil, change the
dfdl:nilValueDelimiterPolicy to 'both'. In that case the output would be:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>[1]|[0]|[]|[4]|[]</span></p>
</div>
<p class=MsoNormal>The nils now have explicit representation in the data and are
recreated in the Infoset when parsing.</p>
<h4><a name="_Ref25588955"><span style='color:black;font-weight:normal'>14.2.3.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Unparsing
Child Groups within Separated Sequences</a></h4>
<p class=MsoNormal><a name="_Toc21705940"></a>When a child of a sequence is a
group then a separator is output depending on dfdl:separatorSuppressionPolicy
and other factors:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;never&#8217; - the child group&#8217;s associated
separator is output</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;trailingEmpty&#8217; or &#8216;trailingEmptyStrict&#8217;
&#8211; if the child group is potentially trailing, has zero-length and it is
actually trailing, its separator is not output.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>&#8216;anyEmpty&#8217; &#8211; if the child group has zero-length
its separator is not output.</p>
<h2><a name="_Toc177399115"></a><a name="_Toc175057402"></a><a
name="_Toc199516347"></a><a name="_Toc194984009"></a><a name="_Toc243112853"></a><a
name="_Toc349042795"></a><a name="_Toc62570187"></a><a name="_Toc322911697"></a><a
name="_Toc322912236"></a><a name="_Toc329093093"></a><a name="_Toc332701606"></a><a
name="_Toc332701910"></a><a name="_Toc332711709"></a><a name="_Toc332712011"></a><a
name="_Toc332712312"></a><a name="_Toc332724228"></a><a name="_Toc332724528"></a><a
name="_Toc341102824"></a><a name="_Toc347241559"></a><a name="_Toc347744752"></a><a
name="_Toc348984535"></a><a name="_Toc348984840"></a><a name="_Toc349038004"></a><a
name="_Toc349038306"></a><a name="_Toc349042792"></a><a name="_Toc351912863"></a><a
name="_Toc351914884"></a><a name="_Toc351915350"></a><a name="_Toc361231407"></a><a
name="_Toc361231933"></a><a name="_Toc362445231"></a><a name="_Toc363909153"></a><a
name="_Toc364463578"></a><a name="_Toc366078182"></a><a name="_Toc366078801"></a><a
name="_Toc366079786"></a><a name="_Toc366080398"></a><a name="_Toc366081007"></a><a
name="_Toc366505347"></a><a name="_Toc366508716"></a><a name="_Toc366513217"></a><a
name="_Toc366574406"></a><a name="_Toc366578199"></a><a name="_Toc366578793"></a><a
name="_Toc366579385"></a><a name="_Toc366579976"></a><a name="_Toc366580568"></a><a
name="_Toc366581159"></a><a name="_Toc366581751"></a><a name="_Toc322911386"></a><a
name="_Toc322911698"></a><a name="_Toc322911947"></a><a name="_Toc322912237"></a><a
name="_Toc329093094"></a><a name="_Toc332701607"></a><a name="_Toc332701911"></a><a
name="_Toc332711710"></a><a name="_Toc332712012"></a><a name="_Toc332712313"></a><a
name="_Toc332724229"></a><a name="_Toc332724529"></a><a name="_Toc341102825"></a><a
name="_Toc347241560"></a><a name="_Toc347744753"></a><a name="_Toc348984536"></a><a
name="_Toc348984841"></a><a name="_Toc349038005"></a><a name="_Toc349038307"></a><a
name="_Toc349042793"></a><a name="_Toc349642207"></a><a name="_Toc351912864"></a><a
name="_Toc351914885"></a><a name="_Toc351915351"></a><a name="_Toc361231408"></a><a
name="_Toc361231934"></a><a name="_Toc362445232"></a><a name="_Toc363909154"></a><a
name="_Toc364463579"></a><a name="_Toc366078183"></a><a name="_Toc366078802"></a><a
name="_Toc366079787"></a><a name="_Toc366080399"></a><a name="_Toc366081008"></a><a
name="_Toc366505348"></a><a name="_Toc366508717"></a><a name="_Toc366513218"></a><a
name="_Toc366574407"></a><a name="_Toc366578200"></a><a name="_Toc366578794"></a><a
name="_Toc366579386"></a><a name="_Toc366579977"></a><a name="_Toc366580569"></a><a
name="_Toc366581160"></a><a name="_Toc366581752"></a><a name="_Toc184192042"></a><a
name="_Toc184210586"></a><a name="_Toc184192043"></a><a name="_Toc184210587"></a><a
name="_Toc322911387"></a><a name="_Toc322911699"></a><a name="_Toc322911948"></a><a
name="_Toc322912238"></a><a name="_Toc329093095"></a><a name="_Toc332701608"></a><a
name="_Toc332701912"></a><a name="_Toc332711711"></a><a name="_Toc332712013"></a><a
name="_Toc332712314"></a><a name="_Toc332724230"></a><a name="_Toc332724530"></a><a
name="_Toc341102826"></a><a name="_Toc347241561"></a><a name="_Toc347744754"></a><a
name="_Toc348984537"></a><a name="_Toc348984842"></a><a name="_Toc349038006"></a><a
name="_Toc349038308"></a><a name="_Toc349042794"></a><a name="_Toc349642208"></a><a
name="_Toc351912865"></a><a name="_Toc351914886"></a><a name="_Toc351915352"></a><a
name="_Toc361231409"></a><a name="_Toc361231935"></a><a name="_Toc362445233"></a><a
name="_Toc363909155"></a><a name="_Toc364463580"></a><a name="_Toc366078184"></a><a
name="_Toc366078803"></a><a name="_Toc366079788"></a><a name="_Toc366080400"></a><a
name="_Toc366081009"></a><a name="_Toc366505349"></a><a name="_Toc366508718"></a><a
name="_Toc366513219"></a><a name="_Toc366574408"></a><a name="_Toc366578201"></a><a
name="_Toc366578795"></a><a name="_Toc366579387"></a><a name="_Toc366579978"></a><a
name="_Toc366580570"></a><a name="_Toc366581161"></a><a name="_Toc366581753"></a>14.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Unordered Sequence
Groups</h2>
<p class=nobreak>The occurrences of members of a sequence group with
dfdl:sequenceKind of 'unordered' (hereafter referred to as an 'unordered
sequence') may appear in the data in any order. Occurrences of the same member
do not have to be contiguous. In the Infoset, sequence groups are always in
schema order, so a DFDL processor MUST sort the members of an unordered
sequence into schema order when parsing. When unparsing, the Infoset must
already be in schema order, and the members of the sequence are output in
schema order.</p>
<h3><span style='color:black;font-weight:normal'>14.3.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>&nbsp;<a name="_Toc62570188">Restrictions for Unordered Sequences</a></h3>
<p class=MsoNormal>It is a Schema Definition Error if any member of the
unordered sequence is not an element declaration or an element reference.</p>
<p class=MsoNormal>It is a Schema Definition Error if a member of an unordered
sequence is an optional element or an array element and its
dfdl:occursCountKind property is not 'parsed'</p>
<p class=MsoNormal>It is a Schema Definition Error if two or more members of
the unordered sequence have the same name and the same namespace (see post-processing
transformation below)</p>
<p class=MsoNormal>It is a Schema Definition Error if an unordered sequence has
no members.</p>
<h3><span style='color:black;font-weight:normal'>14.3.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>&nbsp;<a name="_Toc62570189">Parsing an Unordered Sequence</a></h3>
<p class=nobreak>When parsing, the semantics of an unordered sequence are
expressed by way of: </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>a source-to-source transformation of the sequence group
definition, and </li>
<li class=MsoNormal>a post-processing transformation of the Infoset . </li>
</ol>
<p class=nobreak>An implementation MAY use any technique consistent with this
semantic.</p>
<h4><span style='color:black;font-weight:normal'>14.3.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>&nbsp;Source-to-source
Transformation</h4>
<p class=MsoNormal>The source-to-source transformation turns the declaration of
an unordered sequence into an ordered sequence group that contains a repeating
choice. To ensure that the resulting schema is a valid DFDL schema, the choice
group is wrapped in an array element. </p>
<p class=MsoNormal>The unordered sequence is transformed as follows: </p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>the dfdl:sequenceKind property of the unordered sequence
is changed to &quot;ordered&quot; </li>
<li class=MsoNormal>the content of the unordered sequence is replaced by a
complex element ( the 'choice element' ) with the following properties:</li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>XSD minOccurs=&quot;0&quot;</li>
<li class=MsoNormal>XSD maxOccurs=&quot;unbounded&quot;</li>
<li class=MsoNormal>dfdl:lengthKind &quot;implicit&quot;</li>
<li class=MsoNormal>dfd:occursCountKind &quot;parsed&quot;</li>
</ul>
<li class=MsoNormal>the content of the choice element's complex type is a
choice group with the following properties:</li>
<li class=MsoNormal>dfdl:choiceLengthKind &quot;implicit&quot;</li>
<li class=MsoNormal>The members of the unordered sequence become the members
of the choice group, with their declaration order preserved.</li>
<li class=MsoNormal>The XSD minOccurs and XSD maxOccurs properties on each
member of the choice group are both set to 1. </li>
</ul>
<p class=MsoNormal>Using the following example as an illustration:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence dfdl:sequenceKind=&quot;unordered&quot;
dfdl:separator=&quot;,&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;xs:element name=&quot;a&quot;
type=&quot;xs:string&quot;&nbsp; dfdl:initiator=&quot;A:&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;xs:element name=&quot;b&quot;
type=&quot;xs:int&quot; minOccurs=&quot;0&quot; dfdl:initiator=&quot;B:&quot;
/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp; &lt;xs:element name=&quot;c&quot;
type=&quot;xs:string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;10&quot; &nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:initiator=&quot;C:&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>The above unordered sequence group is conceptually rewritten
into the following ordered sequence group:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence
dfdl:sequenceKind=&quot;ordered&quot; dfdl:separator=&quot;,&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element
name=&quot;choiceElement&quot; minOccurs=&quot;0&quot;
maxOccurs=&quot;unbounded&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occursCountKind=&quot;parsed&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:choice
dfdl:choiceLengthKind=&quot;implicit&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;a&quot; type=&quot;xs:string&quot;
dfdl:initiator=&quot;A:&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;b&quot; type=&quot;xs:int&quot;
dfdl:initiator=&quot;B:&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;c&quot; type=&quot;xs:string&quot;
dfdl:initiator=&quot;C:&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:choice&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>Processing then constructs a temporary info set for this
ordered sequence group by parsing the data. </p>
<p class=MsoNormal>If a member element is found to have the empty
representation then the parsing of that element must use the original value of
XSD minOccurs. In this example, element &quot;b&quot; has XSD minOccurs
&quot;0&quot; and if it is found with the empty representation then it must not
be defaulted.</p>
<h4><span style='color:black;font-weight:normal'>14.3.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Post-processing
Transformation</h4>
<p class=nobreak><span lang=EN-GB>Post-processing consists of the following
steps:</span></p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Sort the temporary Infoset to produce the real Infoset</li>
<li class=MsoNormal>Check scalar elements and validate</li>
</ol>
<p class=MsoNormal><b>Step 1: Sort the Temporary Infoset</b></p>
<p class=MsoNormal>The temporary Infoset is transformed into the Infoset
conforming to the original unordered sequence.&nbsp; All members of the
temporary Infoset having the same name and namespace as the first child of the
unordered sequence are placed first, in the order in which they were parsed.
This algorithm repeats for the second child of the unordered sequence and so on
until all members of the temporary Infoset have been sorted into the schema
declaration order of the original unordered sequence.</p>
<p class=MsoNormal>For the example above, the temporary Infoset is transformed
into the Infoset corresponding to:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;a&quot;
type=&quot;xs:string&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;b&quot;
type=&quot;xs:int&quot; minOccurs=&quot;0&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;c&quot;
type=&quot;xs:string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;10&quot;
/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal><b>Step 2: Check Scalar Elements and Validate</b></p>
<p class=MsoNormal>For each element in the unordered sequence having XSD
minOccurs &quot;1&quot; and maxOccurs &quot;1&quot;, the number of occurrences
is checked. Each such element must occur exactly once in the Infoset, else it
is a Processing Error.</p>
<p class=MsoNormal>If validation is enabled, the DFDL processor validates the
number of occurrences of each member of the unordered sequence against XSD
minOccurs and XSD maxOccurs. </p>
<p class=MsoNormal>These checks are the same as those performed for an ordered
sequence group. However, in an unordered sequence the checking of XSD minOccurs
and XSD maxOccurs MUST be performed after the entire group has been parsed.</p>
<h3><a name="_Toc62570190"><span style='color:black;font-weight:normal'>14.3.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Unparsing
an Unordered Sequence</a></h3>
<p class=MsoNormal>When unparsing, the behavior is exactly as if
dfdl:sequenceKind is 'ordered'. The members of the unordered sequence group are
output in schema declaration order. </p>
<h2><a name="_Toc243112854"></a><a name="_Toc349042796"></a><a
name="_Ref38542772"></a><a name="_Ref38542780"></a><a name="_Toc62570191"></a><a
name="_Toc363909160"></a><a name="_Toc364463585"></a><a name="_Toc366078189"></a><a
name="_Toc366078808"></a><a name="_Toc366079793"></a><a name="_Toc366080405"></a><a
name="_Toc366081014"></a><a name="_Toc366505354"></a><a name="_Toc366508723"></a><a
name="_Toc366513224"></a><a name="_Toc366574413"></a><a name="_Toc366578206"></a><a
name="_Toc366578800"></a><a name="_Toc366579392"></a><a name="_Toc366579983"></a><a
name="_Toc366580575"></a><a name="_Toc366581166"></a><a name="_Toc366581758"></a><a
name="_Toc363909161"></a><a name="_Toc364463586"></a><a name="_Toc366078190"></a><a
name="_Toc366078809"></a><a name="_Toc366079794"></a><a name="_Toc366080406"></a><a
name="_Toc366081015"></a><a name="_Toc366505355"></a><a name="_Toc366508724"></a><a
name="_Toc366513225"></a><a name="_Toc366574414"></a><a name="_Toc366578207"></a><a
name="_Toc366578801"></a><a name="_Toc366579393"></a><a name="_Toc366579984"></a><a
name="_Toc366580576"></a><a name="_Toc366581167"></a><a name="_Toc366581759"></a><a
name="_Toc363909162"></a><a name="_Toc364463587"></a><a name="_Toc366078191"></a><a
name="_Toc366078810"></a><a name="_Toc366079795"></a><a name="_Toc366080407"></a><a
name="_Toc366081016"></a><a name="_Toc366505356"></a><a name="_Toc366508725"></a><a
name="_Toc366513226"></a><a name="_Toc366574415"></a><a name="_Toc366578208"></a><a
name="_Toc366578802"></a><a name="_Toc366579394"></a><a name="_Toc366579985"></a><a
name="_Toc366580577"></a><a name="_Toc366581168"></a><a name="_Toc366581760"></a><a
name="_Toc363909163"></a><a name="_Toc364463588"></a><a name="_Toc366078192"></a><a
name="_Toc366078811"></a><a name="_Toc366079796"></a><a name="_Toc366080408"></a><a
name="_Toc366081017"></a><a name="_Toc366505357"></a><a name="_Toc366508726"></a><a
name="_Toc366513227"></a><a name="_Toc366574416"></a><a name="_Toc366578209"></a><a
name="_Toc366578803"></a><a name="_Toc366579395"></a><a name="_Toc366579986"></a><a
name="_Toc366580578"></a><a name="_Toc366581169"></a><a name="_Toc366581761"></a><a
name="_Toc363909164"></a><a name="_Toc364463589"></a><a name="_Toc366078193"></a><a
name="_Toc366078812"></a><a name="_Toc366079797"></a><a name="_Toc366080409"></a><a
name="_Toc366081018"></a><a name="_Toc366505358"></a><a name="_Toc366508727"></a><a
name="_Toc366513228"></a><a name="_Toc366574417"></a><a name="_Toc366578210"></a><a
name="_Toc366578804"></a><a name="_Toc366579396"></a><a name="_Toc366579987"></a><a
name="_Toc366580579"></a><a name="_Toc366581170"></a><a name="_Toc366581762"></a><a
name="_Toc363909165"></a><a name="_Toc364463590"></a><a name="_Toc366078194"></a><a
name="_Toc366078813"></a><a name="_Toc366079798"></a><a name="_Toc366080410"></a><a
name="_Toc366081019"></a><a name="_Toc366505359"></a><a name="_Toc366508728"></a><a
name="_Toc366513229"></a><a name="_Toc366574418"></a><a name="_Toc366578211"></a><a
name="_Toc366578805"></a><a name="_Toc366579397"></a><a name="_Toc366579988"></a><a
name="_Toc366580580"></a><a name="_Toc366581171"></a><a name="_Toc366581763"></a><a
name="_Toc363909166"></a><a name="_Toc364463591"></a><a name="_Toc366078195"></a><a
name="_Toc366078814"></a><a name="_Toc366079799"></a><a name="_Toc366080411"></a><a
name="_Toc366081020"></a><a name="_Toc366505360"></a><a name="_Toc366508729"></a><a
name="_Toc366513230"></a><a name="_Toc366574419"></a><a name="_Toc366578212"></a><a
name="_Toc366578806"></a><a name="_Toc366579398"></a><a name="_Toc366579989"></a><a
name="_Toc366580581"></a><a name="_Toc366581172"></a><a name="_Toc366581764"></a><a
name="_Toc363909167"></a><a name="_Toc364463592"></a><a name="_Toc366078196"></a><a
name="_Toc366078815"></a><a name="_Toc366079800"></a><a name="_Toc366080412"></a><a
name="_Toc366081021"></a><a name="_Toc366505361"></a><a name="_Toc366508730"></a><a
name="_Toc366513231"></a><a name="_Toc366574420"></a><a name="_Toc366578213"></a><a
name="_Toc366578807"></a><a name="_Toc366579399"></a><a name="_Toc366579990"></a><a
name="_Toc366580582"></a><a name="_Toc366581173"></a><a name="_Toc366581765"></a><a
name="_Toc363909168"></a><a name="_Toc364463593"></a><a name="_Toc366078197"></a><a
name="_Toc366078816"></a><a name="_Toc366079801"></a><a name="_Toc366080413"></a><a
name="_Toc366081022"></a><a name="_Toc366505362"></a><a name="_Toc366508731"></a><a
name="_Toc366513232"></a><a name="_Toc366574421"></a><a name="_Toc366578214"></a><a
name="_Toc366578808"></a><a name="_Toc366579400"></a><a name="_Toc366579991"></a><a
name="_Toc366580583"></a><a name="_Toc366581174"></a><a name="_Toc366581766"></a><a
name="_Toc363909169"></a><a name="_Toc364463594"></a><a name="_Toc366078198"></a><a
name="_Toc366078817"></a><a name="_Toc366079802"></a><a name="_Toc366080414"></a><a
name="_Toc366081023"></a><a name="_Toc366505363"></a><a name="_Toc366508732"></a><a
name="_Toc366513233"></a><a name="_Toc366574422"></a><a name="_Toc366578215"></a><a
name="_Toc366578809"></a><a name="_Toc366579401"></a><a name="_Toc366579992"></a><a
name="_Toc366580584"></a><a name="_Toc366581175"></a><a name="_Toc366581767"></a><a
name="_Toc363909170"></a><a name="_Toc364463595"></a><a name="_Toc366078199"></a><a
name="_Toc366078818"></a><a name="_Toc366079803"></a><a name="_Toc366080415"></a><a
name="_Toc366081024"></a><a name="_Toc366505364"></a><a name="_Toc366508733"></a><a
name="_Toc366513234"></a><a name="_Toc366574423"></a><a name="_Toc366578216"></a><a
name="_Toc366578810"></a><a name="_Toc366579402"></a><a name="_Toc366579993"></a><a
name="_Toc366580585"></a><a name="_Toc366581176"></a><a name="_Toc366581768"></a><a
name="_Toc363909171"></a><a name="_Toc364463596"></a><a name="_Toc366078200"></a><a
name="_Toc366078819"></a><a name="_Toc366079804"></a><a name="_Toc366080416"></a><a
name="_Toc366081025"></a><a name="_Toc366505365"></a><a name="_Toc366508734"></a><a
name="_Toc366513235"></a><a name="_Toc366574424"></a><a name="_Toc366578217"></a><a
name="_Toc366578811"></a><a name="_Toc366579403"></a><a name="_Toc366579994"></a><a
name="_Toc366580586"></a><a name="_Toc366581177"></a><a name="_Toc366581769"></a><a
name="_Toc363909172"></a><a name="_Toc364463597"></a><a name="_Toc366078201"></a><a
name="_Toc366078820"></a><a name="_Toc366079805"></a><a name="_Toc366080417"></a><a
name="_Toc366081026"></a><a name="_Toc366505366"></a><a name="_Toc366508735"></a><a
name="_Toc366513236"></a><a name="_Toc366574425"></a><a name="_Toc366578218"></a><a
name="_Toc366578812"></a><a name="_Toc366579404"></a><a name="_Toc366579995"></a><a
name="_Toc366580587"></a><a name="_Toc366581178"></a><a name="_Toc366581770"></a><a
name="_Toc363909173"></a><a name="_Toc364463598"></a><a name="_Toc366078202"></a><a
name="_Toc366078821"></a><a name="_Toc366079806"></a><a name="_Toc366080418"></a><a
name="_Toc366081027"></a><a name="_Toc366505367"></a><a name="_Toc366508736"></a><a
name="_Toc366513237"></a><a name="_Toc366574426"></a><a name="_Toc366578219"></a><a
name="_Toc366578813"></a><a name="_Toc366579405"></a><a name="_Toc366579996"></a><a
name="_Toc366580588"></a><a name="_Toc366581179"></a><a name="_Toc366581771"></a><a
name="_Toc363909174"></a><a name="_Toc364463599"></a><a name="_Toc366078203"></a><a
name="_Toc366078822"></a><a name="_Toc366079807"></a><a name="_Toc366080419"></a><a
name="_Toc366081028"></a><a name="_Toc366505368"></a><a name="_Toc366508737"></a><a
name="_Toc366513238"></a><a name="_Toc366574427"></a><a name="_Toc366578220"></a><a
name="_Toc366578814"></a><a name="_Toc366579406"></a><a name="_Toc366579997"></a><a
name="_Toc366580589"></a><a name="_Toc366581180"></a><a name="_Toc366581772"></a><a
name="_Toc363909175"></a><a name="_Toc364463600"></a><a name="_Toc366078204"></a><a
name="_Toc366078823"></a><a name="_Toc366079808"></a><a name="_Toc366080420"></a><a
name="_Toc366081029"></a><a name="_Toc366505369"></a><a name="_Toc366508738"></a><a
name="_Toc366513239"></a><a name="_Toc366574428"></a><a name="_Toc366578221"></a><a
name="_Toc366578815"></a><a name="_Toc366579407"></a><a name="_Toc366579998"></a><a
name="_Toc366580590"></a><a name="_Toc366581181"></a><a name="_Toc366581773"></a><a
name="_Toc363909176"></a><a name="_Toc364463601"></a><a name="_Toc366078205"></a><a
name="_Toc366078824"></a><a name="_Toc366079809"></a><a name="_Toc366080421"></a><a
name="_Toc366081030"></a><a name="_Toc366505370"></a><a name="_Toc366508739"></a><a
name="_Toc366513240"></a><a name="_Toc366574429"></a><a name="_Toc366578222"></a><a
name="_Toc366578816"></a><a name="_Toc366579408"></a><a name="_Toc366579999"></a><a
name="_Toc366580591"></a><a name="_Toc366581182"></a><a name="_Toc366581774"></a><a
name="_Toc363909177"></a><a name="_Toc364463602"></a><a name="_Toc366078206"></a><a
name="_Toc366078825"></a><a name="_Toc366079810"></a><a name="_Toc366080422"></a><a
name="_Toc366081031"></a><a name="_Toc366505371"></a><a name="_Toc366508740"></a><a
name="_Toc366513241"></a><a name="_Toc366574430"></a><a name="_Toc366578223"></a><a
name="_Toc366578817"></a><a name="_Toc366579409"></a><a name="_Toc366580000"></a><a
name="_Toc366580592"></a><a name="_Toc366581183"></a><a name="_Toc366581775"></a><a
name="_Toc363909178"></a><a name="_Toc364463603"></a><a name="_Toc366078207"></a><a
name="_Toc366078826"></a><a name="_Toc366079811"></a><a name="_Toc366080423"></a><a
name="_Toc366081032"></a><a name="_Toc366505372"></a><a name="_Toc366508741"></a><a
name="_Toc366513242"></a><a name="_Toc366574431"></a><a name="_Toc366578224"></a><a
name="_Toc366578818"></a><a name="_Toc366579410"></a><a name="_Toc366580001"></a><a
name="_Toc366580593"></a><a name="_Toc366581184"></a><a name="_Toc366581776"></a><a
name="_Toc363909179"></a><a name="_Toc364463604"></a><a name="_Toc366078208"></a><a
name="_Toc366078827"></a><a name="_Toc366079812"></a><a name="_Toc366080424"></a><a
name="_Toc366081033"></a><a name="_Toc366505373"></a><a name="_Toc366508742"></a><a
name="_Toc366513243"></a><a name="_Toc366574432"></a><a name="_Toc366578225"></a><a
name="_Toc366578819"></a><a name="_Toc366579411"></a><a name="_Toc366580002"></a><a
name="_Toc366580594"></a><a name="_Toc366581185"></a><a name="_Toc366581777"></a><a
name="_Toc363909180"></a><a name="_Toc364463605"></a><a name="_Toc366078209"></a><a
name="_Toc366078828"></a><a name="_Toc366079813"></a><a name="_Toc366080425"></a><a
name="_Toc366081034"></a><a name="_Toc366505374"></a><a name="_Toc366508743"></a><a
name="_Toc366513244"></a><a name="_Toc366574433"></a><a name="_Toc366578226"></a><a
name="_Toc366578820"></a><a name="_Toc366579412"></a><a name="_Toc366580003"></a><a
name="_Toc366580595"></a><a name="_Toc366581186"></a><a name="_Toc366581778"></a><a
name="_Toc363909181"></a><a name="_Toc364463606"></a><a name="_Toc366078210"></a><a
name="_Toc366078829"></a><a name="_Toc366079814"></a><a name="_Toc366080426"></a><a
name="_Toc366081035"></a><a name="_Toc366505375"></a><a name="_Toc366508744"></a><a
name="_Toc366513245"></a><a name="_Toc366574434"></a><a name="_Toc366578227"></a><a
name="_Toc366578821"></a><a name="_Toc366579413"></a><a name="_Toc366580004"></a><a
name="_Toc366580596"></a><a name="_Toc366581187"></a><a name="_Toc366581779"></a><a
name="_Toc363909182"></a><a name="_Toc364463607"></a><a name="_Toc366078211"></a><a
name="_Toc366078830"></a><a name="_Toc366079815"></a><a name="_Toc366080427"></a><a
name="_Toc366081036"></a><a name="_Toc366505376"></a><a name="_Toc366508745"></a><a
name="_Toc366513246"></a><a name="_Toc366574435"></a><a name="_Toc366578228"></a><a
name="_Toc366578822"></a><a name="_Toc366579414"></a><a name="_Toc366580005"></a><a
name="_Toc366580597"></a><a name="_Toc366581188"></a><a name="_Toc366581780"></a><a
name="_Toc363909183"></a><a name="_Toc364463608"></a><a name="_Toc366078212"></a><a
name="_Toc366078831"></a><a name="_Toc366079816"></a><a name="_Toc366080428"></a><a
name="_Toc366081037"></a><a name="_Toc366505377"></a><a name="_Toc366508746"></a><a
name="_Toc366513247"></a><a name="_Toc366574436"></a><a name="_Toc366578229"></a><a
name="_Toc366578823"></a><a name="_Toc366579415"></a><a name="_Toc366580006"></a><a
name="_Toc366580598"></a><a name="_Toc366581189"></a><a name="_Toc366581781"></a><a
name="_Toc363909184"></a><a name="_Toc364463609"></a><a name="_Toc366078213"></a><a
name="_Toc366078832"></a><a name="_Toc366079817"></a><a name="_Toc366080429"></a><a
name="_Toc366081038"></a><a name="_Toc366505378"></a><a name="_Toc366508747"></a><a
name="_Toc366513248"></a><a name="_Toc366574437"></a><a name="_Toc366578230"></a><a
name="_Toc366578824"></a><a name="_Toc366579416"></a><a name="_Toc366580007"></a><a
name="_Toc366580599"></a><a name="_Toc366581190"></a><a name="_Toc366581782"></a><a
name="_Toc363909185"></a><a name="_Toc364463610"></a><a name="_Toc366078214"></a><a
name="_Toc366078833"></a><a name="_Toc366079818"></a><a name="_Toc366080430"></a><a
name="_Toc366081039"></a><a name="_Toc366505379"></a><a name="_Toc366508748"></a><a
name="_Toc366513249"></a><a name="_Toc366574438"></a><a name="_Toc366578231"></a><a
name="_Toc366578825"></a><a name="_Toc366579417"></a><a name="_Toc366580008"></a><a
name="_Toc366580600"></a><a name="_Toc366581191"></a><a name="_Toc366581783"></a><a
name="_Toc363909186"></a><a name="_Toc364463611"></a><a name="_Toc366078215"></a><a
name="_Toc366078834"></a><a name="_Toc366079819"></a><a name="_Toc366080431"></a><a
name="_Toc366081040"></a><a name="_Toc366505380"></a><a name="_Toc366508749"></a><a
name="_Toc366513250"></a><a name="_Toc366574439"></a><a name="_Toc366578232"></a><a
name="_Toc366578826"></a><a name="_Toc366579418"></a><a name="_Toc366580009"></a><a
name="_Toc366580601"></a><a name="_Toc366581192"></a><a name="_Toc366581784"></a><a
name="_Toc363909187"></a><a name="_Toc364463612"></a><a name="_Toc366078216"></a><a
name="_Toc366078835"></a><a name="_Toc366079820"></a><a name="_Toc366080432"></a><a
name="_Toc366081041"></a><a name="_Toc366505381"></a><a name="_Toc366508750"></a><a
name="_Toc366513251"></a><a name="_Toc366574440"></a><a name="_Toc366578233"></a><a
name="_Toc366578827"></a><a name="_Toc366579419"></a><a name="_Toc366580010"></a><a
name="_Toc366580602"></a><a name="_Toc366581193"></a><a name="_Toc366581785"></a><a
name="_Toc363909188"></a><a name="_Toc364463613"></a><a name="_Toc366078217"></a><a
name="_Toc366078836"></a><a name="_Toc366079821"></a><a name="_Toc366080433"></a><a
name="_Toc366081042"></a><a name="_Toc366505382"></a><a name="_Toc366508751"></a><a
name="_Toc366513252"></a><a name="_Toc366574441"></a><a name="_Toc366578234"></a><a
name="_Toc366578828"></a><a name="_Toc366579420"></a><a name="_Toc366580011"></a><a
name="_Toc366580603"></a><a name="_Toc366581194"></a><a name="_Toc366581786"></a><a
name="_Toc363909189"></a><a name="_Toc364463614"></a><a name="_Toc366078218"></a><a
name="_Toc366078837"></a><a name="_Toc366079822"></a><a name="_Toc366080434"></a><a
name="_Toc366081043"></a><a name="_Toc366505383"></a><a name="_Toc366508752"></a><a
name="_Toc366513253"></a><a name="_Toc366574442"></a><a name="_Toc366578235"></a><a
name="_Toc366578829"></a><a name="_Toc366579421"></a><a name="_Toc366580012"></a><a
name="_Toc366580604"></a><a name="_Toc366581195"></a><a name="_Toc366581787"></a><a
name="_Toc363909190"></a><a name="_Toc364463615"></a><a name="_Toc366078219"></a><a
name="_Toc366078838"></a><a name="_Toc366079823"></a><a name="_Toc366080435"></a><a
name="_Toc366081044"></a><a name="_Toc366505384"></a><a name="_Toc366508753"></a><a
name="_Toc366513254"></a><a name="_Toc366574443"></a><a name="_Toc366578236"></a><a
name="_Toc366578830"></a><a name="_Toc366579422"></a><a name="_Toc366580013"></a><a
name="_Toc366580605"></a><a name="_Toc366581196"></a><a name="_Toc366581788"></a><a
name="_Toc363909191"></a><a name="_Toc364463616"></a><a name="_Toc366078220"></a><a
name="_Toc366078839"></a><a name="_Toc366079824"></a><a name="_Toc366080436"></a><a
name="_Toc366081045"></a><a name="_Toc366505385"></a><a name="_Toc366508754"></a><a
name="_Toc366513255"></a><a name="_Toc366574444"></a><a name="_Toc366578237"></a><a
name="_Toc366578831"></a><a name="_Toc366579423"></a><a name="_Toc366580014"></a><a
name="_Toc366580606"></a><a name="_Toc366581197"></a><a name="_Toc366581789"></a><a
name="_Toc363909192"></a><a name="_Toc364463617"></a><a name="_Toc366078221"></a><a
name="_Toc366078840"></a><a name="_Toc366079825"></a><a name="_Toc366080437"></a><a
name="_Toc366081046"></a><a name="_Toc366505386"></a><a name="_Toc366508755"></a><a
name="_Toc366513256"></a><a name="_Toc366574445"></a><a name="_Toc366578238"></a><a
name="_Toc366578832"></a><a name="_Toc366579424"></a><a name="_Toc366580015"></a><a
name="_Toc366580607"></a><a name="_Toc366581198"></a><a name="_Toc366581790"></a><a
name="_Toc363909193"></a><a name="_Toc364463618"></a><a name="_Toc366078222"></a><a
name="_Toc366078841"></a><a name="_Toc366079826"></a><a name="_Toc366080438"></a><a
name="_Toc366081047"></a><a name="_Toc366505387"></a><a name="_Toc366508756"></a><a
name="_Toc366513257"></a><a name="_Toc366574446"></a><a name="_Toc366578239"></a><a
name="_Toc366578833"></a><a name="_Toc366579425"></a><a name="_Toc366580016"></a><a
name="_Toc366580608"></a><a name="_Toc366581199"></a><a name="_Toc366581791"></a><a
name="_Toc363909194"></a><a name="_Toc364463619"></a><a name="_Toc366078223"></a><a
name="_Toc366078842"></a><a name="_Toc366079827"></a><a name="_Toc366080439"></a><a
name="_Toc366081048"></a><a name="_Toc366505388"></a><a name="_Toc366508757"></a><a
name="_Toc366513258"></a><a name="_Toc366574447"></a><a name="_Toc366578240"></a><a
name="_Toc366578834"></a><a name="_Toc366579426"></a><a name="_Toc366580017"></a><a
name="_Toc366580609"></a><a name="_Toc366581200"></a><a name="_Toc366581792"></a><a
name="_Toc363909195"></a><a name="_Toc364463620"></a><a name="_Toc366078224"></a><a
name="_Toc366078843"></a><a name="_Toc366079828"></a><a name="_Toc366080440"></a><a
name="_Toc366081049"></a><a name="_Toc366505389"></a><a name="_Toc366508758"></a><a
name="_Toc366513259"></a><a name="_Toc366574448"></a><a name="_Toc366578241"></a><a
name="_Toc366578835"></a><a name="_Toc366579427"></a><a name="_Toc366580018"></a><a
name="_Toc366580610"></a><a name="_Toc366581201"></a><a name="_Toc366581793"></a><a
name="_Toc363909196"></a><a name="_Toc364463621"></a><a name="_Toc366078225"></a><a
name="_Toc366078844"></a><a name="_Toc366079829"></a><a name="_Toc366080441"></a><a
name="_Toc366081050"></a><a name="_Toc366505390"></a><a name="_Toc366508759"></a><a
name="_Toc366513260"></a><a name="_Toc366574449"></a><a name="_Toc366578242"></a><a
name="_Toc366578836"></a><a name="_Toc366579428"></a><a name="_Toc366580019"></a><a
name="_Toc366580611"></a><a name="_Toc366581202"></a><a name="_Toc366581794"></a><a
name="_Toc363909197"></a><a name="_Toc364463622"></a><a name="_Toc366078226"></a><a
name="_Toc366078845"></a><a name="_Toc366079830"></a><a name="_Toc366080442"></a><a
name="_Toc366081051"></a><a name="_Toc366505391"></a><a name="_Toc366508760"></a><a
name="_Toc366513261"></a><a name="_Toc366574450"></a><a name="_Toc366578243"></a><a
name="_Toc366578837"></a><a name="_Toc366579429"></a><a name="_Toc366580020"></a><a
name="_Toc366580612"></a><a name="_Toc366581203"></a><a name="_Toc366581795"></a><a
name="_Toc363909198"></a><a name="_Toc364463623"></a><a name="_Toc366078227"></a><a
name="_Toc366078846"></a><a name="_Toc366079831"></a><a name="_Toc366080443"></a><a
name="_Toc366081052"></a><a name="_Toc366505392"></a><a name="_Toc366508761"></a><a
name="_Toc366513262"></a><a name="_Toc366574451"></a><a name="_Toc366578244"></a><a
name="_Toc366578838"></a><a name="_Toc366579430"></a><a name="_Toc366580021"></a><a
name="_Toc366580613"></a><a name="_Toc366581204"></a><a name="_Toc366581796"></a><a
name="_Toc363909199"></a><a name="_Toc364463624"></a><a name="_Toc366078228"></a><a
name="_Toc366078847"></a><a name="_Toc366079832"></a><a name="_Toc366080444"></a><a
name="_Toc366081053"></a><a name="_Toc366505393"></a><a name="_Toc366508762"></a><a
name="_Toc366513263"></a><a name="_Toc366574452"></a><a name="_Toc366578245"></a><a
name="_Toc366578839"></a><a name="_Toc366579431"></a><a name="_Toc366580022"></a><a
name="_Toc366580614"></a><a name="_Toc366581205"></a><a name="_Toc366581797"></a><a
name="_Toc363909200"></a><a name="_Toc364463625"></a><a name="_Toc366078229"></a><a
name="_Toc366078848"></a><a name="_Toc366079833"></a><a name="_Toc366080445"></a><a
name="_Toc366081054"></a><a name="_Toc366505394"></a><a name="_Toc366508763"></a><a
name="_Toc366513264"></a><a name="_Toc366574453"></a><a name="_Toc366578246"></a><a
name="_Toc366578840"></a><a name="_Toc366579432"></a><a name="_Toc366580023"></a><a
name="_Toc366580615"></a><a name="_Toc366581206"></a><a name="_Toc366581798"></a><a
name="_Toc363909201"></a><a name="_Toc364463626"></a><a name="_Toc366078230"></a><a
name="_Toc366078849"></a><a name="_Toc366079834"></a><a name="_Toc366080446"></a><a
name="_Toc366081055"></a><a name="_Toc366505395"></a><a name="_Toc366508764"></a><a
name="_Toc366513265"></a><a name="_Toc366574454"></a><a name="_Toc366578247"></a><a
name="_Toc366578841"></a><a name="_Toc366579433"></a><a name="_Toc366580024"></a><a
name="_Toc366580616"></a><a name="_Toc366581207"></a><a name="_Toc366581799"></a>14.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Floating Elements</h2>
<p class=MsoNormal>Elements within an ordered sequence can be designated as
floating which means that they can appear in any position within the sequence.<a
href="#_ftn48" name="_ftnref48" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[48]</span></span></span></a></p>
<p class=MsoNormal>An ordered sequence with floating components is similar to
an unordered sequence except only the floating elements may be out of order.</p>
<p class=MsoNormal>Within an ordered sequence with floating components a
non-floating array element must have its occurrences appearing contiguously, so
any floating element occurrences cannot appear in between occurrences of the
array element.(In other words, property dfdl:floating 'yes' only makes a
statement about the floating element, not about any other elements in the
sequence.) </p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr style='page-break-inside:avoid'>
<td width="19%" valign=top style='width:19.52%;border:solid windowtext 1.0pt;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td width="80%" valign=top style='width:80.48%;border:solid windowtext 1.0pt;
border-left:none;background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr style='page-break-inside:avoid'>
<td width="19%" valign=top style='width:19.52%;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>floating</p>
</td>
<td width="80%" valign=top style='width:80.48%;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>Whether the occurrences of an element in an ordered
sequence can appear out-of-order in the representation. </p>
<p class=MsoNormal>When parsing, and dfdl:floating is 'yes', occurrences of
the element may be encountered in the representation in many positions within
its containing sequence. If present they are placed into the Infoset in
schema declaration order. If the element repeats, occurrences do not need to
be contiguous in the representation. </p>
<p class=MsoNormal>When parsing, and dfdl:floating is 'no', occurrences of
the element must be in schema declaration order, and, if present, they are
placed into the Infoset in schema declaration order. It is a Processing Error
if instances of the element are not encountered in schema declaration order. </p>
<p class=MsoNormal>When unparsing, occurrences of the element are expected in
the Infoset in schema declaration order and are output in the representation
in schema declaration order. It is a Processing Error if occurrences of the
element are not encountered in schema declaration order, </p>
<p class=MsoNormal>It is a Schema Definition Error if an unordered sequence
or a choice contains any element with dfdl:floating 'yes'. </p>
<p class=MsoNormal>It is a Schema Definition Error if an ordered sequence
contains any element with dfdl:floating 'yes' and also contains non-element
component&nbsp; (such as a choice or sequence model group). </p>
<p class=MsoNormal style='text-autospace:none'>It is a Schema Definition Error
if an element with dfdl:floating 'yes' is an optional element or an array
element and its dfdl:occursCountKind property is not 'parsed'</p>
<p class=MsoNormal style='text-autospace:none'>It is a Schema Definition
Error if two or more elements with dfdl:floating 'yes' in the same group have
the same name and the same namespace.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 49 Properties for Floating Elements</p>
<p class=MsoNormal>An ordered sequence of N element children with dfdl:floating
'yes' is equivalent to an unordered sequence with the same N element children
with dfdl:floating 'no'.</p>
<p class=MsoNormal>A complex element with dfdl:floating 'yes' can have as its
content model a sequence with elements that also have dfdl:floating 'yes'.</p>
<p class=MsoNormal>Every element in a sequence containing one or more floating
elements is a point of uncertainty, similar to the way every element in an
unordered sequence is a point of uncertainty. </p>
<p class=MsoNormal>In resolving this point of uncertainty, a parser MUST look
for the element defined at that position in the schema first and only if
unsuccessful with parsing that element, the parser MUST subsequently attempt to
parse the floating elements in the order they are defined in the schema. As
soon as any such parse is successful this resolves the point of uncertainty. </p>
<h2><a name="_Toc349042797"></a><a name="_Toc62570192"></a><a
name="_Toc364463628"></a><a name="_Toc366078232"></a><a name="_Toc366078851"></a><a
name="_Toc366079836"></a><a name="_Toc366080448"></a><a name="_Toc366081057"></a><a
name="_Toc366505397"></a><a name="_Toc366508766"></a><a name="_Toc366513267"></a><a
name="_Toc366574456"></a><a name="_Toc366578249"></a><a name="_Toc366578843"></a><a
name="_Toc366579435"></a><a name="_Toc366580026"></a><a name="_Toc366580618"></a><a
name="_Toc366581209"></a><a name="_Toc366581801"></a>14.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Hidden Groups</h2>
<p class=MsoNormal>Some fields in the physical stream provide information about
other fields in the stream and are not really part of the data. For example, a
field can give the number of repeats in a following array. These fields may not
be of interest to an application after the data has been parsed, and so may be removed
from the Infoset on parsing by containing the element declarations for them
within a hidden group. A hidden group allows elements to be defined that are not
added to the Infoset on parsing and are not expected in the Infoset on
unparsing. </p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:element name=&quot;root&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;&lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:sequence hiddenGroupRef=&quot;tns:hiddenRepeatCount&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;arrayElement&quot; type=&quot;xs:int&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minOccurs=&quot;0&quot;
maxOccurs=&quot;unbounded&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occursCountKind=&quot;expression&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occurCount= &quot;{../repeatCount}&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation=&quot;binary&quot; dfdl:lengthKind=&quot;implicit&quot;
/&gt; <br>
&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:group name=&quot;hiddenRepeatCount&quot;
&gt; <br>
&nbsp; &lt;xs:sequence&gt; <br>
&nbsp; &nbsp; &lt;xs:element name=&quot;repeatCount&quot;
type=&quot;xs:int&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{count(../arrayElement)}&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation=&quot;binary&quot; dfdl:lengthKind=&quot;implicit&quot;
/&gt; <br>
&nbsp; &lt;/xs:sequence&gt; <br>
&lt;/xs:group&gt;</span></p>
</div>
<p class=MsoNormal>An element contained within the extent of a hidden group is
commonly called a hidden element.</p>
<p class=MsoNormal>Hidden elements are referenced via path expressions using
the same DFDL expression that would be used if they were not hidden. </p>
<p class=MsoNormal>Hidden elements can (typically will) contain the regular
DFDL annotations to define their physical properties and on unparsing to set
their value. They are processed using the same behavior as non-hidden elements.</p>
<p class=MsoNormal>When the dfdl:hiddenGroupRef property is specified on an
xs:sequence schema component, the appearance of any other DFDL properties on
that component is a Schema Definition Error. It is also a Schema Definition
Error if the sequence is not empty. </p>
<p class=MsoNormal>It is a Schema Definition Error if the sequence is the only
thing in the content model of a complex type definition. </p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:hiddenGroupRef
appears on a xs:group reference, that is, unlike most format properties that
apply to sequences, dfdl:hiddenGroupRef cannot be combined from a xs:group
reference. </p>
<p class=MsoNormal>A hidden group may appear within another hidden group. </p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>hiddenGroupRef</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>QName</p>
<p class=MsoNormal>Reference to a global model group definition. Elements
within this model group are not added to the Infoset and are called hidden
elements.</p>
<p class=MsoNormal>The model group within the model group definition may be a
xs:sequence or xs:choice</p>
<p class=MsoNormal>It is a Schema Definition Error if the value is the empty
string. </p>
<p class=MsoNormal>It is not possible to place this property in scope on a
dfdl:format annotation.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:sequence</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 50 Properties for Hidden Groups</p>
<p class=MsoNormal>When unparsing a hidden group, the behaviour is the same as
when elements are missing from the Infoset; that is, the default-values
algorithm applies. The only difference is that if a required element does not
have a default value or a dfdl:outputValueCalc then it is a Schema Definition
Error instead of a Processing Error. Note that this can be checked
statically.&nbsp; </p>
<p class=MsoNormal>When unparsing a hidden group, it is a Processing Error if
an element information item is provided in the Infoset for a hidden element.</p>
<p class=MsoNormal>Examples of hidden groups are in Section 17
<a href="#_Calculated_Value_Properties">Calculated Value Properties</a>.</p>
<h1><a name="_Toc349042799"></a><a name="_Toc62570193"></a><a
name="_Toc177399117"></a><a name="_Toc175057404"></a><a name="_Toc199516349"></a><a
name="_Toc194984011"></a><a name="_Toc243112855"></a><a name="_Ref254357911"></a><a
name="_Ref254357916"></a><a name="_Ref254708854"></a><a name="_Ref254708858"></a><a
name="_Ref255476271"></a><a name="_Toc322911703"></a><a name="_Toc322912242"></a><a
name="_Toc329093099"></a><a name="_Toc332701612"></a><a name="_Toc332701916"></a><a
name="_Toc332711715"></a><a name="_Toc332712017"></a><a name="_Toc332712318"></a><a
name="_Toc332724234"></a><a name="_Toc332724534"></a><a name="_Toc341102830"></a><a
name="_Toc347241565"></a><a name="_Toc347744758"></a><a name="_Toc348984541"></a><a
name="_Toc348984846"></a><a name="_Toc349038010"></a><a name="_Toc349038312"></a><a
name="_Toc349042798"></a><a name="_Toc349642212"></a><a name="_Toc351912869"></a><a
name="_Toc351914890"></a><a name="_Toc351915356"></a><a name="_Toc361231413"></a><a
name="_Toc361231939"></a><a name="_Toc362445237"></a><a name="_Toc363909204"></a><a
name="_Toc364463630"></a><a name="_Toc366078234"></a><a name="_Toc366078853"></a><a
name="_Toc366079838"></a><a name="_Toc366080450"></a><a name="_Toc366081059"></a><a
name="_Toc366505399"></a><a name="_Toc366508768"></a><a name="_Toc366513269"></a><a
name="_Toc366574458"></a><a name="_Toc366578251"></a><a name="_Toc366578845"></a><a
name="_Toc366579437"></a><a name="_Toc366580028"></a><a name="_Toc366580620"></a><a
name="_Toc366581211"></a><a name="_Toc366581803"></a><a name="_Choice_Groups"></a>15<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Choice Groups</h1>
<p class=nobreak>A choice corresponds to concepts variously called variant
records, multi-format records, discriminated unions, or tagged unions in
various programming languages. In some contexts, choices are referred to
generally as 'unions'. However, this should not be confused with XSD unions
which are an unrelated concept.</p>
<p class=nobreak>The following properties are specific to xs:choice.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>choiceLengthKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'implicit', 'explicit'</p>
<p class=MsoNormal>'implicit' means the branches of the choice are not
filled, so the ChoiceContent<b><i> </i></b>region<b><i> </i></b>is variable
length depending on which branch appears. </p>
<p class=MsoNormal>'explicit' means that the branches of the choice are
always filled to the fixed-length specified by dfdl:choiceLength, so the ChoiceContent<b><i>
</i></b>region is fixed-length regardless of which branch appears.</p>
<p class=MsoNormal>Annotation: dfdl:choice, dfdl:group (choice)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>choiceLength</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Integer </p>
<p class=MsoNormal>Only used when dfdl:choiceLengthKind is 'explicit'. </p>
<p class=MsoNormal>Specifies the length of the choice in bytes, so the ChoiceContent<b><i>
</i></b>region is fixed-length regardless of which branch appears. A <b><i>ChoiceUnused</i></b>
region is therefore possible which when unparsing is filled with
dfdl:fillByte.</p>
<p class=MsoNormal>Annotation: dfdl:choice, dfdl:group (choice)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>initiatedContent</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Valid values are 'yes', 'no'</p>
<p class=MsoNormal>When 'yes' indicates that all the branches of the choice
are initiated. It is a Schema Definition Error if any children have their
dfdl:initiator property set to the empty string. The branch is known to exist
when its initiator has been found. Any subsequent error parsing the branch does
not cause the parser to backtrack.</p>
<p class=MsoNormal>When 'no', the branches of the choice may have their dfdl:initiator
property set to the empty string.</p>
<p class=MsoNormal>Annotation: dfdl:sequence, dfdl:choice, dfdl:group </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>choiceDispatchKey</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
<p class=MsoNormal>The expression must evaluate to an xs:string. It is a
Schema Definition Error if the expression returns an empty string.</p>
<p class=MsoNormal>It is a Schema Definition Error if the expression contains
forward references to elements which have not yet been processed.</p>
<p class=MsoNormal>This property is used only when parsing.</p>
<p class=MsoNormal>The resultant string must match one of the
dfdl:choiceBranchKey property values of one of the branches of the choice.
This match is <i>case sensitive</i>. If so, it discriminates to that branch.
The parser then goes straight to that branch, ignoring consideration of any
other choice branches. No backtracking of this decision occurs if there is a
subsequent Processing Error.</p>
<p class=MsoNormal>It is a Processing Error if the value of the expression
does not match any of the dfdl:choiceBranchKey property values for any of the
branches.</p>
<p class=MsoNormal>It is a Schema Definition Error if any choice branch does
not specify a dfdl:choiceBranchKey in a choice that carries
choiceDispatchKey.</p>
<p class=MsoNormal>It is not possible to place this property in scope on a
dfdl:format annotation.</p>
<p class=MsoNormal>Annotation: dfdl:choice</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>choiceBranchKey</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL String Literals</p>
<p class=MsoNormal>This literal provides an alternate way to discriminate a
choice to a branch. When the dfdl:choiceDispatchKey expression evaluates to a
string matching one of this property's values, the choice is discriminated to
this branch. The match is case sensitive.</p>
<p class=MsoNormal>It is a Schema Definition Error if individual
dfdl:choiceBranchKey values are not unique across all branches of a choice
that carries dfdl:choiceDispatchKey. </p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:choiceBranchKey is
specified on a global element, or on a sequence or choice that is the child
of a global group definition.</p>
<p class=MsoNormal>It is a Schema Definition Error if any choice branch does
not specify a dfdl:choiceBranchKey in a choice that carries
choiceDispatchKey.</p>
<p class=MsoNormal>Byte value entities are not allowed. </p>
<p class=MsoNormal>Character classes are not allowed.</p>
<p class=MsoNormal>This property is only used when parsing.</p>
<p class=MsoNormal>It is not possible to place this property in scope on a
dfdl:format annotation.</p>
<p class=MsoNormal>Annotation: dfdl:element, dfdl:sequence, dfdl:choice,
dfdl:group</p>
</td>
</tr>
</table>
<p class=MsoCaption><span style='color:black'>Table </span>51
Properties for Choice Groups</p>
<p class=nobreak>A choice can have a dfdl: initiator and/or a dfdl:terminator
as described earlier. </p>
<p class=MsoNormal>The explanation of choices requires this terminology:</p>
<p class=MsoNormal><b><i>Branch</i></b> - A <i>branch</i> is one of the
available alternatives within a choice. A branch can be an element of simple
type or complex type, or it can be an embedded sequence, choice or group
reference.</p>
<p class=MsoNormal><b><i>Root of the Branch</i></b> - Each branch conceptually
has a single schema component at its root which is an element, sequence, choice
or group reference. This component is known as the Root of the Branch </p>
<p class=nobreak>The Root of the Branch must not be optional. That is XSD
minOccurs must be greater than zero.</p>
<p class=MsoNormal>A choice that declares no branches in the DFDL schema is a
Schema Definition Error. </p>
<p class=nobreak>When processing a choice group, the parser validates any
contained path expressions. If a path expression contained inside a choice
branch refers to any other branch of the choice, then it is a Schema Definition
Error. Note that this rule handles nested choices also. A path that navigates
outward from an inner choice to another alternative of an outer choice is
violating this rule with respect to the outer choice. </p>
<h2><a name="_Toc177399118"></a><a name="_Toc175057405"></a><a
name="_Toc199516350"></a><a name="_Toc194984012"></a><a name="_Toc243112856"></a><a
name="_Toc349042800"></a><a name="_Toc62570194">15.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Resolving Choices</a></h2>
<p class=MsoNormal>When processing a choice, there are two ways to resolve the
intended branch. In one, speculative parsing is used. In the other, a
constant-time direct dispatch to a branch is performed.</p>
<h3><a name="_Toc349042801"></a><a name="_Toc62570195"><span style='color:black;
font-weight:normal'>15.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Resolving Choices via Speculation</a></h3>
<p class=MsoNormal>Speculative resolution works as follows:</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Attempt to
parse the first branch of the choice.</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>If this
fails with a Processing Error</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'>a)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>If a
dfdl:discriminator evaluated to true earlier on this branch <br>
then the parser is 'bound' to this branch and parsing of the entire choice
construct fails with a Processing Error.</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'>b)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>If the branch has
a dfdl:initiator and the choice has dfdl:initiatedContent &#8216;yes&#8217; <br>
then the parser is 'bound' to this branch and parsing of the entire choice
construct fails with a Processing Error.</p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'>c)<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Otherwiserepeat
from step 1 for the next branch of the choice.</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>It is a Processing
Error if the branches of the choice are exhausted. </p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in'>4.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>If a
branch is successfully parsed without error, then that branch's Infoset becomes
the Infoset for the parse of the choice construct.</p>
<p class=MsoNormal style='margin-left:.25in;text-indent:-.25in'>5.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>If the
branch is an element declaration having dfdl:occursCountKind='expression' or
dfdl:occursCountKind='parsed', then zero instances are possible. If the branch
parses successfully without a discriminator but produces no element
occurrences, then the branch is considered missing, and the parser looks for
the next branch</p>
<p class=MsoNormal>It is not possible for variable settings to be communicated
from the speculative attempt to parse a branch to any other parsing situation.
The speculative effort is completely isolated. Whether it succeeds or fails,
neither the parse position in the source data, nor anything in the variable
memory, nor the Infoset is affected.</p>
<p class=MsoNormal>Nested choices can require unbounded<a href="#_ftn49"
name="_ftnref49" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[49]</span></span></span></a>
look ahead into the data.</p>
<h3><a name="_Toc349042803"></a><a name="_Ref38541799"></a><a
name="_Ref38541809"></a><a name="_Toc62570196"></a><a name="_Toc329093103"></a><a
name="_Toc332701616"></a><a name="_Toc332701920"></a><a name="_Toc332711719"></a><a
name="_Toc332712021"></a><a name="_Toc332712322"></a><a name="_Toc332724238"></a><a
name="_Toc332724538"></a><a name="_Toc341102834"></a><a name="_Toc347241569"></a><a
name="_Toc347744762"></a><a name="_Toc348984545"></a><a name="_Toc348984850"></a><a
name="_Toc349038014"></a><a name="_Toc349038316"></a><a name="_Toc349042802"></a><a
name="_Toc351912873"></a><a name="_Toc351914894"></a><a name="_Toc351915360"></a><a
name="_Toc361231417"></a><a name="_Toc361231943"></a><a name="_Toc362445241"></a><a
name="_Toc363909208"></a><a name="_Toc364463634"></a><a name="_Toc366078238"></a><a
name="_Toc366078857"></a><a name="_Toc366079842"></a><a name="_Toc366080454"></a><a
name="_Toc366081063"></a><a name="_Toc366505403"></a><a name="_Toc366508772"></a><a
name="_Toc366513273"></a><a name="_Toc366574462"></a><a name="_Toc366578255"></a><a
name="_Toc366578849"></a><a name="_Toc366579441"></a><a name="_Toc366580032"></a><a
name="_Toc366580624"></a><a name="_Toc366581215"></a><a name="_Toc366581807"></a><a
name="_Toc322911706"></a><a name="_Toc322912245"></a><span style='color:black;
font-weight:normal'>15.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Resolving Choices via Direct Dispatch</h3>
<p class=nobreak>Direct dispatch provides a constant-time dispatch to a choice
branch independent of how many choice branches there are. </p>
<p class=MsoNormal>Direct dispatch is indicated by the dfdl:choiceDispatchKey
property. This expression is evaluated to compute the string matching (case
sensitive) one of the dfdl:choiceBranchKey property values of one of the choice
branches.</p>
<p class=MsoNormal>When a match is found, it is as if a dfdl:discriminator had
evaluated to true on that branch. It is selected as resolution of the choice,
and there is no backtracking to try other alternative selections if a Processing
Error occurs.</p>
<p class=MsoNormal>The dfdl:choiceBranchKey property can be placed on element
references, local element declarations, local sequences, local choices, or
group references. All values of dfdl:choiceBranchKey properties must be unique
across all branches of a choice that carries a dfdl:choiceDispatchKey property
and it is a Schema Definition Error otherwise.</p>
<p class=MsoNormal>Note that it is a Schema Definition Error if both
dfdl:initiatedContent and dfdl:choiceDispatchKey are provided on the same
choice. However, it is not an error if a discriminator exists on a choice
branch along with a dfdl:choiceBranchKey.</p>
<h3><a name="_Toc349042804"></a><a name="_Toc62570197"></a><a
name="_Toc397515314"></a><span style='color:black;font-weight:normal'>15.1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Unparsing
Choices</h3>
<p class=MsoNormal>On unparsing there is the question of how one identifies the
appropriate schema choice branch corresponding to the data in the Infoset. This
is complicated by the fact that the children may not be elements. They may
themselves be sequences or choices. The selection of the choice branch is as
follows: The element in the Infoset is used to search the choice branches in
the schema, in schema definition order, but without looking inside any complex
elements. If the element occurs in a branch, then that branch is selected and
if subsequently a Processing Error occurs, this selection is not revisited
(that is, there is no backtracking). If the next element to unparse does not
identify any branch of the choice, or there is no next element to unparse, then
there must be a choice branch with no required elements and the first such
branch would be selected for unparsing. A choice branch can consist only of a
nest of model groups with no actual element content or only optional element
content.</p>
<p class=MsoNormal>To avoid any unintended behavior, all the children of a
choice can be modeled as elements.</p>
<h4><span style='color:black;font-weight:normal'>15.1.3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Unparsing
Choices in Hidden Groups</h4>
<p class=MsoNormal>When a choice appears inside a hidden group, there are no
corresponding Infoset elements as there are none for hidden groups. The first
branch of the choice is unparsed. All elements contained in the branch must
have default values or must have dfdl:outputValueCalc properties to compute
their values, and it is a Schema Definition Error otherwise.</p>
<p class=MsoNormal>&nbsp;</p>
<h1><a name="_Toc112836593"></a><a name="_Toc112826311"></a><a
name="_Toc113075295"></a><a name="_Toc349042808"></a><a name="_Toc130873646"></a><a
name="_Toc140549618"></a><a name="_Toc177399121"></a><a name="_Toc175057408"></a><a
name="_Toc199516353"></a><a name="_Toc194984015"></a><a name="_Toc243112857"></a><a
name="_Ref255476292"></a><a name="_Ref351913722"></a><a name="_Ref351913750"></a><a
name="_Ref38542684"></a><a name="_Ref38542691"></a><a name="_Ref38543204"></a><a
name="_Ref38543215"></a><a name="_Toc62570198"></a><a name="_Toc397515316"></a><a
name="_Toc329093106"></a><a name="_Toc332701619"></a><a name="_Toc332701923"></a><a
name="_Toc332711722"></a><a name="_Toc332712024"></a><a name="_Toc332712325"></a><a
name="_Toc332724241"></a><a name="_Toc332724541"></a><a name="_Toc341102837"></a><a
name="_Toc347241572"></a><a name="_Toc347744765"></a><a name="_Toc348984548"></a><a
name="_Toc348984853"></a><a name="_Toc349038017"></a><a name="_Toc349038319"></a><a
name="_Toc349042805"></a><a name="_Toc349642218"></a><a name="_Toc351912876"></a><a
name="_Toc351914897"></a><a name="_Toc351915363"></a><a name="_Toc361231420"></a><a
name="_Toc361231946"></a><a name="_Toc362445244"></a><a name="_Toc363909211"></a><a
name="_Toc364463637"></a><a name="_Toc366078241"></a><a name="_Toc366078860"></a><a
name="_Toc366079845"></a><a name="_Toc366080457"></a><a name="_Toc366081066"></a><a
name="_Toc366505406"></a><a name="_Toc366508775"></a><a name="_Toc366513276"></a><a
name="_Toc366574465"></a><a name="_Toc366578258"></a><a name="_Toc366578852"></a><a
name="_Toc366579444"></a><a name="_Toc366580035"></a><a name="_Toc366580627"></a><a
name="_Toc366581218"></a><a name="_Toc366581810"></a><a name="_Toc322911707"></a><a
name="_Toc322912246"></a><a name="_Toc329093107"></a><a name="_Toc332701620"></a><a
name="_Toc332701924"></a><a name="_Toc332711723"></a><a name="_Toc332712025"></a><a
name="_Toc332712326"></a><a name="_Toc332724242"></a><a name="_Toc332724542"></a><a
name="_Toc341102838"></a><a name="_Toc347241573"></a><a name="_Toc347744766"></a><a
name="_Toc348984549"></a><a name="_Toc348984854"></a><a name="_Toc349038018"></a><a
name="_Toc349038320"></a><a name="_Toc349042806"></a><a name="_Toc349642219"></a><a
name="_Toc351912877"></a><a name="_Toc351914898"></a><a name="_Toc351915364"></a><a
name="_Toc361231421"></a><a name="_Toc361231947"></a><a name="_Toc362445245"></a><a
name="_Toc363909212"></a><a name="_Toc364463638"></a><a name="_Toc366078242"></a><a
name="_Toc366078861"></a><a name="_Toc366079846"></a><a name="_Toc366080458"></a><a
name="_Toc366081067"></a><a name="_Toc366505407"></a><a name="_Toc366508776"></a><a
name="_Toc366513277"></a><a name="_Toc366574466"></a><a name="_Toc366578259"></a><a
name="_Toc366578853"></a><a name="_Toc366579445"></a><a name="_Toc366580036"></a><a
name="_Toc366580628"></a><a name="_Toc366581219"></a><a name="_Toc366581811"></a><a
name="_Toc322911708"></a><a name="_Toc322912247"></a><a name="_Toc329093108"></a><a
name="_Toc332701621"></a><a name="_Toc332701925"></a><a name="_Toc332711724"></a><a
name="_Toc332712026"></a><a name="_Toc332712327"></a><a name="_Toc332724243"></a><a
name="_Toc332724543"></a><a name="_Toc341102839"></a><a name="_Toc347241574"></a><a
name="_Toc347744767"></a><a name="_Toc348984550"></a><a name="_Toc348984855"></a><a
name="_Toc349038019"></a><a name="_Toc349038321"></a><a name="_Toc349042807"></a><a
name="_Toc349642220"></a><a name="_Toc351912878"></a><a name="_Toc351914899"></a><a
name="_Toc351915365"></a><a name="_Toc361231422"></a><a name="_Toc361231948"></a><a
name="_Toc362445246"></a><a name="_Toc363909213"></a><a name="_Toc364463639"></a><a
name="_Toc366078243"></a><a name="_Toc366078862"></a><a name="_Toc366079847"></a><a
name="_Toc366080459"></a><a name="_Toc366081068"></a><a name="_Toc366505408"></a><a
name="_Toc366508777"></a><a name="_Toc366513278"></a><a name="_Toc366574467"></a><a
name="_Toc366578260"></a><a name="_Toc366578854"></a><a name="_Toc366579446"></a><a
name="_Toc366580037"></a><a name="_Toc366580629"></a><a name="_Toc366581220"></a><a
name="_Toc366581812"></a><a name="_Properties_for_Array"></a>16<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Properties for Array
Elements and Optional Elements</h1>
<p class=MsoNormal>These properties are for array elements (XSD maxOccurs &gt;1
or unbounded) or optional elements (XSD minOccurs 0 and XSD maxOccurs 1). The
properties handle a logical one-dimensional array of any simple or complex
type. </p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>occursCountKind</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Enum</p>
<p class=MsoNormal>Specifies how the actual number of occurrences is to be
established.&nbsp; </p>
<p class=MsoNormal>Valid values 'fixed', 'expression', 'parsed', 'implicit'
,'stopValue'. </p>
<p class=MsoNormal>'fixed' means use the XSD maxOccurs property. </p>
<p class=MsoNormal>'expression' means use the dfdl:occursCount property.</p>
<p class=MsoNormal>'parsed' means that the number of occurrences is determined
solely by speculative parsing. </p>
<p class=MsoNormal>'implicit' means that the number of occurrences is
determined by speculative parsing in conjunction with the XSD minOccurs and
XSD maxOccurs properties.</p>
<p class=MsoNormal>'stopValue' means look for a mandatory logical stop value
which signifies the end of the occurrences. </p>
<p class=MsoNormal>These values are described in detail in Section <span class=MsoHyperlink>16.1</span>.</p>
<p class=MsoNormal>Annotation: dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>occursCount</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
<p class=MsoNormal>Specifies the number of occurrences of the element.</p>
<p class=MsoNormal>Required only when dfdl:occursCountKind is 'expression'.</p>
<p class=MsoNormal>This property is computed by way of an expression which
returns a non-negative integer. The expression must not contain forward references
to elements which have not yet been processed.</p>
<p class=MsoNormal>Annotation: dfdl:element,</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>occursStopValue</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>List of DFDL Logical Values </p>
<p class=MsoNormal>A whitespace separated list of logical values that
specify&nbsp; the alternative logical stop values for the element. </p>
<p class=MsoNormal>Required only when dfdl:occursCountKind is 'stopValue'.</p>
<p class=MsoNormal>When parsing then if an occurrence of the element has a
logical value that matches one of the values in this list then the parser MUST
not expect any more occurrences of the element.</p>
<p class=MsoNormal>On unparsing the first value is inserted as an additional
final occurrence in the array after all the occurrences in the Infoset have
been output.</p>
<p class=MsoNormal>The dfdl:occursStopValue property must not be empty
string.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc130873647"></a><a name="_Toc140549619"></a><a
name="_Ref157416759">Table </a>52 Properties for Array Elements and Optional
Elements</p>
<p class=MsoNormal>When XSD minOccurs 1 and XSD maxOccurs 1, the above
properties are not used, and the behavior is as if dfdl:occursCountKind is 'fixed'
as described in Section <span class=MsoHyperlink>16.1.1</span>.</p>
<h2><a name="_Toc62570199">16.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>The </a><a name="_Ref351049926"></a><a name="_Toc351912881"></a><a
name="_Toc351914902"></a><a name="_Toc351915368"></a><a name="_Toc361231425"></a><a
name="_Toc361231951"></a><a name="_Toc362445249"></a><a name="_Toc363909216"></a><a
name="_Toc364463642"></a><a name="_Toc366078246"></a><a name="_Toc351912882"></a><a
name="_Toc351914903"></a><a name="_Toc351915369"></a><a name="_Toc361231426"></a><a
name="_Toc361231952"></a><a name="_Toc362445250"></a><a name="_Toc363909217"></a><a
name="_Toc364463643"></a><a name="_Toc366078247"></a><a name="_Toc351912883"></a><a
name="_Toc351914904"></a><a name="_Toc351915370"></a><a name="_Toc361231427"></a><a
name="_Toc361231953"></a><a name="_Toc362445251"></a><a name="_Toc363909218"></a><a
name="_Toc364463644"></a><a name="_Toc366078248"></a><a
name="_dfdl:occursCountKind_property"></a>dfdl:occursCountKind property</h2>
<h3><a name="_Ref351050062"></a><a name="_Toc62570200"><span style='color:black;
font-weight:normal'>16.1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:occursCountKind 'fixed'</a></h3>
<p class=MsoNormal>The enum 'fixed' should be used when the number of
occurrences is always the same. The number is provided by the XSD maxOccurs
property. </p>
<p class=MsoNormal>When parsing, maxOccurs occurrences are expected in the
data. It is a Processing Error if less than maxOccurs occurrences are found or
defaulted. The parser stops looking for occurrences when maxOccurs have been
found or defaulted. When maxOccurs is 0, no occurrences are looked for in the
data.</p>
<p class=MsoNormal>When unparsing, maxOccurs occurrences are expected in the Infoset.
It is a Processing Error if less than maxOccurs occurrences are found or
defaulted. The processor stops looking for more occurrence in the Infoset after
maxOccurs occurrences have been found. When maxOccurs is 0, no occurrences are
looked for in the Infoset or written.</p>
<p class=MsoNormal>It is a Schema Definition Error if XSD minOccurs is not
equal to XSD maxOccurs. </p>
<h3><a name="_Toc62570201"><span style='color:black;font-weight:normal'>16.1.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:occursCountKind
'implicit'</a></h3>
<p class=MsoNormal>The enum 'implicit' should be used when the number of
occurrences is to be established using speculative parsing, and there are lower
and upper bounds to control the speculation. The bounds are provided by the XSD
minOccurs and XSD maxOccurs properties.</p>
<p class=MsoNormal>When parsing, up to maxOccurs occurrences are expected in
the data. It is a Processing Error if less than XSD minOccurs occurrences are
found or defaulted. The parser stops looking for occurrences when either XSD
minOccurs have been found or defaulted and speculative parsing does not find
another occurrence, or XSD maxOccurs have been found or defaulted. When XSD
maxOccurs is 0, no occurrences are looked for in the data.</p>
<p class=MsoNormal>When unparsing, up to XSD maxOccurs occurrences are expected
in the Infoset. It is a Processing Error if less than XSD minOccurs occurrences
are found or defaulted. The processor stops looking for more occurrences in the
Infoset after XSD maxOccurs occurrences have been found. When XSD maxOccurs is
0, no occurrences are looked for in the Infoset or written.</p>
<h3><a name="_Toc62570202"><span style='color:black;font-weight:normal'>16.1.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:occursCountKind
'parsed'</a></h3>
<p class=MsoNormal>The enum 'parsed' should be used when the number of
occurrences is to be established solely using speculative parsing.</p>
<p class=MsoNormal>When parsing, any number of occurrences is expected in the
data. The parser stops looking for occurrences when speculative parsing does
not find another occurrence. If validation is enabled, it is a Validation Error
if less than XSD minOccurs occurrences are found or defaulted, or greater than
XSD maxOccurs occurrences are found.</p>
<p class=MsoNormal>When unparsing, any number of occurrences is expected in the
Infoset. If validation is enabled, it is a Validation Error if less than XSD
minOccurs occurrences are found or defaulted, or if more than XSD maxOccurs
occurrences are found. </p>
<h3><a name="_Toc62570203"><span style='color:black;font-weight:normal'>16.1.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:occursCountKind
'expression'</a></h3>
<p class=MsoNormal>The enum 'expression' should be used when the number of
occurrences is calculated by evaluating a DFDL expression.</p>
<p class=MsoNormal>When parsing, the dfdl:occursCount expression is evaluated
and provides the number of occurrences expected in the data. It is a Processing
Error if less than dfdl:occursCount occurrences are found or defaulted. The
parser stops looking for occurrences when dfdl:occursCount occurrences have
been found. If validation is enabled, it is a Validation Error if less than XSD
minOccurs occurrences are found or defaulted, or more than XSD maxOccurs
occurrences are found. When dfdl:occursCount is 0, no occurrences are looked
for in the data.</p>
<p class=MsoNormal style='margin:0in'><span lang=EN-GB>When unparsing, any
number of occurrences are expected in the Infoset. If validation is enabled, it
is a Validation Error if less than XSD minOccurs occurrences are found or
defaulted, or if more than XSD maxOccurs occurrences are found. The dfdl:occurs
expression is <u>not</u> evaluated. The &#8216;count&#8217; is the number of
occurrences in the augmented Infoset.</span></p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:occursCount is not
provided or in scope. </p>
<h3><a name="_Toc62570204"><span style='color:black;font-weight:normal'>16.1.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:occursCountKind
'stopValue'</a></h3>
<p class=MsoNormal>The enum 'stopValue' should be used when the end of the
array is signaled by an occurrence having a logical value that is equal to one
of the specified 'stop values'. </p>
<p class=MsoNormal>When parsing, any number of occurrences is expected in the
data, followed by an occurrence which is a stop value as specified by
dfdl:occursStopValue. It is a Processing Error if a stop value occurrence is
not found in the data (including when there are zero other occurrences). The
parser stops looking for occurrences once a stop value has been found. If
validation is enabled, it is a Validation Error if less than XSD minOccurs
occurrences are found or defaulted, or more than XSD maxOccurs occurrences are
found, not including the stop value. </p>
<p class=MsoNormal>When unparsing, the behavior is the same as for 'parsed',
with the addition that a stop value occurrence is output after the last Infoset
occurrence. If dfdl:occursStopValue provides multiple stop values then the
first is used. </p>
<p class=MsoNormal>The stop value itself is <b>not</b> added to the Infoset when
parsing. It is a Processing Error if a stop value is found in the Infoset when
unparsing. (This ensures that the array can be reparsed, as the stop value is
placed automatically and only at the end.)</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:occursStopValue is
not provided or in scope. </p>
<p class=MsoNormal>It is a Schema Definition Error if the type of the element
is complex. </p>
<p class=MsoNormal>It is a Schema Definition Error if any of the stop values
provided by dfdl:occursStopValue do not conform to the simple type of the
element. </p>
<h2><a name="_Toc349042809"></a><a name="_Toc62570205"></a><a
name="_Toc177399123"></a><a name="_Toc175057410"></a><a name="_Toc199516354"></a><a
name="_Toc194984016"></a><a name="_Toc243112858"></a><a name="_Toc351912890"></a><a
name="_Toc351914911"></a><a name="_Toc351915377"></a><a name="_Toc361231434"></a><a
name="_Toc361231960"></a><a name="_Toc362445258"></a><a name="_Toc363909225"></a><a
name="_Toc364463651"></a><a name="_Toc366078255"></a><a name="_Toc366078870"></a><a
name="_Toc366079855"></a><a name="_Toc366080467"></a><a name="_Toc366081076"></a><a
name="_Toc366505416"></a><a name="_Toc366508785"></a><a name="_Toc366513286"></a><a
name="_Toc366574475"></a><a name="_Toc366578268"></a><a name="_Toc366578862"></a><a
name="_Toc366579454"></a><a name="_Toc366580045"></a><a name="_Toc366580637"></a><a
name="_Toc366581228"></a><a name="_Toc366581820"></a>16.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Default Values for
Arrays </h2>
<p class=MsoNormal>When parsing, required occurrences that have empty
representation may trigger the application of a default value, as described in
Section <span class=MsoHyperlink>9.4.2</span> Element
Defaults When Parsing.</p>
<p class=MsoNormal>When unparsing, required occurrences that are missing from
the Infoset may trigger the application of a default value, as described in
Section <span class=MsoHyperlink>9.4.3</span> Element
Defaults When Unparsing.<a name="_Toc322911395"></a><a name="_Toc322911711"></a><a
name="_Toc322911956"></a><a name="_Toc322912250"></a><a name="_Toc329093111"></a><a
name="_Toc332701624"></a><a name="_Toc332701928"></a><a name="_Toc332711727"></a><a
name="_Toc332712029"></a><a name="_Toc332712330"></a><a name="_Toc332724246"></a><a
name="_Toc332724546"></a><a name="_Toc341102842"></a><a name="_Toc347241577"></a><a
name="_Toc347744770"></a><a name="_Toc348984553"></a><a name="_Toc348984858"></a><a
name="_Toc349038022"></a><a name="_Toc349038324"></a><a name="_Toc349042810"></a><a
name="_Toc349642223"></a></p>
<p class=MsoNormal>The application of default values is <b>not</b> dependent on
dfdl:occursCountKind, only on whether the occurrence is required or optional,
whether there is a default value specified, and whether the data contains the
empty representation (parsing) or is missing (unparsing). Section <span class=MsoHyperlink>9.4</span> Element
Defaults contains the details.</p>
<h2><a name="_Toc243112860"></a><a name="_Toc349042812"></a><a
name="_Toc62570206">16.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Arrays with DFDL Expressions</a></h2>
<p class=MsoNormal>If the value of a DFDL property of an array element (other
than dfdl:occursCount) is given by a DFDL Expression, then the expression MUST be
re-evaluated for each occurrence of the element in case the value changes. </p>
<h2><a name="_Ref351914286"></a><a name="_Toc349042813"></a><a
name="_Toc62570207">16.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Points of Uncertainty</a></h2>
<p class=MsoNormal>Arrays can have points of uncertainty depending on the value
of dfdl:occursCountKind. See Section <span
class=MsoHyperlink>9.3.3</span> Resolving
Points of Uncertainty for details.&nbsp; </p>
<h2><a name="_Toc349042815"></a><a name="_Toc62570208"></a><a
name="_Toc361231438"></a><a name="_Toc361231964"></a><a name="_Toc362445262"></a><a
name="_Toc363909229"></a><a name="_Toc364463655"></a><a name="_Toc366078259"></a><a
name="_Toc366078874"></a><a name="_Toc366079859"></a><a name="_Toc366080471"></a><a
name="_Toc366081080"></a><a name="_Toc366505420"></a><a name="_Toc366508789"></a><a
name="_Toc366513290"></a><a name="_Toc366574479"></a><a name="_Toc366578272"></a><a
name="_Toc366578866"></a><a name="_Toc366579458"></a><a name="_Toc366580049"></a><a
name="_Toc366580641"></a><a name="_Toc366581232"></a><a name="_Toc366581824"></a><a
name="_Toc361231439"></a><a name="_Toc361231965"></a><a name="_Toc362445263"></a><a
name="_Toc363909230"></a><a name="_Toc364463656"></a><a name="_Toc366078260"></a><a
name="_Toc366078875"></a><a name="_Toc366079860"></a><a name="_Toc366080472"></a><a
name="_Toc366081081"></a><a name="_Toc366505421"></a><a name="_Toc366508790"></a><a
name="_Toc366513291"></a><a name="_Toc366574480"></a><a name="_Toc366578273"></a><a
name="_Toc366578867"></a><a name="_Toc366579459"></a><a name="_Toc366580050"></a><a
name="_Toc366580642"></a><a name="_Toc366581233"></a><a name="_Toc366581825"></a><a
name="_Toc361231440"></a><a name="_Toc361231966"></a><a name="_Toc362445264"></a><a
name="_Toc363909231"></a><a name="_Toc364463657"></a><a name="_Toc366078261"></a><a
name="_Toc366078876"></a><a name="_Toc366079861"></a><a name="_Toc366080473"></a><a
name="_Toc366081082"></a><a name="_Toc366505422"></a><a name="_Toc366508791"></a><a
name="_Toc366513292"></a><a name="_Toc366574481"></a><a name="_Toc366578274"></a><a
name="_Toc366578868"></a><a name="_Toc366579460"></a><a name="_Toc366580051"></a><a
name="_Toc366580643"></a><a name="_Toc366581234"></a><a name="_Toc366581826"></a><a
name="_Toc361231441"></a><a name="_Toc361231967"></a><a name="_Toc362445265"></a><a
name="_Toc363909232"></a><a name="_Toc364463658"></a><a name="_Toc366078262"></a><a
name="_Toc366078877"></a><a name="_Toc366079862"></a><a name="_Toc366080474"></a><a
name="_Toc366081083"></a><a name="_Toc366505423"></a><a name="_Toc366508792"></a><a
name="_Toc366513293"></a><a name="_Toc366574482"></a><a name="_Toc366578275"></a><a
name="_Toc366578869"></a><a name="_Toc366579461"></a><a name="_Toc366580052"></a><a
name="_Toc366580644"></a><a name="_Toc366581235"></a><a name="_Toc366581827"></a><a
name="_Toc361231442"></a><a name="_Toc361231968"></a><a name="_Toc362445266"></a><a
name="_Toc363909233"></a><a name="_Toc364463659"></a><a name="_Toc366078263"></a><a
name="_Toc366078878"></a><a name="_Toc366079863"></a><a name="_Toc366080475"></a><a
name="_Toc366081084"></a><a name="_Toc366505424"></a><a name="_Toc366508793"></a><a
name="_Toc366513294"></a><a name="_Toc366574483"></a><a name="_Toc366578276"></a><a
name="_Toc366578870"></a><a name="_Toc366579462"></a><a name="_Toc366580053"></a><a
name="_Toc366580645"></a><a name="_Toc366581236"></a><a name="_Toc366581828"></a><a
name="_Toc361231443"></a><a name="_Toc361231969"></a><a name="_Toc362445267"></a><a
name="_Toc363909234"></a><a name="_Toc364463660"></a><a name="_Toc366078264"></a><a
name="_Toc366078879"></a><a name="_Toc366079864"></a><a name="_Toc366080476"></a><a
name="_Toc366081085"></a><a name="_Toc366505425"></a><a name="_Toc366508794"></a><a
name="_Toc366513295"></a><a name="_Toc366574484"></a><a name="_Toc366578277"></a><a
name="_Toc366578871"></a><a name="_Toc366579463"></a><a name="_Toc366580054"></a><a
name="_Toc366580646"></a><a name="_Toc366581237"></a><a name="_Toc366581829"></a><a
name="_Toc361231444"></a><a name="_Toc361231970"></a><a name="_Toc362445268"></a><a
name="_Toc363909235"></a><a name="_Toc364463661"></a><a name="_Toc366078265"></a><a
name="_Toc366078880"></a><a name="_Toc366079865"></a><a name="_Toc366080477"></a><a
name="_Toc366081086"></a><a name="_Toc366505426"></a><a name="_Toc366508795"></a><a
name="_Toc366513296"></a><a name="_Toc366574485"></a><a name="_Toc366578278"></a><a
name="_Toc366578872"></a><a name="_Toc366579464"></a><a name="_Toc366580055"></a><a
name="_Toc366580647"></a><a name="_Toc366581238"></a><a name="_Toc366581830"></a><a
name="_Toc361231445"></a><a name="_Toc361231971"></a><a name="_Toc362445269"></a><a
name="_Toc363909236"></a><a name="_Toc364463662"></a><a name="_Toc366078266"></a><a
name="_Toc366078881"></a><a name="_Toc366079866"></a><a name="_Toc366080478"></a><a
name="_Toc366081087"></a><a name="_Toc366505427"></a><a name="_Toc366508796"></a><a
name="_Toc366513297"></a><a name="_Toc366574486"></a><a name="_Toc366578279"></a><a
name="_Toc366578873"></a><a name="_Toc366579465"></a><a name="_Toc366580056"></a><a
name="_Toc366580648"></a><a name="_Toc366581239"></a><a name="_Toc366581831"></a><a
name="_Toc361231446"></a><a name="_Toc361231972"></a><a name="_Toc362445270"></a><a
name="_Toc363909237"></a><a name="_Toc364463663"></a><a name="_Toc366078267"></a><a
name="_Toc366078882"></a><a name="_Toc366079867"></a><a name="_Toc366080479"></a><a
name="_Toc366081088"></a><a name="_Toc366505428"></a><a name="_Toc366508797"></a><a
name="_Toc366513298"></a><a name="_Toc366574487"></a><a name="_Toc366578280"></a><a
name="_Toc366578874"></a><a name="_Toc366579466"></a><a name="_Toc366580057"></a><a
name="_Toc366580649"></a><a name="_Toc366581240"></a><a name="_Toc366581832"></a><a
name="_Toc361231447"></a><a name="_Toc361231973"></a><a name="_Toc362445271"></a><a
name="_Toc363909238"></a><a name="_Toc364463664"></a><a name="_Toc366078268"></a><a
name="_Toc366078883"></a><a name="_Toc366079868"></a><a name="_Toc366080480"></a><a
name="_Toc366081089"></a><a name="_Toc366505429"></a><a name="_Toc366508798"></a><a
name="_Toc366513299"></a><a name="_Toc366574488"></a><a name="_Toc366578281"></a><a
name="_Toc366578875"></a><a name="_Toc366579467"></a><a name="_Toc366580058"></a><a
name="_Toc366580650"></a><a name="_Toc366581241"></a><a name="_Toc366581833"></a><a
name="_Toc361231448"></a><a name="_Toc361231974"></a><a name="_Toc362445272"></a><a
name="_Toc363909239"></a><a name="_Toc364463665"></a><a name="_Toc366078269"></a><a
name="_Toc366078884"></a><a name="_Toc366079869"></a><a name="_Toc366080481"></a><a
name="_Toc366081090"></a><a name="_Toc366505430"></a><a name="_Toc366508799"></a><a
name="_Toc366513300"></a><a name="_Toc366574489"></a><a name="_Toc366578282"></a><a
name="_Toc366578876"></a><a name="_Toc366579468"></a><a name="_Toc366580059"></a><a
name="_Toc366580651"></a><a name="_Toc366581242"></a><a name="_Toc366581834"></a><a
name="_Toc361231449"></a><a name="_Toc361231975"></a><a name="_Toc362445273"></a><a
name="_Toc363909240"></a><a name="_Toc364463666"></a><a name="_Toc366078270"></a><a
name="_Toc366078885"></a><a name="_Toc366079870"></a><a name="_Toc366080482"></a><a
name="_Toc366081091"></a><a name="_Toc366505431"></a><a name="_Toc366508800"></a><a
name="_Toc366513301"></a><a name="_Toc366574490"></a><a name="_Toc366578283"></a><a
name="_Toc366578877"></a><a name="_Toc366579469"></a><a name="_Toc366580060"></a><a
name="_Toc366580652"></a><a name="_Toc366581243"></a><a name="_Toc366581835"></a><a
name="_Toc361231450"></a><a name="_Toc361231976"></a><a name="_Toc362445274"></a><a
name="_Toc363909241"></a><a name="_Toc364463667"></a><a name="_Toc366078271"></a><a
name="_Toc366078886"></a><a name="_Toc366079871"></a><a name="_Toc366080483"></a><a
name="_Toc366081092"></a><a name="_Toc366505432"></a><a name="_Toc366508801"></a><a
name="_Toc366513302"></a><a name="_Toc366574491"></a><a name="_Toc366578284"></a><a
name="_Toc366578878"></a><a name="_Toc366579470"></a><a name="_Toc366580061"></a><a
name="_Toc366580653"></a><a name="_Toc366581244"></a><a name="_Toc366581836"></a><a
name="_Toc361231451"></a><a name="_Toc361231977"></a><a name="_Toc362445275"></a><a
name="_Toc363909242"></a><a name="_Toc364463668"></a><a name="_Toc366078272"></a><a
name="_Toc366078887"></a><a name="_Toc366079872"></a><a name="_Toc366080484"></a><a
name="_Toc366081093"></a><a name="_Toc366505433"></a><a name="_Toc366508802"></a><a
name="_Toc366513303"></a><a name="_Toc366574492"></a><a name="_Toc366578285"></a><a
name="_Toc366578879"></a><a name="_Toc366579471"></a><a name="_Toc366580062"></a><a
name="_Toc366580654"></a><a name="_Toc366581245"></a><a name="_Toc366581837"></a><a
name="_Toc361231452"></a><a name="_Toc361231978"></a><a name="_Toc362445276"></a><a
name="_Toc363909243"></a><a name="_Toc364463669"></a><a name="_Toc366078273"></a><a
name="_Toc366078888"></a><a name="_Toc366079873"></a><a name="_Toc366080485"></a><a
name="_Toc366081094"></a><a name="_Toc366505434"></a><a name="_Toc366508803"></a><a
name="_Toc366513304"></a><a name="_Toc366574493"></a><a name="_Toc366578286"></a><a
name="_Toc366578880"></a><a name="_Toc366579472"></a><a name="_Toc366580063"></a><a
name="_Toc366580655"></a><a name="_Toc366581246"></a><a name="_Toc366581838"></a><a
name="_Toc361231453"></a><a name="_Toc361231979"></a><a name="_Toc362445277"></a><a
name="_Toc363909244"></a><a name="_Toc364463670"></a><a name="_Toc366078274"></a><a
name="_Toc366078889"></a><a name="_Toc366079874"></a><a name="_Toc366080486"></a><a
name="_Toc366081095"></a><a name="_Toc366505435"></a><a name="_Toc366508804"></a><a
name="_Toc366513305"></a><a name="_Toc366574494"></a><a name="_Toc366578287"></a><a
name="_Toc366578881"></a><a name="_Toc366579473"></a><a name="_Toc366580064"></a><a
name="_Toc366580656"></a><a name="_Toc366581247"></a><a name="_Toc366581839"></a><a
name="_Toc361231454"></a><a name="_Toc361231980"></a><a name="_Toc362445278"></a><a
name="_Toc363909245"></a><a name="_Toc364463671"></a><a name="_Toc366078275"></a><a
name="_Toc366078890"></a><a name="_Toc366079875"></a><a name="_Toc366080487"></a><a
name="_Toc366081096"></a><a name="_Toc366505436"></a><a name="_Toc366508805"></a><a
name="_Toc366513306"></a><a name="_Toc366574495"></a><a name="_Toc366578288"></a><a
name="_Toc366578882"></a><a name="_Toc366579474"></a><a name="_Toc366580065"></a><a
name="_Toc366580657"></a><a name="_Toc366581248"></a><a name="_Toc366581840"></a><a
name="_Toc361231455"></a><a name="_Toc361231981"></a><a name="_Toc362445279"></a><a
name="_Toc363909246"></a><a name="_Toc364463672"></a><a name="_Toc366078276"></a><a
name="_Toc366078891"></a><a name="_Toc366079876"></a><a name="_Toc366080488"></a><a
name="_Toc366081097"></a><a name="_Toc366505437"></a><a name="_Toc366508806"></a><a
name="_Toc366513307"></a><a name="_Toc366574496"></a><a name="_Toc366578289"></a><a
name="_Toc366578883"></a><a name="_Toc366579475"></a><a name="_Toc366580066"></a><a
name="_Toc366580658"></a><a name="_Toc366581249"></a><a name="_Toc366581841"></a><a
name="_Toc361231456"></a><a name="_Toc361231982"></a><a name="_Toc362445280"></a><a
name="_Toc363909247"></a><a name="_Toc364463673"></a><a name="_Toc366078277"></a><a
name="_Toc366078892"></a><a name="_Toc366079877"></a><a name="_Toc366080489"></a><a
name="_Toc366081098"></a><a name="_Toc366505438"></a><a name="_Toc366508807"></a><a
name="_Toc366513308"></a><a name="_Toc366574497"></a><a name="_Toc366578290"></a><a
name="_Toc366578884"></a><a name="_Toc366579476"></a><a name="_Toc366580067"></a><a
name="_Toc366580659"></a><a name="_Toc366581250"></a><a name="_Toc366581842"></a><a
name="_Toc361231457"></a><a name="_Toc361231983"></a><a name="_Toc362445281"></a><a
name="_Toc363909248"></a><a name="_Toc364463674"></a><a name="_Toc366078278"></a><a
name="_Toc366078893"></a><a name="_Toc366079878"></a><a name="_Toc366080490"></a><a
name="_Toc366081099"></a><a name="_Toc366505439"></a><a name="_Toc366508808"></a><a
name="_Toc366513309"></a><a name="_Toc366574498"></a><a name="_Toc366578291"></a><a
name="_Toc366578885"></a><a name="_Toc366579477"></a><a name="_Toc366580068"></a><a
name="_Toc366580660"></a><a name="_Toc366581251"></a><a name="_Toc366581843"></a><a
name="_Toc361231458"></a><a name="_Toc361231984"></a><a name="_Toc362445282"></a><a
name="_Toc363909249"></a><a name="_Toc364463675"></a><a name="_Toc366078279"></a><a
name="_Toc366078894"></a><a name="_Toc366079879"></a><a name="_Toc366080491"></a><a
name="_Toc366081100"></a><a name="_Toc366505440"></a><a name="_Toc366508809"></a><a
name="_Toc366513310"></a><a name="_Toc366574499"></a><a name="_Toc366578292"></a><a
name="_Toc366578886"></a><a name="_Toc366579478"></a><a name="_Toc366580069"></a><a
name="_Toc366580661"></a><a name="_Toc366581252"></a><a name="_Toc366581844"></a><a
name="_Toc361231459"></a><a name="_Toc361231985"></a><a name="_Toc362445283"></a><a
name="_Toc363909250"></a><a name="_Toc364463676"></a><a name="_Toc366078280"></a><a
name="_Toc366078895"></a><a name="_Toc366079880"></a><a name="_Toc366080492"></a><a
name="_Toc366081101"></a><a name="_Toc366505441"></a><a name="_Toc366508810"></a><a
name="_Toc366513311"></a><a name="_Toc366574500"></a><a name="_Toc366578293"></a><a
name="_Toc366578887"></a><a name="_Toc366579479"></a><a name="_Toc366580070"></a><a
name="_Toc366580662"></a><a name="_Toc366581253"></a><a name="_Toc366581845"></a><a
name="_Toc361231460"></a><a name="_Toc361231986"></a><a name="_Toc362445284"></a><a
name="_Toc363909251"></a><a name="_Toc364463677"></a><a name="_Toc366078281"></a><a
name="_Toc366078896"></a><a name="_Toc366079881"></a><a name="_Toc366080493"></a><a
name="_Toc366081102"></a><a name="_Toc366505442"></a><a name="_Toc366508811"></a><a
name="_Toc366513312"></a><a name="_Toc366574501"></a><a name="_Toc366578294"></a><a
name="_Toc366578888"></a><a name="_Toc366579480"></a><a name="_Toc366580071"></a><a
name="_Toc366580663"></a><a name="_Toc366581254"></a><a name="_Toc366581846"></a><a
name="_Toc361231461"></a><a name="_Toc361231987"></a><a name="_Toc362445285"></a><a
name="_Toc363909252"></a><a name="_Toc364463678"></a><a name="_Toc366078282"></a><a
name="_Toc366078897"></a><a name="_Toc366079882"></a><a name="_Toc366080494"></a><a
name="_Toc366081103"></a><a name="_Toc366505443"></a><a name="_Toc366508812"></a><a
name="_Toc366513313"></a><a name="_Toc366574502"></a><a name="_Toc366578295"></a><a
name="_Toc366578889"></a><a name="_Toc366579481"></a><a name="_Toc366580072"></a><a
name="_Toc366580664"></a><a name="_Toc366581255"></a><a name="_Toc366581847"></a><a
name="_Toc361231462"></a><a name="_Toc361231988"></a><a name="_Toc362445286"></a><a
name="_Toc363909253"></a><a name="_Toc364463679"></a><a name="_Toc366078283"></a><a
name="_Toc366078898"></a><a name="_Toc366079883"></a><a name="_Toc366080495"></a><a
name="_Toc366081104"></a><a name="_Toc366505444"></a><a name="_Toc366508813"></a><a
name="_Toc366513314"></a><a name="_Toc366574503"></a><a name="_Toc366578296"></a><a
name="_Toc366578890"></a><a name="_Toc366579482"></a><a name="_Toc366580073"></a><a
name="_Toc366580665"></a><a name="_Toc366581256"></a><a name="_Toc366581848"></a><a
name="_Toc361231463"></a><a name="_Toc361231989"></a><a name="_Toc362445287"></a><a
name="_Toc363909254"></a><a name="_Toc364463680"></a><a name="_Toc366078284"></a><a
name="_Toc366078899"></a><a name="_Toc366079884"></a><a name="_Toc366080496"></a><a
name="_Toc366081105"></a><a name="_Toc366505445"></a><a name="_Toc366508814"></a><a
name="_Toc366513315"></a><a name="_Toc366574504"></a><a name="_Toc366578297"></a><a
name="_Toc366578891"></a><a name="_Toc366579483"></a><a name="_Toc366580074"></a><a
name="_Toc366580666"></a><a name="_Toc366581257"></a><a name="_Toc366581849"></a><a
name="_Toc361231464"></a><a name="_Toc361231990"></a><a name="_Toc362445288"></a><a
name="_Toc363909255"></a><a name="_Toc364463681"></a><a name="_Toc366078285"></a><a
name="_Toc366078900"></a><a name="_Toc366079885"></a><a name="_Toc366080497"></a><a
name="_Toc366081106"></a><a name="_Toc366505446"></a><a name="_Toc366508815"></a><a
name="_Toc366513316"></a><a name="_Toc366574505"></a><a name="_Toc366578298"></a><a
name="_Toc366578892"></a><a name="_Toc366579484"></a><a name="_Toc366580075"></a><a
name="_Toc366580667"></a><a name="_Toc366581258"></a><a name="_Toc366581850"></a><a
name="_Toc361231465"></a><a name="_Toc361231991"></a><a name="_Toc362445289"></a><a
name="_Toc363909256"></a><a name="_Toc364463682"></a><a name="_Toc366078286"></a><a
name="_Toc366078901"></a><a name="_Toc366079886"></a><a name="_Toc366080498"></a><a
name="_Toc366081107"></a><a name="_Toc366505447"></a><a name="_Toc366508816"></a><a
name="_Toc366513317"></a><a name="_Toc366574506"></a><a name="_Toc366578299"></a><a
name="_Toc366578893"></a><a name="_Toc366579485"></a><a name="_Toc366580076"></a><a
name="_Toc366580668"></a><a name="_Toc366581259"></a><a name="_Toc366581851"></a><a
name="_Toc361231466"></a><a name="_Toc361231992"></a><a name="_Toc362445290"></a><a
name="_Toc363909257"></a><a name="_Toc364463683"></a><a name="_Toc366078287"></a><a
name="_Toc366078902"></a><a name="_Toc366079887"></a><a name="_Toc366080499"></a><a
name="_Toc366081108"></a><a name="_Toc366505448"></a><a name="_Toc366508817"></a><a
name="_Toc366513318"></a><a name="_Toc366574507"></a><a name="_Toc366578300"></a><a
name="_Toc366578894"></a><a name="_Toc366579486"></a><a name="_Toc366580077"></a><a
name="_Toc366580669"></a><a name="_Toc366581260"></a><a name="_Toc366581852"></a><a
name="_Toc361231467"></a><a name="_Toc361231993"></a><a name="_Toc362445291"></a><a
name="_Toc363909258"></a><a name="_Toc364463684"></a><a name="_Toc366078288"></a><a
name="_Toc366078903"></a><a name="_Toc366079888"></a><a name="_Toc366080500"></a><a
name="_Toc366081109"></a><a name="_Toc366505449"></a><a name="_Toc366508818"></a><a
name="_Toc366513319"></a><a name="_Toc366574508"></a><a name="_Toc366578301"></a><a
name="_Toc366578895"></a><a name="_Toc366579487"></a><a name="_Toc366580078"></a><a
name="_Toc366580670"></a><a name="_Toc366581261"></a><a name="_Toc366581853"></a><a
name="_Toc361231468"></a><a name="_Toc361231994"></a><a name="_Toc362445292"></a><a
name="_Toc363909259"></a><a name="_Toc364463685"></a><a name="_Toc366078289"></a><a
name="_Toc366078904"></a><a name="_Toc366079889"></a><a name="_Toc366080501"></a><a
name="_Toc366081110"></a><a name="_Toc366505450"></a><a name="_Toc366508819"></a><a
name="_Toc366513320"></a><a name="_Toc366574509"></a><a name="_Toc366578302"></a><a
name="_Toc366578896"></a><a name="_Toc366579488"></a><a name="_Toc366580079"></a><a
name="_Toc366580671"></a><a name="_Toc366581262"></a><a name="_Toc366581854"></a><a
name="_Toc361231469"></a><a name="_Toc361231995"></a><a name="_Toc362445293"></a><a
name="_Toc363909260"></a><a name="_Toc364463686"></a><a name="_Toc366078290"></a><a
name="_Toc366078905"></a><a name="_Toc366079890"></a><a name="_Toc366080502"></a><a
name="_Toc366081111"></a><a name="_Toc366505451"></a><a name="_Toc366508820"></a><a
name="_Toc366513321"></a><a name="_Toc366574510"></a><a name="_Toc366578303"></a><a
name="_Toc366578897"></a><a name="_Toc366579489"></a><a name="_Toc366580080"></a><a
name="_Toc366580672"></a><a name="_Toc366581263"></a><a name="_Toc366581855"></a><a
name="_Toc361231470"></a><a name="_Toc361231996"></a><a name="_Toc362445294"></a><a
name="_Toc363909261"></a><a name="_Toc364463687"></a><a name="_Toc366078291"></a><a
name="_Toc366078906"></a><a name="_Toc366079891"></a><a name="_Toc366080503"></a><a
name="_Toc366081112"></a><a name="_Toc366505452"></a><a name="_Toc366508821"></a><a
name="_Toc366513322"></a><a name="_Toc366574511"></a><a name="_Toc366578304"></a><a
name="_Toc366578898"></a><a name="_Toc366579490"></a><a name="_Toc366580081"></a><a
name="_Toc366580673"></a><a name="_Toc366581264"></a><a name="_Toc366581856"></a><a
name="_Toc361231471"></a><a name="_Toc361231997"></a><a name="_Toc362445295"></a><a
name="_Toc363909262"></a><a name="_Toc364463688"></a><a name="_Toc366078292"></a><a
name="_Toc366078907"></a><a name="_Toc366079892"></a><a name="_Toc366080504"></a><a
name="_Toc366081113"></a><a name="_Toc366505453"></a><a name="_Toc366508822"></a><a
name="_Toc366513323"></a><a name="_Toc366574512"></a><a name="_Toc366578305"></a><a
name="_Toc366578899"></a><a name="_Toc366579491"></a><a name="_Toc366580082"></a><a
name="_Toc366580674"></a><a name="_Toc366581265"></a><a name="_Toc366581857"></a><a
name="_Toc361231472"></a><a name="_Toc361231998"></a><a name="_Toc362445296"></a><a
name="_Toc363909263"></a><a name="_Toc364463689"></a><a name="_Toc366078293"></a><a
name="_Toc366078908"></a><a name="_Toc366079893"></a><a name="_Toc366080505"></a><a
name="_Toc366081114"></a><a name="_Toc366505454"></a><a name="_Toc366508823"></a><a
name="_Toc366513324"></a><a name="_Toc366574513"></a><a name="_Toc366578306"></a><a
name="_Toc366578900"></a><a name="_Toc366579492"></a><a name="_Toc366580083"></a><a
name="_Toc366580675"></a><a name="_Toc366581266"></a><a name="_Toc366581858"></a><a
name="_Toc361231473"></a><a name="_Toc361231999"></a><a name="_Toc362445297"></a><a
name="_Toc363909264"></a><a name="_Toc364463690"></a><a name="_Toc366078294"></a><a
name="_Toc366078909"></a><a name="_Toc366079894"></a><a name="_Toc366080506"></a><a
name="_Toc366081115"></a><a name="_Toc366505455"></a><a name="_Toc366508824"></a><a
name="_Toc366513325"></a><a name="_Toc366574514"></a><a name="_Toc366578307"></a><a
name="_Toc366578901"></a><a name="_Toc366579493"></a><a name="_Toc366580084"></a><a
name="_Toc366580676"></a><a name="_Toc366581267"></a><a name="_Toc366581859"></a><a
name="_Toc361231474"></a><a name="_Toc361232000"></a><a name="_Toc362445298"></a><a
name="_Toc363909265"></a><a name="_Toc364463691"></a><a name="_Toc366078295"></a><a
name="_Toc366078910"></a><a name="_Toc366079895"></a><a name="_Toc366080507"></a><a
name="_Toc366081116"></a><a name="_Toc366505456"></a><a name="_Toc366508825"></a><a
name="_Toc366513326"></a><a name="_Toc366574515"></a><a name="_Toc366578308"></a><a
name="_Toc366578902"></a><a name="_Toc366579494"></a><a name="_Toc366580085"></a><a
name="_Toc366580677"></a><a name="_Toc366581268"></a><a name="_Toc366581860"></a><a
name="_Toc361231475"></a><a name="_Toc361232001"></a><a name="_Toc362445299"></a><a
name="_Toc363909266"></a><a name="_Toc364463692"></a><a name="_Toc366078296"></a><a
name="_Toc366078911"></a><a name="_Toc366079896"></a><a name="_Toc366080508"></a><a
name="_Toc366081117"></a><a name="_Toc366505457"></a><a name="_Toc366508826"></a><a
name="_Toc366513327"></a><a name="_Toc366574516"></a><a name="_Toc366578309"></a><a
name="_Toc366578903"></a><a name="_Toc366579495"></a><a name="_Toc366580086"></a><a
name="_Toc366580678"></a><a name="_Toc366581269"></a><a name="_Toc366581861"></a><a
name="_Toc361231476"></a><a name="_Toc361232002"></a><a name="_Toc362445300"></a><a
name="_Toc363909267"></a><a name="_Toc364463693"></a><a name="_Toc366078297"></a><a
name="_Toc366078912"></a><a name="_Toc366079897"></a><a name="_Toc366080509"></a><a
name="_Toc366081118"></a><a name="_Toc366505458"></a><a name="_Toc366508827"></a><a
name="_Toc366513328"></a><a name="_Toc366574517"></a><a name="_Toc366578310"></a><a
name="_Toc366578904"></a><a name="_Toc366579496"></a><a name="_Toc366580087"></a><a
name="_Toc366580679"></a><a name="_Toc366581270"></a><a name="_Toc366581862"></a><a
name="_Toc361231477"></a><a name="_Toc361232003"></a><a name="_Toc362445301"></a><a
name="_Toc363909268"></a><a name="_Toc364463694"></a><a name="_Toc366078298"></a><a
name="_Toc366078913"></a><a name="_Toc366079898"></a><a name="_Toc366080510"></a><a
name="_Toc366081119"></a><a name="_Toc366505459"></a><a name="_Toc366508828"></a><a
name="_Toc366513329"></a><a name="_Toc366574518"></a><a name="_Toc366578311"></a><a
name="_Toc366578905"></a><a name="_Toc366579497"></a><a name="_Toc366580088"></a><a
name="_Toc366580680"></a><a name="_Toc366581271"></a><a name="_Toc366581863"></a><a
name="_Toc361231478"></a><a name="_Toc361232004"></a><a name="_Toc362445302"></a><a
name="_Toc363909269"></a><a name="_Toc364463695"></a><a name="_Toc366078299"></a><a
name="_Toc366078914"></a><a name="_Toc366079899"></a><a name="_Toc366080511"></a><a
name="_Toc366081120"></a><a name="_Toc366505460"></a><a name="_Toc366508829"></a><a
name="_Toc366513330"></a><a name="_Toc366574519"></a><a name="_Toc366578312"></a><a
name="_Toc366578906"></a><a name="_Toc366579498"></a><a name="_Toc366580089"></a><a
name="_Toc366580681"></a><a name="_Toc366581272"></a><a name="_Toc366581864"></a><a
name="_Toc351912894"></a><a name="_Toc351914915"></a><a name="_Toc351915381"></a><a
name="_Toc361231479"></a><a name="_Toc361232005"></a><a name="_Toc362445303"></a><a
name="_Toc363909270"></a><a name="_Toc364463696"></a><a name="_Toc366078300"></a><a
name="_Toc366078915"></a><a name="_Toc366079900"></a><a name="_Toc366080512"></a><a
name="_Toc366081121"></a><a name="_Toc366505461"></a><a name="_Toc366508830"></a><a
name="_Toc366513331"></a><a name="_Toc366574520"></a><a name="_Toc366578313"></a><a
name="_Toc366578907"></a><a name="_Toc366579499"></a><a name="_Toc366580090"></a><a
name="_Toc366580682"></a><a name="_Toc366581273"></a><a name="_Toc366581865"></a><a
name="_Toc351912895"></a><a name="_Toc351914916"></a><a name="_Toc351915382"></a><a
name="_Toc361231480"></a><a name="_Toc361232006"></a><a name="_Toc362445304"></a><a
name="_Toc363909271"></a><a name="_Toc364463697"></a><a name="_Toc366078301"></a><a
name="_Toc366078916"></a><a name="_Toc366079901"></a><a name="_Toc366080513"></a><a
name="_Toc366081122"></a><a name="_Toc366505462"></a><a name="_Toc366508831"></a><a
name="_Toc366513332"></a><a name="_Toc366574521"></a><a name="_Toc366578314"></a><a
name="_Toc366578908"></a><a name="_Toc366579500"></a><a name="_Toc366580091"></a><a
name="_Toc366580683"></a><a name="_Toc366581274"></a><a name="_Toc366581866"></a><a
name="_Toc351912896"></a><a name="_Toc351914917"></a><a name="_Toc351915383"></a><a
name="_Toc361231481"></a><a name="_Toc361232007"></a><a name="_Toc362445305"></a><a
name="_Toc363909272"></a><a name="_Toc364463698"></a><a name="_Toc366078302"></a><a
name="_Toc366078917"></a><a name="_Toc366079902"></a><a name="_Toc366080514"></a><a
name="_Toc366081123"></a><a name="_Toc366505463"></a><a name="_Toc366508832"></a><a
name="_Toc366513333"></a><a name="_Toc366574522"></a><a name="_Toc366578315"></a><a
name="_Toc366578909"></a><a name="_Toc366579501"></a><a name="_Toc366580092"></a><a
name="_Toc366580684"></a><a name="_Toc366581275"></a><a name="_Toc366581867"></a><a
name="_Toc351912897"></a><a name="_Toc351914918"></a><a name="_Toc351915384"></a><a
name="_Toc361231482"></a><a name="_Toc361232008"></a><a name="_Toc362445306"></a><a
name="_Toc363909273"></a><a name="_Toc364463699"></a><a name="_Toc366078303"></a><a
name="_Toc366078918"></a><a name="_Toc366079903"></a><a name="_Toc366080515"></a><a
name="_Toc366081124"></a><a name="_Toc366505464"></a><a name="_Toc366508833"></a><a
name="_Toc366513334"></a><a name="_Toc366574523"></a><a name="_Toc366578316"></a><a
name="_Toc366578910"></a><a name="_Toc366579502"></a><a name="_Toc366580093"></a><a
name="_Toc366580685"></a><a name="_Toc366581276"></a><a name="_Toc366581868"></a><a
name="_Toc351912898"></a><a name="_Toc351914919"></a><a name="_Toc351915385"></a><a
name="_Toc361231483"></a><a name="_Toc361232009"></a><a name="_Toc362445307"></a><a
name="_Toc363909274"></a><a name="_Toc364463700"></a><a name="_Toc366078304"></a><a
name="_Toc366078919"></a><a name="_Toc366079904"></a><a name="_Toc366080516"></a><a
name="_Toc366081125"></a><a name="_Toc366505465"></a><a name="_Toc366508834"></a><a
name="_Toc366513335"></a><a name="_Toc366574524"></a><a name="_Toc366578317"></a><a
name="_Toc366578911"></a><a name="_Toc366579503"></a><a name="_Toc366580094"></a><a
name="_Toc366580686"></a><a name="_Toc366581277"></a><a name="_Toc366581869"></a><a
name="_Toc351912899"></a><a name="_Toc351914920"></a><a name="_Toc351915386"></a><a
name="_Toc361231484"></a><a name="_Toc361232010"></a><a name="_Toc362445308"></a><a
name="_Toc363909275"></a><a name="_Toc364463701"></a><a name="_Toc366078305"></a><a
name="_Toc366078920"></a><a name="_Toc366079905"></a><a name="_Toc366080517"></a><a
name="_Toc366081126"></a><a name="_Toc366505466"></a><a name="_Toc366508835"></a><a
name="_Toc366513336"></a><a name="_Toc366574525"></a><a name="_Toc366578318"></a><a
name="_Toc366578912"></a><a name="_Toc366579504"></a><a name="_Toc366580095"></a><a
name="_Toc366580687"></a><a name="_Toc366581278"></a><a name="_Toc366581870"></a><a
name="_Toc351912900"></a><a name="_Toc351914921"></a><a name="_Toc351915387"></a><a
name="_Toc361231485"></a><a name="_Toc361232011"></a><a name="_Toc362445309"></a><a
name="_Toc363909276"></a><a name="_Toc364463702"></a><a name="_Toc366078306"></a><a
name="_Toc366078921"></a><a name="_Toc366079906"></a><a name="_Toc366080518"></a><a
name="_Toc366081127"></a><a name="_Toc366505467"></a><a name="_Toc366508836"></a><a
name="_Toc366513337"></a><a name="_Toc366574526"></a><a name="_Toc366578319"></a><a
name="_Toc366578913"></a><a name="_Toc366579505"></a><a name="_Toc366580096"></a><a
name="_Toc366580688"></a><a name="_Toc366581279"></a><a name="_Toc366581871"></a><a
name="_Toc351912901"></a><a name="_Toc351914922"></a><a name="_Toc351915388"></a><a
name="_Toc361231486"></a><a name="_Toc361232012"></a><a name="_Toc362445310"></a><a
name="_Toc363909277"></a><a name="_Toc364463703"></a><a name="_Toc366078307"></a><a
name="_Toc366078922"></a><a name="_Toc366079907"></a><a name="_Toc366080519"></a><a
name="_Toc366081128"></a><a name="_Toc366505468"></a><a name="_Toc366508837"></a><a
name="_Toc366513338"></a><a name="_Toc366574527"></a><a name="_Toc366578320"></a><a
name="_Toc366578914"></a><a name="_Toc366579506"></a><a name="_Toc366580097"></a><a
name="_Toc366580689"></a><a name="_Toc366581280"></a><a name="_Toc366581872"></a><a
name="_Toc351912902"></a><a name="_Toc351914923"></a><a name="_Toc351915389"></a><a
name="_Toc361231487"></a><a name="_Toc361232013"></a><a name="_Toc362445311"></a><a
name="_Toc363909278"></a><a name="_Toc364463704"></a><a name="_Toc366078308"></a><a
name="_Toc366078923"></a><a name="_Toc366079908"></a><a name="_Toc366080520"></a><a
name="_Toc366081129"></a><a name="_Toc366505469"></a><a name="_Toc366508838"></a><a
name="_Toc366513339"></a><a name="_Toc366574528"></a><a name="_Toc366578321"></a><a
name="_Toc366578915"></a><a name="_Toc366579507"></a><a name="_Toc366580098"></a><a
name="_Toc366580690"></a><a name="_Toc366581281"></a><a name="_Toc366581873"></a><a
name="_Toc351912903"></a><a name="_Toc351914924"></a><a name="_Toc351915390"></a><a
name="_Toc361231488"></a><a name="_Toc361232014"></a><a name="_Toc362445312"></a><a
name="_Toc363909279"></a><a name="_Toc364463705"></a><a name="_Toc366078309"></a><a
name="_Toc366078924"></a><a name="_Toc366079909"></a><a name="_Toc366080521"></a><a
name="_Toc366081130"></a><a name="_Toc366505470"></a><a name="_Toc366508839"></a><a
name="_Toc366513340"></a><a name="_Toc366574529"></a><a name="_Toc366578322"></a><a
name="_Toc366578916"></a><a name="_Toc366579508"></a><a name="_Toc366580099"></a><a
name="_Toc366580691"></a><a name="_Toc366581282"></a><a name="_Toc366581874"></a><a
name="_Toc351912904"></a><a name="_Toc351914925"></a><a name="_Toc351915391"></a><a
name="_Toc361231489"></a><a name="_Toc361232015"></a><a name="_Toc362445313"></a><a
name="_Toc363909280"></a><a name="_Toc364463706"></a><a name="_Toc366078310"></a><a
name="_Toc366078925"></a><a name="_Toc366079910"></a><a name="_Toc366080522"></a><a
name="_Toc366081131"></a><a name="_Toc366505471"></a><a name="_Toc366508840"></a><a
name="_Toc366513341"></a><a name="_Toc366574530"></a><a name="_Toc366578323"></a><a
name="_Toc366578917"></a><a name="_Toc366579509"></a><a name="_Toc366580100"></a><a
name="_Toc366580692"></a><a name="_Toc366581283"></a><a name="_Toc366581875"></a><a
name="_Toc351912905"></a><a name="_Toc351914926"></a><a name="_Toc351915392"></a><a
name="_Toc361231490"></a><a name="_Toc361232016"></a><a name="_Toc362445314"></a><a
name="_Toc363909281"></a><a name="_Toc364463707"></a><a name="_Toc366078311"></a><a
name="_Toc366078926"></a><a name="_Toc366079911"></a><a name="_Toc366080523"></a><a
name="_Toc366081132"></a><a name="_Toc366505472"></a><a name="_Toc366508841"></a><a
name="_Toc366513342"></a><a name="_Toc366574531"></a><a name="_Toc366578324"></a><a
name="_Toc366578918"></a><a name="_Toc366579510"></a><a name="_Toc366580101"></a><a
name="_Toc366580693"></a><a name="_Toc366581284"></a><a name="_Toc366581876"></a><a
name="_Toc351912906"></a><a name="_Toc351914927"></a><a name="_Toc351915393"></a><a
name="_Toc361231491"></a><a name="_Toc361232017"></a><a name="_Toc362445315"></a><a
name="_Toc363909282"></a><a name="_Toc364463708"></a><a name="_Toc366078312"></a><a
name="_Toc366078927"></a><a name="_Toc366079912"></a><a name="_Toc366080524"></a><a
name="_Toc366081133"></a><a name="_Toc366505473"></a><a name="_Toc366508842"></a><a
name="_Toc366513343"></a><a name="_Toc366574532"></a><a name="_Toc366578325"></a><a
name="_Toc366578919"></a><a name="_Toc366579511"></a><a name="_Toc366580102"></a><a
name="_Toc366580694"></a><a name="_Toc366581285"></a><a name="_Toc366581877"></a><a
name="_Toc351912907"></a><a name="_Toc351914928"></a><a name="_Toc351915394"></a><a
name="_Toc361231492"></a><a name="_Toc361232018"></a><a name="_Toc362445316"></a><a
name="_Toc363909283"></a><a name="_Toc364463709"></a><a name="_Toc366078313"></a><a
name="_Toc366078928"></a><a name="_Toc366079913"></a><a name="_Toc366080525"></a><a
name="_Toc366081134"></a><a name="_Toc366505474"></a><a name="_Toc366508843"></a><a
name="_Toc366513344"></a><a name="_Toc366574533"></a><a name="_Toc366578326"></a><a
name="_Toc366578920"></a><a name="_Toc366579512"></a><a name="_Toc366580103"></a><a
name="_Toc366580695"></a><a name="_Toc366581286"></a><a name="_Toc366581878"></a><a
name="_Toc351912908"></a><a name="_Toc351914929"></a><a name="_Toc351915395"></a><a
name="_Toc361231493"></a><a name="_Toc361232019"></a><a name="_Toc362445317"></a><a
name="_Toc363909284"></a><a name="_Toc364463710"></a><a name="_Toc366078314"></a><a
name="_Toc366078929"></a><a name="_Toc366079914"></a><a name="_Toc366080526"></a><a
name="_Toc366081135"></a><a name="_Toc366505475"></a><a name="_Toc366508844"></a><a
name="_Toc366513345"></a><a name="_Toc366574534"></a><a name="_Toc366578327"></a><a
name="_Toc366578921"></a><a name="_Toc366579513"></a><a name="_Toc366580104"></a><a
name="_Toc366580696"></a><a name="_Toc366581287"></a><a name="_Toc366581879"></a><a
name="_Toc351912909"></a><a name="_Toc351914930"></a><a name="_Toc351915396"></a><a
name="_Toc361231494"></a><a name="_Toc361232020"></a><a name="_Toc362445318"></a><a
name="_Toc363909285"></a><a name="_Toc364463711"></a><a name="_Toc366078315"></a><a
name="_Toc366078930"></a><a name="_Toc366079915"></a><a name="_Toc366080527"></a><a
name="_Toc366081136"></a><a name="_Toc366505476"></a><a name="_Toc366508845"></a><a
name="_Toc366513346"></a><a name="_Toc366574535"></a><a name="_Toc366578328"></a><a
name="_Toc366578922"></a><a name="_Toc366579514"></a><a name="_Toc366580105"></a><a
name="_Toc366580697"></a><a name="_Toc366581288"></a><a name="_Toc366581880"></a><a
name="_Toc351912910"></a><a name="_Toc351914931"></a><a name="_Toc351915397"></a><a
name="_Toc361231495"></a><a name="_Toc361232021"></a><a name="_Toc362445319"></a><a
name="_Toc363909286"></a><a name="_Toc364463712"></a><a name="_Toc366078316"></a><a
name="_Toc366078931"></a><a name="_Toc366079916"></a><a name="_Toc366080528"></a><a
name="_Toc366081137"></a><a name="_Toc366505477"></a><a name="_Toc366508846"></a><a
name="_Toc366513347"></a><a name="_Toc366574536"></a><a name="_Toc366578329"></a><a
name="_Toc366578923"></a><a name="_Toc366579515"></a><a name="_Toc366580106"></a><a
name="_Toc366580698"></a><a name="_Toc366581289"></a><a name="_Toc366581881"></a><a
name="_Toc351912911"></a><a name="_Toc351914932"></a><a name="_Toc351915398"></a><a
name="_Toc361231496"></a><a name="_Toc361232022"></a><a name="_Toc362445320"></a><a
name="_Toc363909287"></a><a name="_Toc364463713"></a><a name="_Toc366078317"></a><a
name="_Toc366078932"></a><a name="_Toc366079917"></a><a name="_Toc366080529"></a><a
name="_Toc366081138"></a><a name="_Toc366505478"></a><a name="_Toc366508847"></a><a
name="_Toc366513348"></a><a name="_Toc366574537"></a><a name="_Toc366578330"></a><a
name="_Toc366578924"></a><a name="_Toc366579516"></a><a name="_Toc366580107"></a><a
name="_Toc366580699"></a><a name="_Toc366581290"></a><a name="_Toc366581882"></a><a
name="_Toc351912912"></a><a name="_Toc351914933"></a><a name="_Toc351915399"></a><a
name="_Toc361231497"></a><a name="_Toc361232023"></a><a name="_Toc362445321"></a><a
name="_Toc363909288"></a><a name="_Toc364463714"></a><a name="_Toc366078318"></a><a
name="_Toc366078933"></a><a name="_Toc366079918"></a><a name="_Toc366080530"></a><a
name="_Toc366081139"></a><a name="_Toc366505479"></a><a name="_Toc366508848"></a><a
name="_Toc366513349"></a><a name="_Toc366574538"></a><a name="_Toc366578331"></a><a
name="_Toc366578925"></a><a name="_Toc366579517"></a><a name="_Toc366580108"></a><a
name="_Toc366580700"></a><a name="_Toc366581291"></a><a name="_Toc366581883"></a><a
name="_Toc351912913"></a><a name="_Toc351914934"></a><a name="_Toc351915400"></a><a
name="_Toc361231498"></a><a name="_Toc361232024"></a><a name="_Toc362445322"></a><a
name="_Toc363909289"></a><a name="_Toc364463715"></a><a name="_Toc366078319"></a><a
name="_Toc366078934"></a><a name="_Toc366079919"></a><a name="_Toc366080531"></a><a
name="_Toc366081140"></a><a name="_Toc366505480"></a><a name="_Toc366508849"></a><a
name="_Toc366513350"></a><a name="_Toc366574539"></a><a name="_Toc366578332"></a><a
name="_Toc366578926"></a><a name="_Toc366579518"></a><a name="_Toc366580109"></a><a
name="_Toc366580701"></a><a name="_Toc366581292"></a><a name="_Toc366581884"></a><a
name="_Toc351912914"></a><a name="_Toc351914935"></a><a name="_Toc351915401"></a><a
name="_Toc361231499"></a><a name="_Toc361232025"></a><a name="_Toc362445323"></a><a
name="_Toc363909290"></a><a name="_Toc364463716"></a><a name="_Toc366078320"></a><a
name="_Toc366078935"></a><a name="_Toc366079920"></a><a name="_Toc366080532"></a><a
name="_Toc366081141"></a><a name="_Toc366505481"></a><a name="_Toc366508850"></a><a
name="_Toc366513351"></a><a name="_Toc366574540"></a><a name="_Toc366578333"></a><a
name="_Toc366578927"></a><a name="_Toc366579519"></a><a name="_Toc366580110"></a><a
name="_Toc366580702"></a><a name="_Toc366581293"></a><a name="_Toc366581885"></a><a
name="_Toc351912915"></a><a name="_Toc351914936"></a><a name="_Toc351915402"></a><a
name="_Toc361231500"></a><a name="_Toc361232026"></a><a name="_Toc362445324"></a><a
name="_Toc363909291"></a><a name="_Toc364463717"></a><a name="_Toc366078321"></a><a
name="_Toc366078936"></a><a name="_Toc366079921"></a><a name="_Toc366080533"></a><a
name="_Toc366081142"></a><a name="_Toc366505482"></a><a name="_Toc366508851"></a><a
name="_Toc366513352"></a><a name="_Toc366574541"></a><a name="_Toc366578334"></a><a
name="_Toc366578928"></a><a name="_Toc366579520"></a><a name="_Toc366580111"></a><a
name="_Toc366580703"></a><a name="_Toc366581294"></a><a name="_Toc366581886"></a><a
name="_Toc351912916"></a><a name="_Toc351914937"></a><a name="_Toc351915403"></a><a
name="_Toc361231501"></a><a name="_Toc361232027"></a><a name="_Toc362445325"></a><a
name="_Toc363909292"></a><a name="_Toc364463718"></a><a name="_Toc366078322"></a><a
name="_Toc366078937"></a><a name="_Toc366079922"></a><a name="_Toc366080534"></a><a
name="_Toc366081143"></a><a name="_Toc366505483"></a><a name="_Toc366508852"></a><a
name="_Toc366513353"></a><a name="_Toc366574542"></a><a name="_Toc366578335"></a><a
name="_Toc366578929"></a><a name="_Toc366579521"></a><a name="_Toc366580112"></a><a
name="_Toc366580704"></a><a name="_Toc366581295"></a><a name="_Toc366581887"></a><a
name="_Toc351912917"></a><a name="_Toc351914938"></a><a name="_Toc351915404"></a><a
name="_Toc361231502"></a><a name="_Toc361232028"></a><a name="_Toc362445326"></a><a
name="_Toc363909293"></a><a name="_Toc364463719"></a><a name="_Toc366078323"></a><a
name="_Toc366078938"></a><a name="_Toc366079923"></a><a name="_Toc366080535"></a><a
name="_Toc366081144"></a><a name="_Toc366505484"></a><a name="_Toc366508853"></a><a
name="_Toc366513354"></a><a name="_Toc366574543"></a><a name="_Toc366578336"></a><a
name="_Toc366578930"></a><a name="_Toc366579522"></a><a name="_Toc366580113"></a><a
name="_Toc366580705"></a><a name="_Toc366581296"></a><a name="_Toc366581888"></a><a
name="_Toc351912918"></a><a name="_Toc351914939"></a><a name="_Toc351915405"></a><a
name="_Toc361231503"></a><a name="_Toc361232029"></a><a name="_Toc362445327"></a><a
name="_Toc363909294"></a><a name="_Toc364463720"></a><a name="_Toc366078324"></a><a
name="_Toc366078939"></a><a name="_Toc366079924"></a><a name="_Toc366080536"></a><a
name="_Toc366081145"></a><a name="_Toc366505485"></a><a name="_Toc366508854"></a><a
name="_Toc366513355"></a><a name="_Toc366574544"></a><a name="_Toc366578337"></a><a
name="_Toc366578931"></a><a name="_Toc366579523"></a><a name="_Toc366580114"></a><a
name="_Toc366580706"></a><a name="_Toc366581297"></a><a name="_Toc366581889"></a><a
name="_Toc351912919"></a><a name="_Toc351914940"></a><a name="_Toc351915406"></a><a
name="_Toc361231504"></a><a name="_Toc361232030"></a><a name="_Toc362445328"></a><a
name="_Toc363909295"></a><a name="_Toc364463721"></a><a name="_Toc366078325"></a><a
name="_Toc366078940"></a><a name="_Toc366079925"></a><a name="_Toc366080537"></a><a
name="_Toc366081146"></a><a name="_Toc366505486"></a><a name="_Toc366508855"></a><a
name="_Toc366513356"></a><a name="_Toc366574545"></a><a name="_Toc366578338"></a><a
name="_Toc366578932"></a><a name="_Toc366579524"></a><a name="_Toc366580115"></a><a
name="_Toc366580707"></a><a name="_Toc366581298"></a><a name="_Toc366581890"></a><a
name="_Toc351912920"></a><a name="_Toc351914941"></a><a name="_Toc351915407"></a><a
name="_Toc361231505"></a><a name="_Toc361232031"></a><a name="_Toc362445329"></a><a
name="_Toc363909296"></a><a name="_Toc364463722"></a><a name="_Toc366078326"></a><a
name="_Toc366078941"></a><a name="_Toc366079926"></a><a name="_Toc366080538"></a><a
name="_Toc366081147"></a><a name="_Toc366505487"></a><a name="_Toc366508856"></a><a
name="_Toc366513357"></a><a name="_Toc366574546"></a><a name="_Toc366578339"></a><a
name="_Toc366578933"></a><a name="_Toc366579525"></a><a name="_Toc366580116"></a><a
name="_Toc366580708"></a><a name="_Toc366581299"></a><a name="_Toc366581891"></a>16.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Arrays and Sequences</h2>
<p class=MsoNormal>In some situations, arrays of elements and sequence groups of
elements seem to be similar; however, there is no notion of the array itself
independent of its contained elements. Arrays are distinctly different from
sequence groups in this way. </p>
<p class=MsoNormal>A sequence can have its own initiator, and a complex element
having that sequence as its content can also have its own initiator, so one can
express two different initiators. </p>
<p class=MsoNormal>Unlike a sequence group, an array does not have its own
initiator, terminator, or alignment. Those properties apply to each element
occurrence of the array. To give an alignment, initiator, separator, or
terminator to an entire array one must enclose the element declaration for the
array in a sequence group and specify the alignment, separator, initiator, and
terminator on the sequence group.</p>
<h2><a name="_Toc349042816"></a><a name="_Toc62570209"></a><a
name="_Toc351912922"></a><a name="_Toc351914943"></a><a name="_Toc351915409"></a><a
name="_Toc361231507"></a><a name="_Toc361232033"></a><a name="_Toc362445331"></a><a
name="_Toc363909298"></a><a name="_Toc364463724"></a><a name="_Toc366078328"></a><a
name="_Toc366078943"></a><a name="_Toc366079928"></a><a name="_Toc366080540"></a><a
name="_Toc366081149"></a><a name="_Toc366505489"></a><a name="_Toc366508858"></a><a
name="_Toc366513359"></a><a name="_Toc366574548"></a><a name="_Toc366578341"></a><a
name="_Toc366578935"></a><a name="_Toc366579527"></a><a name="_Toc366580118"></a><a
name="_Toc366580710"></a><a name="_Toc366581301"></a><a name="_Toc366581893"></a><a
name="_Toc351912923"></a><a name="_Toc351914944"></a><a name="_Toc351915410"></a><a
name="_Toc361231508"></a><a name="_Toc361232034"></a><a name="_Toc362445332"></a><a
name="_Toc363909299"></a><a name="_Toc364463725"></a><a name="_Toc366078329"></a><a
name="_Toc366078944"></a><a name="_Toc366079929"></a><a name="_Toc366080541"></a><a
name="_Toc366081150"></a><a name="_Toc366505490"></a><a name="_Toc366508859"></a><a
name="_Toc366513360"></a><a name="_Toc366574549"></a><a name="_Toc366578342"></a><a
name="_Toc366578936"></a><a name="_Toc366579528"></a><a name="_Toc366580119"></a><a
name="_Toc366580711"></a><a name="_Toc366581302"></a><a name="_Toc366581894"></a><a
name="_Toc351912924"></a><a name="_Toc351914945"></a><a name="_Toc351915411"></a><a
name="_Toc361231509"></a><a name="_Toc361232035"></a><a name="_Toc362445333"></a><a
name="_Toc363909300"></a><a name="_Toc364463726"></a><a name="_Toc366078330"></a><a
name="_Toc366078945"></a><a name="_Toc366079930"></a><a name="_Toc366080542"></a><a
name="_Toc366081151"></a><a name="_Toc366505491"></a><a name="_Toc366508860"></a><a
name="_Toc366513361"></a><a name="_Toc366574550"></a><a name="_Toc366578343"></a><a
name="_Toc366578937"></a><a name="_Toc366579529"></a><a name="_Toc366580120"></a><a
name="_Toc366580712"></a><a name="_Toc366581303"></a><a name="_Toc366581895"></a><a
name="_Toc351912925"></a><a name="_Toc351914946"></a><a name="_Toc351915412"></a><a
name="_Toc361231510"></a><a name="_Toc361232036"></a><a name="_Toc362445334"></a><a
name="_Toc363909301"></a><a name="_Toc364463727"></a><a name="_Toc366078331"></a><a
name="_Toc366078946"></a><a name="_Toc366079931"></a><a name="_Toc366080543"></a><a
name="_Toc366081152"></a><a name="_Toc366505492"></a><a name="_Toc366508861"></a><a
name="_Toc366513362"></a><a name="_Toc366574551"></a><a name="_Toc366578344"></a><a
name="_Toc366578938"></a><a name="_Toc366579530"></a><a name="_Toc366580121"></a><a
name="_Toc366580713"></a><a name="_Toc366581304"></a><a name="_Toc366581896"></a><a
name="_Toc351912926"></a><a name="_Toc351914947"></a><a name="_Toc351915413"></a><a
name="_Toc361231511"></a><a name="_Toc361232037"></a><a name="_Toc362445335"></a><a
name="_Toc363909302"></a><a name="_Toc364463728"></a><a name="_Toc366078332"></a><a
name="_Toc366078947"></a><a name="_Toc366079932"></a><a name="_Toc366080544"></a><a
name="_Toc366081153"></a><a name="_Toc366505493"></a><a name="_Toc366508862"></a><a
name="_Toc366513363"></a><a name="_Toc366574552"></a><a name="_Toc366578345"></a><a
name="_Toc366578939"></a><a name="_Toc366579531"></a><a name="_Toc366580122"></a><a
name="_Toc366580714"></a><a name="_Toc366581305"></a><a name="_Toc366581897"></a><a
name="_Toc351912927"></a><a name="_Toc351914948"></a><a name="_Toc351915414"></a><a
name="_Toc361231512"></a><a name="_Toc361232038"></a><a name="_Toc362445336"></a><a
name="_Toc363909303"></a><a name="_Toc364463729"></a><a name="_Toc366078333"></a><a
name="_Toc366078948"></a><a name="_Toc366079933"></a><a name="_Toc366080545"></a><a
name="_Toc366081154"></a><a name="_Toc366505494"></a><a name="_Toc366508863"></a><a
name="_Toc366513364"></a><a name="_Toc366574553"></a><a name="_Toc366578346"></a><a
name="_Toc366578940"></a><a name="_Toc366579532"></a><a name="_Toc366580123"></a><a
name="_Toc366580715"></a><a name="_Toc366581306"></a><a name="_Toc366581898"></a><a
name="_Toc351912928"></a><a name="_Toc351914949"></a><a name="_Toc351915415"></a><a
name="_Toc361231513"></a><a name="_Toc361232039"></a><a name="_Toc362445337"></a><a
name="_Toc363909304"></a><a name="_Toc364463730"></a><a name="_Toc366078334"></a><a
name="_Toc366078949"></a><a name="_Toc366079934"></a><a name="_Toc366080546"></a><a
name="_Toc366081155"></a><a name="_Toc366505495"></a><a name="_Toc366508864"></a><a
name="_Toc366513365"></a><a name="_Toc366574554"></a><a name="_Toc366578347"></a><a
name="_Toc366578941"></a><a name="_Toc366579533"></a><a name="_Toc366580124"></a><a
name="_Toc366580716"></a><a name="_Toc366581307"></a><a name="_Toc366581899"></a><a
name="_Toc351912929"></a><a name="_Toc351914950"></a><a name="_Toc351915416"></a><a
name="_Toc361231514"></a><a name="_Toc361232040"></a><a name="_Toc362445338"></a><a
name="_Toc363909305"></a><a name="_Toc364463731"></a><a name="_Toc366078335"></a><a
name="_Toc366078950"></a><a name="_Toc366079935"></a><a name="_Toc366080547"></a><a
name="_Toc366081156"></a><a name="_Toc366505496"></a><a name="_Toc366508865"></a><a
name="_Toc366513366"></a><a name="_Toc366574555"></a><a name="_Toc366578348"></a><a
name="_Toc366578942"></a><a name="_Toc366579534"></a><a name="_Toc366580125"></a><a
name="_Toc366580717"></a><a name="_Toc366581308"></a><a name="_Toc366581900"></a><a
name="_Toc351912930"></a><a name="_Toc351914951"></a><a name="_Toc351915417"></a><a
name="_Toc361231515"></a><a name="_Toc361232041"></a><a name="_Toc362445339"></a><a
name="_Toc363909306"></a><a name="_Toc364463732"></a><a name="_Toc366078336"></a><a
name="_Toc366078951"></a><a name="_Toc366079936"></a><a name="_Toc366080548"></a><a
name="_Toc366081157"></a><a name="_Toc366505497"></a><a name="_Toc366508866"></a><a
name="_Toc366513367"></a><a name="_Toc366574556"></a><a name="_Toc366578349"></a><a
name="_Toc366578943"></a><a name="_Toc366579535"></a><a name="_Toc366580126"></a><a
name="_Toc366580718"></a><a name="_Toc366581309"></a><a name="_Toc366581901"></a><a
name="_Toc351912931"></a><a name="_Toc351914952"></a><a name="_Toc351915418"></a><a
name="_Toc361231516"></a><a name="_Toc361232042"></a><a name="_Toc362445340"></a><a
name="_Toc363909307"></a><a name="_Toc364463733"></a><a name="_Toc366078337"></a><a
name="_Toc366078952"></a><a name="_Toc366079937"></a><a name="_Toc366080549"></a><a
name="_Toc366081158"></a><a name="_Toc366505498"></a><a name="_Toc366508867"></a><a
name="_Toc366513368"></a><a name="_Toc366574557"></a><a name="_Toc366578350"></a><a
name="_Toc366578944"></a><a name="_Toc366579536"></a><a name="_Toc366580127"></a><a
name="_Toc366580719"></a><a name="_Toc366581310"></a><a name="_Toc366581902"></a><a
name="_Toc351912932"></a><a name="_Toc351914953"></a><a name="_Toc351915419"></a><a
name="_Toc361231517"></a><a name="_Toc361232043"></a><a name="_Toc362445341"></a><a
name="_Toc363909308"></a><a name="_Toc364463734"></a><a name="_Toc366078338"></a><a
name="_Toc366078953"></a><a name="_Toc366079938"></a><a name="_Toc366080550"></a><a
name="_Toc366081159"></a><a name="_Toc366505499"></a><a name="_Toc366508868"></a><a
name="_Toc366513369"></a><a name="_Toc366574558"></a><a name="_Toc366578351"></a><a
name="_Toc366578945"></a><a name="_Toc366579537"></a><a name="_Toc366580128"></a><a
name="_Toc366580720"></a><a name="_Toc366581311"></a><a name="_Toc366581903"></a><a
name="_Toc351912933"></a><a name="_Toc351914954"></a><a name="_Toc351915420"></a><a
name="_Toc361231518"></a><a name="_Toc361232044"></a><a name="_Toc362445342"></a><a
name="_Toc363909309"></a><a name="_Toc364463735"></a><a name="_Toc366078339"></a><a
name="_Toc366078954"></a><a name="_Toc366079939"></a><a name="_Toc366080551"></a><a
name="_Toc366081160"></a><a name="_Toc366505500"></a><a name="_Toc366508869"></a><a
name="_Toc366513370"></a><a name="_Toc366574559"></a><a name="_Toc366578352"></a><a
name="_Toc366578946"></a><a name="_Toc366579538"></a><a name="_Toc366580129"></a><a
name="_Toc366580721"></a><a name="_Toc366581312"></a><a name="_Toc366581904"></a><a
name="_Toc351912934"></a><a name="_Toc351914955"></a><a name="_Toc351915421"></a><a
name="_Toc361231519"></a><a name="_Toc361232045"></a><a name="_Toc362445343"></a><a
name="_Toc363909310"></a><a name="_Toc364463736"></a><a name="_Toc366078340"></a><a
name="_Toc366078955"></a><a name="_Toc366079940"></a><a name="_Toc366080552"></a><a
name="_Toc366081161"></a><a name="_Toc366505501"></a><a name="_Toc366508870"></a><a
name="_Toc366513371"></a><a name="_Toc366574560"></a><a name="_Toc366578353"></a><a
name="_Toc366578947"></a><a name="_Toc366579539"></a><a name="_Toc366580130"></a><a
name="_Toc366580722"></a><a name="_Toc366581313"></a><a name="_Toc366581905"></a><a
name="_Toc351912935"></a><a name="_Toc351914956"></a><a name="_Toc351915422"></a><a
name="_Toc361231520"></a><a name="_Toc361232046"></a><a name="_Toc362445344"></a><a
name="_Toc363909311"></a><a name="_Toc364463737"></a><a name="_Toc366078341"></a><a
name="_Toc366078956"></a><a name="_Toc366079941"></a><a name="_Toc366080553"></a><a
name="_Toc366081162"></a><a name="_Toc366505502"></a><a name="_Toc366508871"></a><a
name="_Toc366513372"></a><a name="_Toc366574561"></a><a name="_Toc366578354"></a><a
name="_Toc366578948"></a><a name="_Toc366579540"></a><a name="_Toc366580131"></a><a
name="_Toc366580723"></a><a name="_Toc366581314"></a><a name="_Toc366581906"></a><a
name="_Toc351912936"></a><a name="_Toc351914957"></a><a name="_Toc351915423"></a><a
name="_Toc361231521"></a><a name="_Toc361232047"></a><a name="_Toc362445345"></a><a
name="_Toc363909312"></a><a name="_Toc364463738"></a><a name="_Toc366078342"></a><a
name="_Toc366078957"></a><a name="_Toc366079942"></a><a name="_Toc366080554"></a><a
name="_Toc366081163"></a><a name="_Toc366505503"></a><a name="_Toc366508872"></a><a
name="_Toc366513373"></a><a name="_Toc366574562"></a><a name="_Toc366578355"></a><a
name="_Toc366578949"></a><a name="_Toc366579541"></a><a name="_Toc366580132"></a><a
name="_Toc366580724"></a><a name="_Toc366581315"></a><a name="_Toc366581907"></a>16.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Forward Progress
Requirement</h2>
<p class=MsoNormal><span style='color:black'>An array is potentially unbounded
if any of the following are true:</span><span style='color:black'> </span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:occursCountKind is 'stopValue' </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:occursCountKind is 'parsed'</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:occursCountKind is 'implicit' and XSD maxOccurs is unbounded
</p>
<p class=MsoNormal><span style='color:black'>To prevent an infinite loop, the
parsing of an array that is potentially unbounded MUST terminate when the
parsing of an occurrence makes no forward progress. This is detected when the
following are true:</span><span style='color:black'> </span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The occurrence is a point of uncertainty; </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The position in the data does not move during the parsing of the
occurrence (including any associated Separator, PrefixSeparator or
PostfixSeparator region); </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The occurrence is known-to-exist with empty representation or nil
representation.</p>
<p class=MsoNormal style='margin:0in;text-autospace:ideograph-numeric'><span
style='color:black'>In this situation, no forward progress occurs, and no way
of ever detecting the end of the array is possible. </span></p>
<p class=MsoNormal style='margin:0in;text-autospace:ideograph-numeric'><span
style='color:black'>Upon termination of the array, any Infoset items already
added to the array are retained except </span><span style='color:black'>when dfdl:occursCountKind
is 'stopValue' in which case this results in a Processing Error because the
stop value will never be encountered.</span></p>
<p class=MsoNormal><span style='color:black'>Further, to prevent unnecessary
consumption of resources for large bounded values of XSD maxOccurs, the parsing
of an array must similarly terminate when the following are true:</span></p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:occursCountKind is 'implicit';</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The occurrence is a point of uncertainty;</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The position in the data does not move during the parsing of the
occurrence (including any associated Separator, PrefixSeparator, or
PostfixSeparator region);</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>The occurrence is known to exist with empty representation. </p>
<p class=MsoNormal>In this situation no forward progress occurs, and nothing is
being added to the infoset. Note that this differs from the above array termination
because nil representation does not cause detection of this lack of forward
progress as nilled element items are added to the Infoset, and the array
eventually terminates when it contains XSD maxOccurs occurrences. </p>
<h2><a name="_Toc349042817"></a><a name="_Toc62570210"></a><a
name="_Toc38880544"></a><a name="_Toc38882083"></a><a name="_Toc38882361"></a><a
name="_Toc38882617"></a><a name="_Toc38882872"></a><a name="_Toc38908795"></a><a
name="_Toc39166946"></a><a name="_Toc50556762"></a><a name="_Toc50558371"></a><a
name="_Toc50633875"></a><a name="_Toc50634169"></a><a name="_Toc50634463"></a><a
name="_Toc38880545"></a><a name="_Toc38882084"></a><a name="_Toc38882362"></a><a
name="_Toc38882618"></a><a name="_Toc38882873"></a><a name="_Toc38908796"></a><a
name="_Toc39166947"></a><a name="_Toc50556763"></a><a name="_Toc50558372"></a><a
name="_Toc50633876"></a><a name="_Toc50634170"></a><a name="_Toc50634464"></a><a
name="_Toc38880546"></a><a name="_Toc38882085"></a><a name="_Toc38882363"></a><a
name="_Toc38882619"></a><a name="_Toc38882874"></a><a name="_Toc38908797"></a><a
name="_Toc39166948"></a><a name="_Toc50556764"></a><a name="_Toc50558373"></a><a
name="_Toc50633877"></a><a name="_Toc50634171"></a><a name="_Toc50634465"></a><a
name="_Toc38880547"></a><a name="_Toc38882086"></a><a name="_Toc38882364"></a><a
name="_Toc38882620"></a><a name="_Toc38882875"></a><a name="_Toc38908798"></a><a
name="_Toc39166949"></a><a name="_Toc50556765"></a><a name="_Toc50558374"></a><a
name="_Toc50633878"></a><a name="_Toc50634172"></a><a name="_Toc50634466"></a><a
name="_Toc38880548"></a><a name="_Toc38882087"></a><a name="_Toc38882365"></a><a
name="_Toc38882621"></a><a name="_Toc38882876"></a><a name="_Toc38908799"></a><a
name="_Toc39166950"></a><a name="_Toc50556766"></a><a name="_Toc50558375"></a><a
name="_Toc50633879"></a><a name="_Toc50634173"></a><a name="_Toc50634467"></a>16.7<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Parsing Occurrences
with Non-Normal Representation</h2>
<p class=MsoNormal>When parsing a single array, it is possible to extract
occurrences that have different representations (nil, empty, normal, absent)
although with some values of dfdl:lengthKind certain combinations of
representations are not possible.</p>
<p class=MsoNormal>Occurrences with nil representation are added to the Infoset
with <b>[nilled] </b>member true.</p>
<p class=MsoNormal>Occurrences with empty representation may or may not be
added to the Infoset, as described in Section <span
class=MsoHyperlink>9.4</span>. If a required occurrence is not added to the Infoset,
it may be a Processing Error, dependent on dfdl:occursCountKind as described in
Section 16.1.</p>
<p class=MsoNormal>Occurrences with absent representation are not added to the Infoset.
For a required occurrence it may be a Processing Error, dependent on
dfdl:occursCountKind as described in Section 16.1.</p>
<h2><a name="_Toc62570211">16.8<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Sparse Arrays</a></h2>
<p class=MsoNormal>Consider parsing an array where optional occurrences with
empty representation are present in the data, but there are also later optional
occurrences present with normal representation. Such an array is called a
'sparse array'. </p>
<p class=MsoNormal>If the indices of the occurrences are significant and need
to be preserved, then the array may be modelled using an element with XSD
nillable 'true', dfdl:nilKind 'literalValue', dfdl:nilValue '%ES;' and
dfdl:nilValueDelimiterPolicy the same as dfdl:emptyValueDelimiterPolicy. The
occurrences with empty representation now become occurrences with nil
representation, and produce nil values in the Infoset, so the absolute
positions of all occurrences are preserved. </p>
<p class=MsoNormal>If the indices of the occurrences are not significant, then
the array should be modelled using an element with XSD nillable 'false'.
Optional occurrences with empty representation do not create items in the Infoset,
so the absolute positions of any optional occurrences with normal
representation are not preserved. Optional occurrences with empty
representation are therefore skipped. </p>
<h1><a name="_Toc130873643"></a><a name="_Toc140549615"></a><a
name="_Toc177399126"></a><a name="_Toc175057413"></a><a name="_Toc199516356"></a><a
name="_Toc194984019"></a><a name="_Toc243112861"></a><a name="_Ref255463851"></a><a
name="_Ref255463857"></a><a name="_Ref255476304"></a><a name="_Toc349042818"></a><a
name="_Ref39164455"></a><a name="_Ref53076571"></a><a name="_Toc62570212"></a><a
name="_Calculated_Value_Properties"></a>17<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Calculated Value Properties</h1>
<p class=nobreak>This section describes properties which allow the creation of
calculated elements. When parsing, the value of a calculated element is derived
using a DFDL Expression, and not by processing bytes from the data stream. When
unparsing, the value of a calculated element is derived using a DFDL Expression
and is not obtained from the Infoset in the usual way.</p>
<p class=MsoNormal>Calculated elements allow a technique that is commonly
called layering. In this technique, some elements are said to be in the
physical layer, and some in the logical layer. When parsing, the logical layer
values are computed from physical layer values. When unparsing the opposite
occurs, that is the physical layer values are computed from the logical layer
values. </p>
<p class=MsoNormal>Calculated elements are commonly used with hidden elements to
hide the physical layer elements so that they do not become part of the Infoset.</p>
<p class=MsoNormal>When a DFDL Schema is used to both parse and unparse data,
then a calculated element on parsing normally implies use of one or more
calculated elements on unparsing. </p>
<p class=MsoNormal>These properties apply to elements of simple type.</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#F3F3F3;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Property Name</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#F3F3F3;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Description</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>inputValueCalc</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
<p class=MsoNormal>An expression that calculates the value of the element
when parsing. </p>
<p class=MsoNormal>It is a Schema Definition Error if the result type of the
expression does not conform to the base type of the element.</p>
<p class=MsoNormal>The element value created using dfdl:inputValueCalc is
validated like any other element value (when validation is enabled). </p>
<p class=MsoNormal>An element that specifies a dfdl:inputValueCalc expression
has no representation of its own in the data stream. All other DFDL
representation properties are ignored.</p>
<p class=MsoNormal>When an element which carries this property appears in a
sequence that has a separator, no separator is associated with the element.
When parsing, no separator is expected in the input data. When unparsing, no
separator is written to the output data.</p>
<p class=MsoNormal>The element must not be optional nor an array nor be
global.</p>
<p class=MsoNormal>The DFDL Expression must not refer to this element nor
cause a circular reference to this element. The expression must not contain
forward references to elements which have not yet been processed.</p>
<p class=MsoNormal>It is a Schema Definition Error if this property is
specified on an element which has an XSD fixed or default property.</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:inputValueCalc and
dfdl:outputValueCalc are specified on the same element. </p>
<p class=MsoNormal>It is not possible to place this property in scope on a
dfdl:format annotation.</p>
<p class=MsoNormal>If this property appears on an element declaration or
element reference schema component, the appearance of any other DFDL
properties on that component is a Schema Definition Error. </p>
<p class=MsoNormal>If this property appears on an element reference, then
DFDL properties expressed on the referenced global element declaration or its
type are ignored.</p>
<p class=MsoNormal>If this property appears on an element declaration, then
DFDL properties expressed on its type are ignored.</p>
<p class=MsoNormal>Annotation: dfdl:element</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>outputValueCalc</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
<p class=MsoNormal>An expression that calculates the value of the current
element when unparsing.</p>
<p class=MsoNormal>The element must not be optional nor an array nor be
global.</p>
<p class=MsoNormal>It is a Schema Definition Error if the result type of the expression
does not conform to the base type of the element.</p>
<p class=MsoNormal>The value created using dfdl:outputValueCalc is validated
like any other element value (when validation is enabled). </p>
<p class=MsoNormal>The value for the element, if any, in the Infoset is
ignored.</p>
<p class=MsoNormal>The DFDL expression must not refer to this element nor
cause a circular reference to this element. The expression may contain
forward references to elements which have not yet been processed.</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:outputValueCalc is
specified on an element which has an XSD fixed or default property.</p>
<p class=MsoNormal>It is a Schema Definition Error if dfdl:inputValueCalc and
dfdl:outputValueCalc are specified on the same element. </p>
<p class=MsoNormal>It is not possible to place this property in scope on a
dfdl:format annotation.</p>
<p class=MsoNormal style='page-break-after:avoid'>Annotation: dfdl:element</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 53 Calculated Value Properties</p>
<h2><a name="_Toc199516357"></a><a name="_Toc243112862"></a><a
name="_Toc349042819"></a><a name="_Toc62570213">17.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Example: 2d Nested Array</a></h2>
<p class=MsoNormal>Consider this simple example. The data stream contains two
elements giving the number of rows and number of columns of an array of
numbers. The representation of the array is stored after these two elements.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:complexType name=&quot;array&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:sequence
dfdl:initiator=&quot;&quot; &gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:sequence
dfdl:hiddenGroupRef=&quot;tns:hiddenArrayCounts&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element
name=&quot;rows&quot; maxOccurs=&quot;unbounded&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfdl:occursCountKind=&quot;expression&quot;
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occursCount=&quot;{ ../nrows }&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;cols&quot; type=&quot;xs:float&quot; maxOccurs=&quot;unbounded&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occursCountKind=&quot;expression&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:occursCount=&quot; { ../../ncols } &quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:element&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:group name=&quot;hiddenArrayCounts&quot;
&gt; <br>
&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;nrows&quot;
type=&quot;xs:unsignedInt&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;implicit&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ count(../rows) }&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;ncols&quot;
type=&quot;xs:unsignedInt&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:lengthKind=&quot;implicit&quot; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;{&nbsp; if ( count(../rows) ge 1 )</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
then</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
count(../rows[1]/cols) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
else</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:sequence&gt; <br>
&lt;/xs:group&gt;</span></p>
</div>
<p class=MsoNormal>In the example abovethere are two hidden elements named
'nrows' and 'ncols'. These hidden elements' values are computed when unparsing
from the number of occurrences in the 'rows' and 'cols' repeating elements. The
'rows' and 'cols' repeating elements number of occurrences are computed when
parsing from the hidden elements 'nrows' and 'ncols'. </p>
<h2><a name="_Toc199516358"></a><a name="_Toc243112863"></a><a
name="_Toc349042821"></a><a name="_Toc62570214"></a><a name="_Toc322911716"></a><a
name="_Toc322912255"></a><a name="_Toc329093116"></a><a name="_Toc332701629"></a><a
name="_Toc332701933"></a><a name="_Toc332711732"></a><a name="_Toc332712034"></a><a
name="_Toc332712335"></a><a name="_Toc332724251"></a><a name="_Toc332724551"></a><a
name="_Toc341102847"></a><a name="_Toc347241582"></a><a name="_Toc347744775"></a><a
name="_Toc348984558"></a><a name="_Toc348984863"></a><a name="_Toc349038027"></a><a
name="_Toc349038329"></a><a name="_Toc349042820"></a><a name="_Toc349642233"></a><a
name="_Toc351912942"></a><a name="_Toc351914963"></a><a name="_Toc351915429"></a><a
name="_Toc361231527"></a><a name="_Toc361232053"></a><a name="_Toc362445351"></a><a
name="_Toc363909318"></a><a name="_Toc364463744"></a><a name="_Toc366078348"></a><a
name="_Toc366078963"></a><a name="_Toc366079948"></a><a name="_Toc366080560"></a><a
name="_Toc366081169"></a><a name="_Toc366505509"></a><a name="_Toc366508878"></a><a
name="_Toc366513379"></a><a name="_Toc366574568"></a><a name="_Toc366578361"></a><a
name="_Toc366578955"></a><a name="_Toc366579547"></a><a name="_Toc366580138"></a><a
name="_Toc366580730"></a><a name="_Toc366581321"></a><a name="_Toc366581913"></a>17.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Example: Three-Byte
Date</h2>
<p class=MsoNormal>Logically, the data is a date.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:element name=&quot;d&quot;
type=&quot;date&quot;/&gt;</span></p>
</div>
<p class=MsoNormal>Physically, it is stored as 3 single byte integers. </p>
<p class=MsoNormal>The format of this data is expressed as this schema:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence
dfdl:representation=&quot;binary&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;mm&quot; type=&quot;byte&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;dd&quot; type=&quot;byte&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;yy&quot; type=&quot;byte&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>This physical representation can be hidden so that it does
not become part of the Infoset:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:sequence
dfdl:hiddenGroupRef=&quot;tns:hiddenpDate&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;d&quot;
type=&quot;date&quot;&gt; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &#8230;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:group name=&quot;hiddenpDate&quot; &gt; <br>
&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;<i>pdate</i>&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence dfdl:representation=&quot;binary&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;mm&quot; type=&quot;byte&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;dd&quot; type=&quot;byte&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;yy&quot; type=&quot;byte&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:sequence&gt; <br>
&lt;/xs:group&gt;</span></p>
</div>
<p class=MsoNormal>A calculation can be used to compute the logical date
element 'd' from the physical 'pdate' when parsing:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; ... hidden pdate here ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;d&quot;
type=&quot;date&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;&lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:property name=&quot;inputValueCalc&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{ </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
fn:date(fn:concat(if(../pdate/yy gt 50 )then &quot;19&quot; else
&quot;20&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if ( ../pdate/yy gt 9 ) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
then xs:string(../pdate/yy) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
else fn:concat(&quot;0&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xs:string(../pdate/yy)),&nbsp;&nbsp;
</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;-&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xs:string(../pdate/mm),</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;-&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xs:string(../pdate/dd)))</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:property&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; ...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>The expression above assembles a string resembling, for
example, &quot;2005-12-17&quot; or &quot;1957-3-9&quot; which is the string representation
of a date that is acceptable to the <span class=CodeCharacter>fn:date</span>
constructor function. The hidden element <span class=CodeCharacter>'pdate'</span>
is referenced by relative paths. The expression <span class=CodeCharacter>'../pdate/yy'</span>
accesses an element of type <span class=CodeCharacter>'int'</span>, and the <span
class=CodeCharacter>xs:string</span> constructor function turns it into an
integer. </p>
<p class=MsoNormal>Finally,one must handle the unparse case where the physical
layer is computed from the logical layer:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence
dfdl:representation=&quot;binary&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;mm&quot;
type=&quot;byte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ fn:month-from-date(../d) }&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;dd&quot;
type=&quot;byte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ fn:day-from-date(../d) }&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;yy&quot;
type=&quot;byte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ fn:year-from-date(../d) idivmod 100 }&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
</div>
<p class=MsoNormal>The entire example in one place:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:sequence
dfdl:hiddenGroupRef=&quot;tns:hiddenpDate&quot;/&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;xs:element name=&quot;d&quot;
type=&quot;date&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;
&lt;xs:annotation&gt;&lt;xs:appinfo
source=&quot;http://www.ogf.org/dfdl/&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;dfdl:property name=&quot;inputValueCalc&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{ </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
fn:date(fn:concat(if(../pdate/yy gt 50) then &quot;19&quot; else
&quot;20&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if ( ../pdate/yy gt 9 ) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
then xs:string(../pdate/yy) </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
else fn:concat(&quot;0&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xs:string(../pdate/yy)),&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;-&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xs:string(../pdate/mm),</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;-&quot;,</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
xs:string(../pdate/dd)))</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/dfdl:property&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/dfdl:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:appinfo&gt;&lt;/xs:annotation&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; </span><span lang=EN-GB style='color:
black'>...</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB>&nbsp;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&lt;xs:group name=&quot;hiddenpDate&quot; &gt; <br>
&nbsp; &lt;xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;xs:element name=&quot;<i>pdate</i>&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:sequence dfdl:representation=&quot;binary&quot;&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;mm&quot; type=&quot;byte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ fn:month-from-date(../d) }&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;dd&quot; type=&quot;byte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ fn:day-from-date(../d) }&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;xs:element name=&quot;yy&quot; type=&quot;byte&quot;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dfdl:outputValueCalc=&quot;{ fn:year-from-date(../d)</span><span lang=EN-GB
style='color:black'> idivmod 100 }&quot; /&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:sequence&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/xs:complexType&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp; &lt;/xs:sequence&gt; <br>
&lt;/xs:group&gt;</span></p>
</div>
<p class=MsoNormal>The above sequence contains logically only a single date
element. </p>
<h1><a name="_Ref140941751"></a><a name="_Ref140941755"></a><a
name="_Ref161836873"></a><a name="_Toc177399137"></a><a name="_Toc175057424"></a><a
name="_Toc199516365"></a><a name="_Toc194984026"></a><a name="_Toc243112869"></a><a
name="_Ref250486450"></a><a name="_Toc349042824"></a><a name="_Ref39164965"></a><a
name="_Ref39164981"></a><a name="_Toc62570215"></a><a name="_Toc322911718"></a><a
name="_Toc322912257"></a><a name="_Toc329093118"></a><a name="_Toc332701631"></a><a
name="_Toc332701935"></a><a name="_Toc332711734"></a><a name="_Toc332712036"></a><a
name="_Toc332712337"></a><a name="_Toc332724253"></a><a name="_Toc332724553"></a><a
name="_Toc341102849"></a><a name="_Toc347241584"></a><a name="_Toc347744777"></a><a
name="_Toc348984560"></a><a name="_Toc348984865"></a><a name="_Toc349038029"></a><a
name="_Toc349038331"></a><a name="_Toc349042822"></a><a name="_Toc349642235"></a><a
name="_Toc351912944"></a><a name="_Toc351914965"></a><a name="_Toc351915431"></a><a
name="_Toc361231529"></a><a name="_Toc361232055"></a><a name="_Toc362445353"></a><a
name="_Toc363909320"></a><a name="_Toc364463746"></a><a name="_Toc366078350"></a><a
name="_Toc366078965"></a><a name="_Toc366079950"></a><a name="_Toc366080562"></a><a
name="_Toc366081171"></a><a name="_Toc366505511"></a><a name="_Toc366508880"></a><a
name="_Toc366513381"></a><a name="_Toc366574570"></a><a name="_Toc366578363"></a><a
name="_Toc366578957"></a><a name="_Toc366579549"></a><a name="_Toc366580140"></a><a
name="_Toc366580732"></a><a name="_Toc366581323"></a><a name="_Toc366581915"></a><a
name="_Toc322911719"></a><a name="_Toc322912258"></a><a name="_Toc329093119"></a><a
name="_Toc332701632"></a><a name="_Toc332701936"></a><a name="_Toc332711735"></a><a
name="_Toc332712037"></a><a name="_Toc332712338"></a><a name="_Toc332724254"></a><a
name="_Toc332724554"></a><a name="_Toc341102850"></a><a name="_Toc347241585"></a><a
name="_Toc347744778"></a><a name="_Toc348984561"></a><a name="_Toc348984866"></a><a
name="_Toc349038030"></a><a name="_Toc349038332"></a><a name="_Toc349042823"></a><a
name="_Toc349642236"></a><a name="_Toc351912945"></a><a name="_Toc351914966"></a><a
name="_Toc351915432"></a><a name="_Toc361231530"></a><a name="_Toc361232056"></a><a
name="_Toc362445354"></a><a name="_Toc363909321"></a><a name="_Toc364463747"></a><a
name="_Toc366078351"></a><a name="_Toc366078966"></a><a name="_Toc366079951"></a><a
name="_Toc366080563"></a><a name="_Toc366081172"></a><a name="_Toc366505512"></a><a
name="_Toc366508881"></a><a name="_Toc366513382"></a><a name="_Toc366574571"></a><a
name="_Toc366578364"></a><a name="_Toc366578958"></a><a name="_Toc366579550"></a><a
name="_Toc366580141"></a><a name="_Toc366580733"></a><a name="_Toc366581324"></a><a
name="_Toc366581916"></a><a name="_Toc234993996"></a><a name="_Toc234994000"></a><a
name="_Toc184192066"></a><a name="_Toc184210610"></a><a name="_Toc184192068"></a><a
name="_Toc184210612"></a><a name="_Toc184192078"></a><a name="_Toc184210622"></a><a
name="_Toc184192081"></a><a name="_Toc184210625"></a><a name="_Toc184192089"></a><a
name="_Toc184210633"></a><a name="_DFDL_Expression_Language"></a>18<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>DFDL Expression
Language</h1>
<p class=MsoNormal>The DFDL expression language allows the processing of values
conforming to the data model defined in the DFDL Infoset. It allows properties
in the DFDL schema to be dependent on the value of an occurrence of an element
or the value of a DFDL variable. For example, the length of the content of an
element can be made dependent on the value of another element in the document.</p>
<p class=MsoNormal>The main uses of the expression language are as follows:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>When a DFDL property needs to be set dynamically at parse
time from the value of one or more elements of the data. Properties such
as dfdl:initiator, dfdl:terminator, dfdl:length, dfdl:occursCount, and dfdl:separator
accept an expression.</li>
<li class=MsoNormal>In a dfdl:assert annotation&nbsp; </li>
<li class=MsoNormal>In a dfdl:discriminator annotation to resolve uncertainty
when parsing</li>
<li class=MsoNormal>In a dfdl:inputValueCalc property to derive the value of
an element in the logical model that doesn't exist in the physical data.</li>
<li class=MsoNormal>In a dfdl:outputValueCalc property to compute the value of
an element on unparsing.</li>
<li class=MsoNormal>As the value in a dfdl:setVariable annotation or the
dfdl:defaultValue in a dfdl:defineVariable or dfdl:newVariableInstance.</li>
</ol>
<p class=nobreak>The DFDL expression language is a subset of XPath 2.0 [<a
href="#a_XPath">XPath</a>]. DFDL uses a subset of XML schema and has a simpler
information model, so only a subset of XPath 2.0 expressions is meaningful in
DFDL Schemas. For example, there are no attributes in DFDL, so the attribute
axis is not needed. </p>
<p class=MsoBodyText>XPath 2.0 specification [XPATH2] allows
implementation-dependent evaluation of expressions thereby allowing either lazy
(sequential) evaluation or full (parallel) evaluation of expressions with OR
and AND clauses. This flexibility is not desirable in DFDL 1.0 implementations,
so the <span style='color:black'>specification is changed to prescribe lazy
(sequential) evaluation left-to-right</span><span style='color:blue'>.</span></p>
<p class=nobreak>In addition, DFDL expressions never return node-sequences
having more than one node. DFDL expressions either return a simple value, a
node sequence containing exactly one node/value, or an empty node sequence. Node
sequences of length greater than one can be used within the expression, just
not as the final result. Alternatively, one can state this as there are no
constructs in DFDL which can accept a node sequence of more than one node;
hence, DFDL expressions can never return a node sequence of more than one node
as their final result.&nbsp; </p>
<p class=MsoNormal>For nilled elements, an attempt to get the value of a nilled
element returns an empty node sequence.</p>
<p class=MsoNormal>DFDL implementations MUST comply with the error code
behaviour in Appendix G of the XPath 2.0 spec and map these to the correct DFDL
failure type. All but one of XPath's errors map to a Schema Definition Error.
The exception is XPTY0004, which is used both for static and dynamic cases of
type mismatch. A static type mismatch maps to a Schema Definition Error,
whereas a dynamic type mismatch maps to a Processing Error. A DFDL
implementation SHOULD distinguish the two kinds of XPTY0004 error if it is able
to do so, but if unable it MUST map all XPTY0004 errors to a Schema Definition
Error</p>
<p class=MsoNormal>Implementation Note: DFDL implementations MAY use
off-the-shelf XPath 2.0 processors, but must pre-process DFDL expressions to
ensure that the behaviour matches the DFDL specification:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Ensure that what is returned as the result is not a sequence with
length &gt; 1 by appropriate use of fn:exactly-one().</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Check for the disallowed use of those XPath 2.0 functions that
are not in the DFDL subset </p>
<p class=MsoNormal>XPath 2.0 specification [XPATH2] defines its functions to be
in namespace <a href="http://www.w3.org/2005/xpath-functions"><span
class=InternetLink>http://www.w3.org/2005/xpath-functions</span></a>. The DFDL
specification assumes namespace prefix &#8220;fn:&#8221; is bound to this
namespace.</p>
<h2><a name="_Toc174796502"></a><a name="_Toc199516269"></a><a
name="_Toc194983945"></a><a name="_Toc243112798"></a><a name="_Toc349042855"></a><a
name="_Toc62570216">18.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Expression Language Data Model</a></h2>
<p class=MsoNormal>The DFDL expression language operates on the DFDL augmented Infoset
with the addition of the hidden elements.</p>
<p class=MsoNormal>Relative path expressions are evaluated relative to the
current Infoset Element Information Item, also referred to as the <i>current
element</i> for short. </p>
<p class=MsoNormal>In general, a DFDL expression can only reference an element
that precedes the position in the schema where the expression is declared, and
it is a schema definition otherwise, with the following exceptions:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>An assert or discriminator on a component may reference an
element that is a descendent of the component.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>A dfdl:outputValueCalc property may reference an element that
follows the position in the schema where the property is specified.</p>
<p class=MsoNormal>Implementations MAY have implementation-defined limitations
on the use of forward or backward reference or MAY provide controls for
bounding the reach of such references. These mechanisms are beyond the scope of
this specification. </p>
<h2><a name="_Toc199516271"></a><a name="_Toc194983947"></a><a
name="_Toc243112800"></a><a name="_Toc349042857"></a><a name="_Ref38373752"></a><a
name="_Ref38373757"></a><a name="_Toc62570217"></a><a name="_Toc322911753"></a><a
name="_Toc322912292"></a><a name="_Toc329093153"></a><a name="_Toc332701666"></a><a
name="_Toc332701970"></a><a name="_Toc332711768"></a><a name="_Toc332712070"></a><a
name="_Toc332712371"></a><a name="_Toc332724287"></a><a name="_Toc332724587"></a><a
name="_Toc341102883"></a><a name="_Toc347241618"></a><a name="_Toc347744811"></a><a
name="_Toc348984594"></a><a name="_Toc348984899"></a><a name="_Toc349038063"></a><a
name="_Toc349038365"></a><a name="_Toc349042856"></a><a name="_Toc349642265"></a><a
name="_Toc351912978"></a><a name="_Toc351914999"></a><a name="_Toc351915465"></a><a
name="_Toc361231563"></a><a name="_Toc361232089"></a><a name="_Toc362445387"></a><a
name="_Toc363909354"></a><a name="_Toc364463780"></a><a name="_Toc366078384"></a><a
name="_Toc366078999"></a><a name="_Toc366079984"></a><a name="_Toc366080596"></a><a
name="_Toc366081205"></a><a name="_Toc366505545"></a><a name="_Toc366508914"></a><a
name="_Toc366513415"></a><a name="_Toc366574604"></a><a name="_Toc366578397"></a><a
name="_Toc366578991"></a><a name="_Toc366579583"></a><a name="_Toc366580174"></a><a
name="_Toc366580766"></a><a name="_Toc366581357"></a><a name="_Toc366581949"></a>18.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Variables </h2>
<p class=MsoNormal>A variable is a binding between a (qualified) name and a
(typed) value. Variables are defined using the dfdl:defineVariable annotation
(see <span
class=MsoHyperlink>7.7</span>); defining a variable causes an initial instance
also to be created. Further instances of variables are created using the dfdl:newVariableInstance
annotation. Instances of variables are assigned a value using the
dfdl:setVariable annotation.&nbsp; Variables are referenced in expressions by
preceding the QName with '$'.</p>
<p class=MsoNormal>This section describes the semantics of variables. Any
implementation consistent with the behavior described here is acceptable.</p>
<p class=nobreak>The memory where the information about a variable is stored
during DFDL processing is called the <i>variable memory</i>. A variable is a
name that is associated with a storage tuple in the variable memory.</p>
<p class=nobreak>Specifically, the variable memory contains:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>a counter used to generate locations for new tuples. Initial
value is 1.</li>
<li class=MsoNormal>an ordered list of locations. Each location contains a
tuple of values:</li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>has-been-set flag. This Boolean is originally false. dfdl:setVariable
changes this flag to true.</li>
<li class=MsoNormal>has-been-referenced flag. This Boolean is originally
false. Evaluation of an expression that uses the variable value changes
the value to true.</li>
<li class=MsoNormal>has-value flag. This Boolean is originally true if the
dfdl:defineVariable or dfdl:newVariableInstance annotation has a default
value specified, or if a default value has been supplied externally.
Otherwise it is false but is set to true if a dfdl:setVariable annotation
is processed.</li>
<li class=MsoNormal>typeID. This string is a type identifier taken from the
type specified in the dfdl:defineVariable annotation.</li>
<li class=MsoNormal>value. This is a typed value, or the distinguished value
&quot;unknown&quot;. The type of the value MUST correspond to the typeID.
The value is optionally specified in dfdl:defineVariable or dfdl:newVariableInstance
annotations in which case it is referred to as the <em><span
style='font-family:"Arial",sans-serif'>default value</span></em> for the
variable.&nbsp; A default value may also be provided by the DFDL
processor when the variable is defined with external &quot;true&quot;.</li>
</ul>
</ul>
<p class=MsoNormal>The variable memory is initialized when a
dfdl:defineVariable annotation is encountered.</p>
<p class=MsoNormal>Each time a dfdl:newVariableInstance annotation is
encountered, the parser captures the current value of the counter from the
variable memory. It then creates a new variable memory where the location
counter's value is one greater, and where the list of locations has been
augmented with a new tuple at the location given by the prior value of the
location counter. The tuple is initialized based on the specifics of the
dfdl:defineVariable annotation.</p>
<h3><a name="_Toc349042859"></a><a name="_Toc62570218"></a><a
name="_Toc322911755"></a><a name="_Toc322912294"></a><a name="_Toc329093155"></a><a
name="_Toc332701668"></a><a name="_Toc332701972"></a><a name="_Toc332711770"></a><a
name="_Toc332712072"></a><a name="_Toc332712373"></a><a name="_Toc332724289"></a><a
name="_Toc332724589"></a><a name="_Toc341102885"></a><a name="_Toc347241620"></a><a
name="_Toc347744813"></a><a name="_Toc348984596"></a><a name="_Toc348984901"></a><a
name="_Toc349038065"></a><a name="_Toc349038367"></a><a name="_Toc349042858"></a><a
name="_Toc351912980"></a><a name="_Toc351915001"></a><a name="_Toc351915467"></a><a
name="_Toc361231565"></a><a name="_Toc361232091"></a><a name="_Toc362445389"></a><a
name="_Toc363909356"></a><a name="_Toc364463782"></a><a name="_Toc366078386"></a><a
name="_Toc366079001"></a><a name="_Toc366079986"></a><a name="_Toc366080598"></a><a
name="_Toc366081207"></a><a name="_Toc366505547"></a><a name="_Toc366508916"></a><a
name="_Toc366513417"></a><a name="_Toc366574606"></a><a name="_Toc366578399"></a><a
name="_Toc366578993"></a><a name="_Toc366579585"></a><a name="_Toc366580176"></a><a
name="_Toc366580768"></a><a name="_Toc366581359"></a><a name="_Toc366581951"></a><span
style='color:black;font-weight:normal'>18.2.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Rewinding of Variable Memory State</h3>
<p class=nobreak>Upon exit of the scope where the new variable instance was
created, the newly created variable memory is discarded, and the prior variable
memory is restored.</p>
<p class=MsoNormal>Note that the above algorithm ensures that each time a
dfdl:newVariableInstance is encountered, a fresh location is initialized for
it, and once the scope containing that variable goes out of scope, the instance
tuple for the variable can no longer be reached. A different variable instance
tuple is then visible.</p>
<h3><a name="_Toc349042861"></a><a name="_Toc62570219"></a><a
name="_Toc322911757"></a><a name="_Toc322912296"></a><a name="_Toc329093157"></a><a
name="_Toc332701670"></a><a name="_Toc332701974"></a><a name="_Toc332711772"></a><a
name="_Toc332712074"></a><a name="_Toc332712375"></a><a name="_Toc332724291"></a><a
name="_Toc332724591"></a><a name="_Toc341102887"></a><a name="_Toc347241622"></a><a
name="_Toc347744815"></a><a name="_Toc348984598"></a><a name="_Toc348984903"></a><a
name="_Toc349038067"></a><a name="_Toc349038369"></a><a name="_Toc349042860"></a><a
name="_Toc351912982"></a><a name="_Toc351915003"></a><a name="_Toc351915469"></a><a
name="_Toc361231567"></a><a name="_Toc361232093"></a><a name="_Toc362445391"></a><a
name="_Toc363909358"></a><a name="_Toc364463784"></a><a name="_Toc366078388"></a><a
name="_Toc366079003"></a><a name="_Toc366079988"></a><a name="_Toc366080600"></a><a
name="_Toc366081209"></a><a name="_Toc366505549"></a><a name="_Toc366508918"></a><a
name="_Toc366513419"></a><a name="_Toc366574608"></a><a name="_Toc366578401"></a><a
name="_Toc366578995"></a><a name="_Toc366579587"></a><a name="_Toc366580178"></a><a
name="_Toc366580770"></a><a name="_Toc366581361"></a><a name="_Toc366581953"></a><span
style='color:black;font-weight:normal'>18.2.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Variable Memory State Transitions</h3>
<p class=MsoNormal>The flags in the variable memory tuples are interpreted and
modified as follows:</p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td rowspan=2 valign=top style='border:solid windowtext 1.0pt;background:
#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>DFDL annotatio<span style='color:black'>n</span></b></p>
</td>
<td colspan=3 valign=top style='border:solid windowtext 1.0pt;border-left:
none;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>before annotation processed</span></b></p>
</td>
<td colspan=3 valign=top style='border:solid windowtext 1.0pt;border-left:
none;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>after annotation processed</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>has-been-set</span></b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>has-been-referenced</span></b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>has-value</span></b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>has-been-set</span></b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>has-been-referenced</span></b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;background:#F2F2F2;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>has-value</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>defineVariable (without default or external value)</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>defineVariable (with default value)</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>defineVariable (with external value)</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>newVariableInstance (without default value)</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>newVariableInstance (with default value)</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td rowspan=5 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>setVariable</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Schema Definition Error</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true (also value changed to new value)</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Schema Definition Error &#8211; set after reference not
allowed.</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>any</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Schema Definition Error - double set not allowed.</p>
</td>
</tr>
<tr>
<td rowspan=3 valign=top style='border:solid windowtext 1.0pt;border-top:
none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>reference variable (from DFDL expression)</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>tuple doesn't exist</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Schema Definition Error</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Schema Definition Error &#8211; undefined variable</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>any</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>any</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>false</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true (value is returned)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>true</p>
</td>
</tr>
</table>
<p class=MsoCaption><span style='color:white'>Table </span>54<span
lang=EN-GB> Memory States for Expression Language Variables</span><span
lang=EN-GB> </span></p>
<p class=MsoNormal>The above table describes a set of rules which might be
abbreviated as:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>write once, read many</li>
<li class=MsoNormal>no write after the value has been read</li>
</ul>
<p class=MsoNormal>An exception to this behavior occurs whenever the DFDL
processor backtracks because it is processing multiple arms of a choice or as a
result of speculative parsing. In this case the variable state is also rewound.</p>
<p class=MsoNormal>It is a Schema Definition Error if a dfdl:setVariable or a
variable reference occurs and there is no corresponding variable name defined
by a dfdl:defineVariable annotation.</p>
<p class=MsoNormal>It is a Schema Definition Error if a dfdl:setVariable
provides a value of incorrect type which does not correspond to the type specified
by the dfdl:defineVariable. </p>
<p class=MsoNormal>It is a Schema Definition Error if a variable reference in
an expression is able to return a value of incorrect type for the evaluation of
that expression. That is, DFDL - including the expressions contained in it - is
a statically type-checkable language. DFDL implementations SHOULD issue these
Schema Definition Errors prior to processing time if possible.</p>
<p class=MsoNormal>Even if the errors are detected at processing time, the
errors associated with write-after-read, and double-write are Schema Definition
Errors because they indicate the schema is not properly designed to use
variables consistent with their single-assignment behavior. </p>
<h2><a name="_Toc199516272"></a><a name="_Toc194983948"></a><a
name="_Toc243112801"></a><a name="_Toc199516270"></a><a name="_Toc194983946"></a><a
name="_Toc243112799"></a><a name="_Toc349042862"></a><a name="_Toc62570220">18.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>General Syntax</a></h2>
<p class=MsoNormal>DFDL expressions follow the XPath 2.0 syntax rules but are
always enclosed in curly braces &quot;{&quot; and &quot;}&quot;. </p>
<p class=MsoNormal>When a property accepts either a DFDL string literal or a
DFDL expression, and the value is a string literal starting with a
&quot;{&quot; character, then &quot;{{&quot;must be used to escape the
&quot;{&quot; character. Note that no escaping is required on the &quot;}&quot;
character.</p>
<p class=MsoNormal>The syntax &quot;{}&quot; is a Schema Definition Error as it
results in an empty XPath 2.0 expression which is not legal. It is not the
equivalent of setting the property to empty string.</p>
<p class=MsoNormal>Examples</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>{ /book/title }</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>{ $x+2 }</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
style='color:black'>{ </span><span lang=EN-GB style='color:black'>if
(fn:exists(../field1))&nbsp; then 1 else 0 </span><span style='color:black'>&nbsp;}&nbsp;&nbsp;
</span></p>
</div>
<p class=MsoNormal>The result of evaluating the expression must be a single atomic
value of the type expected by the context, and it is a Schema Definition Error otherwise.
Some XPath expressions naturally return a sequence of values, and in this case,
it is also Schema Definition Error if an expression returns a sequence containing
more than one item. <a name="_Toc322014601"></a><a name="_Toc322014783"></a><a
name="_Toc322911760"></a><a name="_Toc322912299"></a></p>
<p class=MsoNormal>Additionally:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>Every property that accepts an expression states exactly
what the expression is expected to return. To ensure the returned value is
of the correct type, an expression must use XPath constructors or the
correct literal values. </li>
<li class=MsoNormal>What appears lexically as the syntax of an expression
follows XPath 2.0 rules. Note specifically that this is not the same as
XSD default and XSD fixed property lexical syntax. Specifically, XSD
default and XSD fixed properties do not accept expressions. They are
always interpreted as XML Schema string literals. See [<a href="#a_XSDL">XSD</a>]
for details.</li>
<li class=MsoNormal>No extra auto-casting is performed over and above that
provided by XPath 2.0. XPath 2.0 has rules for when it promotes types and
when it allows types to be substituted. These are in Appendix B.1 of the
XPath 2.0 spec.</li>
<li class=MsoNormal>If the property is not expecting an expression to return a
DFDL string literal, the returned value is never treated as a DFDL string
literal.</li>
<li class=MsoNormal>If expecting an expression to return a DFDL string
literal, the returned value is always treated as a DFDL string literal.</li>
<li class=MsoNormal><u>Within</u> an expression, a string is never interpreted
as a DFDL string literal.</li>
</ul>
<h2><a name="_Toc349042863"></a><a name="_Toc62570221">18.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>DFDL E</a>xpression
Syntax</h2>
<p class=MsoNormal>Refer to XML Path Language (XPath) 2.0 [<a href="#a_XPath">XPath</a>]
for a description of XPath expressions</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border-top:solid windowtext 1.0pt;border-left:solid windowtext 1.0pt;
border-bottom:none;border-right:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DFDL Expression</p>
</td>
<td valign=top style='border:none;border-top:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border-top:solid windowtext 1.0pt;border-left:none;
border-bottom:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;{&quot; Expr &quot;}&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Expr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ExprSingle </p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ExprSingle</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;IfExpr<br>
| OrExpr</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>IfExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;if&quot; &quot;(&quot; Expr &quot;)&quot; &quot;then&quot;
ExprSingle &quot;else&quot; ExprSingle</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>OrExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AndExpr ( &quot;or&quot; AndExpr )*</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AndExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ComparisonExpr ( &quot;and&quot; ComparisonExpr )*</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ComparisonExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AdditiveExpr ( (ValueComp<br>
) AdditiveExpr)?</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AdditiveExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>MultiplicativeExpr ( (&quot;+&quot; | &quot;-&quot;) MultiplicativeExpr
)*</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>MultiplicativeExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>IntersectExceptExpr( (&quot;*&quot; | &quot;div&quot; |
&quot;idiv&quot; | &quot;mod&quot;) IntersectExceptExpr)*</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
background:white;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='color:black'>IntersectExceptExpr</span></p>
</td>
<td valign=top style='border:none;background:white;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='color:black'>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</span></p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
background:white;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='color:black'>UnaryExpr (
(&quot;intersect&quot; | &quot;except&quot;) UnaryExpr )*</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>UnaryExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(&quot;-&quot; | &quot;+&quot;)* ValueExpr</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ValueExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PathExpr</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ValueComp</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;eq&quot; | &quot;ne&quot; | &quot;lt&quot; |
&quot;le&quot; | &quot;gt&quot; | &quot;ge&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PathExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(&quot;/&quot; RelativePathExpr?)<br>
| RelativePathExpr | FilterExpr </p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>RelativePathExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>StepExpr ((&quot;/&quot;) StepExpr)*</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>StepExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AxisStep</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AxisStep</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(ReverseStep | ForwardStep) Predicate?</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ForwardStep</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(ForwardAxis NodeTest) | AbbrevForwardStep</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ForwardAxis</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(&quot;child&quot; &quot;::&quot;)<br>
| (&quot;self&quot; &quot;::&quot;)<br>
<br>
</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AbbrevForwardStep</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>NodeTest | ContextItemExpr</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ReverseStep</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(ReverseAxis NodeTest) | AbbrevReverseStep</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ReverseAxis</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>(&quot;parent&quot; &quot;::&quot;)<br>
<br>
</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>AbbrevReverseStep</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;..&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>NodeTest</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>NameTest</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>NameTest</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>QName </p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>FilterExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PrimaryExpr Predicate?</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Predicate</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;[&quot; Expr &quot;]&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>PrimaryExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Literal | VarRef | ParenthesizedExpr | ContextItemExpr | FunctionCall</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Literal</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>NumericLiteral | StringLiteral</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>NumericLiteral</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>IntegerLiteral | DecimalLiteral | DoubleLiteral</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>VarRef</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;$&quot; VarName</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>VarName</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>QName</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ParenthesizedExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;(&quot; Expr &quot;)&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:none;border-left:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ContextItemExpr</p>
</td>
<td valign=top style='border:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border:none;border-right:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot;.&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border-top:none;border-left:solid windowtext 1.0pt;
border-bottom:solid windowtext 1.0pt;border-right:none;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>FunctionCall</p>
</td>
<td valign=top style='border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>QName &quot;(&quot; (ExprSingle (&quot;,&quot; ExprSingle)*)?
&quot;)&quot;</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name=prod-xpath-Expr></a><a name=prod-xpath-ExprSingle></a><a
name=prod-xpath-ForExpr></a><a name=prod-xpath-IfExpr></a><a
name=prod-xpath-OrExpr></a><a name=prod-xpath-AndExpr></a><a
name=prod-xpath-ComparisonExpr></a><a name=prod-xpath-RangeExpr></a><a
name=prod-xpath-AdditiveExpr></a><a name=prod-xpath-MultiplicativeExpr></a><a
name=prod-xpath-UnionExpr></a><a name=prod-xpath-IntersectExceptExpr></a><a
name=prod-xpath-InstanceofExpr></a><a name=prod-xpath-TreatExpr></a><a
name=prod-xpath-CastableExpr></a><a name=prod-xpath-CastExpr></a><a
name=prod-xpath-UnaryExpr></a><a name=prod-xpath-ValueExpr></a><a
name=prod-xpath-GeneralComp></a><a name=prod-xpath-ValueComp></a><a
name=prod-xpath-NodeComp></a><a name=prod-xpath-PathExpr></a><a
name=prod-xpath-RelativePathExpr></a><a name=prod-xpath-StepExpr></a><a
name=prod-xpath-AxisStep></a><a name=prod-xpath-ForwardStep></a><a
name=prod-xpath-ForwardAxis></a><a name=prod-xpath-AbbrevForwardStep></a><a
name=prod-xpath-ReverseStep></a><a name=prod-xpath-ReverseAxis></a><a
name=prod-xpath-AbbrevReverseStep></a><a name=prod-xpath-NodeTest></a><a
name=prod-xpath-NameTest></a><a name=prod-xpath-Wildcard></a><a
name=prod-xpath-FilterExpr></a><a name=prod-xpath-PredicateList></a><a
name=prod-xpath-Predicate></a><a name=prod-xpath-PrimaryExpr></a><a
name=prod-xpath-Literal></a><a name=prod-xpath-NumericLiteral></a><a
name=prod-xpath-VarRef></a><a name=prod-xpath-VarName></a><a
name=prod-xpath-ParenthesizedExpr></a><a name=prod-xpath-ContextItemExpr></a><a
name=prod-xpath-FunctionCall></a><a name=prod-xpath-SingleType></a><a
name=prod-xpath-SequenceType></a><a name=prod-xpath-OccurrenceIndicator></a><a
name=prod-xpath-ItemType></a><a name=prod-xpath-AtomicType></a><a
name=prod-xpath-KindTest></a><a name=prod-xpath-AnyKindTest></a><a
name=prod-xpath-DocumentTest></a><a name=prod-xpath-TextTest></a><a
name=prod-xpath-CommentTest></a><a name=prod-xpath-PITest></a><a
name=prod-xpath-AttributeTest></a><a name=prod-xpath-AttribNameOrWildcard></a><a
name=prod-xpath-SchemaAttributeTest></a><a
name=prod-xpath-AttributeDeclaration></a><a name=prod-xpath-ElementTest></a><a
name=prod-xpath-ElementNameOrWildcard></a><a name=prod-xpath-SchemaElementTest></a><a
name=prod-xpath-ElementDeclaration></a><a name=prod-xpath-AttributeName></a><a
name=prod-xpath-ElementName></a><a name=prod-xpath-TypeName></a>Table 55
DFDL Expression Language<a name="_Toc199516273"></a><a name="_Toc194983949"></a><a
name="_Toc243112802"></a></p>
<p class=MsoNormal>Notes:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Only <em><span style='font-family:"Arial",sans-serif'>If</span></em>
and <em><span style='font-family:"Arial",sans-serif'>path</span></em>
expression types are supported</li>
<li class=MsoNormal>Only the <em><span style='font-family:"Arial",sans-serif'>child</span></em>,
<em><span style='font-family:"Arial",sans-serif'>parent</span></em>, and <em><span
style='font-family:"Arial",sans-serif'>self</span></em> axes are supported</li>
<li class=MsoNormal>Predicates are only used to index arrays and so must be
integer expressions otherwise a Schema Definition Error occurs</li>
<li class=MsoNormal>A subset of the XPath 2.0 operators is supported</li>
</ol>
<p class=MsoListParagraph style='text-indent:-.25in'>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
</span>NameTest - These QNames are path steps that refer to elements in the
DFDL Infoset. If such an element is in a namespace, then the NameTest QName
must have a prefix which is bound to the namespace. Specifically, any default
namespace is not used to implicitly qualify these NameTest QNames. This
behavior is consistent with XPath expression usage in XML Schema [Walmsley] such as in the path property of the xs:selector and xs:field elements
within xs:key&nbsp;and xs:unique constraints, and in related XML standards such
as XSLT. Note however, that this behavior is different from the way QNames are
used in other places in XML and DFDL Schemas such as the ref property of an
element reference, or the dfdl:ref property of a DFDL format annotation. There
a QName with no prefix must always be referring to a global declaration or
definition, and so is augmented with the default namespace when needed.</p>
<h2><a name="_Toc199516274"></a><a name="_Toc194983950"></a><a
name="_Toc243112803"></a><a name="_Toc349042866"></a><a name="_Toc62570222"></a><a
name="_Toc322911762"></a><a name="_Toc322912301"></a><a name="_Toc329093161"></a><a
name="_Toc332701674"></a><a name="_Toc332701978"></a><a name="_Toc332711776"></a><a
name="_Toc332712078"></a><a name="_Toc332712379"></a><a name="_Toc332724295"></a><a
name="_Toc332724595"></a><a name="_Toc341102891"></a><a name="_Toc347241626"></a><a
name="_Toc347744819"></a><a name="_Toc348984602"></a><a name="_Toc348984907"></a><a
name="_Toc349038071"></a><a name="_Toc349038373"></a><a name="_Toc349042864"></a><a
name="_Toc349642272"></a><a name="_Toc351912986"></a><a name="_Toc351915007"></a><a
name="_Toc351915473"></a><a name="_Toc361231571"></a><a name="_Toc361232097"></a><a
name="_Toc362445395"></a><a name="_Toc363909362"></a><a name="_Toc364463788"></a><a
name="_Toc366078392"></a><a name="_Toc366079007"></a><a name="_Toc366079992"></a><a
name="_Toc366080604"></a><a name="_Toc366081213"></a><a name="_Toc366505553"></a><a
name="_Toc366508922"></a><a name="_Toc366513423"></a><a name="_Toc366574612"></a><a
name="_Toc366578405"></a><a name="_Toc366578999"></a><a name="_Toc366579591"></a><a
name="_Toc366580182"></a><a name="_Toc366580774"></a><a name="_Toc366581365"></a><a
name="_Toc366581957"></a><a name="_Toc322911763"></a><a name="_Toc322912302"></a><a
name="_Toc329093162"></a><a name="_Toc332701675"></a><a name="_Toc332701979"></a><a
name="_Toc332711777"></a><a name="_Toc332712079"></a><a name="_Toc332712380"></a><a
name="_Toc332724296"></a><a name="_Toc332724596"></a><a name="_Toc341102892"></a><a
name="_Toc347241627"></a><a name="_Toc347744820"></a><a name="_Toc348984603"></a><a
name="_Toc348984908"></a><a name="_Toc349038072"></a><a name="_Toc349038374"></a><a
name="_Toc349042865"></a><a name="_Toc349642273"></a><a name="_Toc351912987"></a><a
name="_Toc351915008"></a><a name="_Toc351915474"></a><a name="_Toc361231572"></a><a
name="_Toc361232098"></a><a name="_Toc362445396"></a><a name="_Toc363909363"></a><a
name="_Toc364463789"></a><a name="_Toc366078393"></a><a name="_Toc366079008"></a><a
name="_Toc366079993"></a><a name="_Toc366080605"></a><a name="_Toc366081214"></a><a
name="_Toc366505554"></a><a name="_Toc366508923"></a><a name="_Toc366513424"></a><a
name="_Toc366574613"></a><a name="_Toc366578406"></a><a name="_Toc366579000"></a><a
name="_Toc366579592"></a><a name="_Toc366580183"></a><a name="_Toc366580775"></a><a
name="_Toc366581366"></a><a name="_Toc366581958"></a>18.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Constructors,
Functions and Operators</h2>
<p class=nobreak>In the function signatures below a '?' following an argument
name, argument type or result type indicates that the argument/result can be a
node or value of the expected type or it can have no value.</p>
<h3><a name="_Toc199516275"></a><a name="_Toc194983951"></a><a
name="_Toc243112804"></a><a name="_Toc349042868"></a><a name="_Toc62570223"></a><a
name="_Toc322911765"></a><a name="_Toc322912304"></a><a name="_Toc329093164"></a><a
name="_Toc332701677"></a><a name="_Toc332701981"></a><a name="_Toc332711779"></a><a
name="_Toc332712081"></a><a name="_Toc332712382"></a><a name="_Toc332724298"></a><a
name="_Toc332724598"></a><a name="_Toc341102894"></a><a name="_Toc347241630"></a><a
name="_Toc347744822"></a><a name="_Toc348984605"></a><a name="_Toc348984910"></a><a
name="_Toc349038074"></a><a name="_Toc349038376"></a><a name="_Toc349042867"></a><a
name="_Toc351912989"></a><a name="_Toc351915010"></a><a name="_Toc351915476"></a><a
name="_Toc361231574"></a><a name="_Toc361232100"></a><a name="_Toc362445398"></a><a
name="_Toc363909365"></a><a name="_Toc364463791"></a><a name="_Toc366078395"></a><a
name="_Toc366079010"></a><a name="_Toc366079995"></a><a name="_Toc366080607"></a><a
name="_Toc366081216"></a><a name="_Toc366505556"></a><a name="_Toc366508925"></a><a
name="_Toc366513426"></a><a name="_Toc366574615"></a><a name="_Toc366578408"></a><a
name="_Toc366579002"></a><a name="_Toc366579594"></a><a name="_Toc366580185"></a><a
name="_Toc366580777"></a><a name="_Toc366581368"></a><a name="_Toc366581960"></a><span
style='color:black;font-weight:normal'>18.5.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Constructor Functions for XML Schema Built-in Types</h3>
<p class=nobreak>The arguments to the constructors are all of type
xs:anyAtomicType. Since the expression language can be statically type checked,
it is a Schema Definition Error if the type of the argument is not one of the
DFDL-supported subtypes of xs:anyAtomicType, </p>
<p class=MsoNormal>However, many statically type-correct values are still not
convertible to the result type. It is a Processing Error if the supplied
argument value is not convertible to the constructed type.</p>
<p class=MsoNormal>The following constructor functions for the built-in types
are supported:</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:string($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:string</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:boolean($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:boolean</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:decimal($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:decimal</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:float($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:float</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:double($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:double</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:dateTime($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:dateTime</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:time($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:time</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:date($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:date</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:hexBinary($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:hexBinary</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:integer($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:integer</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:long($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:long</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:int($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:int</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:short($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:short</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:byte($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:byte</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:nonNegativeInteger($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:nonNegativeInteger</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedLong($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:unsignedLong</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedInt($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:unsignedInt</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>xs:unsignedShort($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:unsignedShort</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>xs:unsignedByte($arg&nbsp;as&nbsp;xs:anyAtomicType)&nbsp;as&nbsp;xs:unsignedByte</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 56 Basic Constructors</p>
<p class=MsoNormal>A special constructor function is provided for constructing
a <span class=CodeCharacter>xs:dateTime</span> value from an <span
class=CodeCharacter>xs:date</span> value and an <span class=CodeCharacter>xs:time</span>
value.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td width=392 valign=top style='width:293.75pt;border:solid windowtext 1.0pt;
background:#E5E5E5;padding:0in 5.75pt 0in 5.75pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
</tr>
<tr>
<td width=392 valign=top style='width:293.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0in 5.75pt 0in 5.75pt'>
<p class=MsoNormal>fn:dateTime($arg1&nbsp;as&nbsp;xs:date,
$arg2&nbsp;as&nbsp;xs:time)&nbsp;as&nbsp;xs:dateTime</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc322911767"></a><a name="_Toc322912306"></a><a
name="_Toc329093166"></a><a name="_Toc332701679"></a><a name="_Toc332701983"></a><a
name="_Toc332711781"></a><a name="_Toc332712083"></a><a name="_Toc332712384"></a><a
name="_Toc332724300"></a><a name="_Toc332724600"></a><a name="_Toc341102896"></a><a
name="_Toc347241632"></a><a name="_Toc347744824"></a><a name="_Toc348984607"></a><a
name="_Toc348984912"></a><a name="_Toc349038076"></a><a name="_Toc349038378"></a><a
name="_Toc349042869"></a><a name="_Toc351912991"></a><a name="_Toc351915012"></a><a
name="_Toc351915478"></a><a name="_Toc361231576"></a><a name="_Toc361232102"></a><a
name="_Toc362445400"></a><a name="_Toc363909367"></a><a name="_Toc364463793"></a><a
name="_Toc366078397"></a><a name="_Toc366079012"></a><a name="_Toc366079997"></a><a
name="_Toc366080609"></a><a name="_Toc366081218"></a>Table 57
Special Constructor for xs:dateTime</p>
<h3><a name="_Toc199516276"></a><a name="_Toc194983952"></a><a
name="_Toc243112805"></a><a name="_Toc349042873"></a><a name="_Toc62570224"></a><a
name="_Toc366505558"></a><a name="_Toc366508927"></a><a name="_Toc366513428"></a><a
name="_Toc366574617"></a><a name="_Toc366578410"></a><a name="_Toc366579004"></a><a
name="_Toc366579596"></a><a name="_Toc366580187"></a><a name="_Toc366580779"></a><a
name="_Toc366581370"></a><a name="_Toc366581962"></a><a name="_Toc322911768"></a><a
name="_Toc322912307"></a><a name="_Toc329093167"></a><a name="_Toc332701680"></a><a
name="_Toc332701984"></a><a name="_Toc332711782"></a><a name="_Toc332712084"></a><a
name="_Toc332712385"></a><a name="_Toc332724301"></a><a name="_Toc332724601"></a><a
name="_Toc341102897"></a><a name="_Toc347241633"></a><a name="_Toc347744825"></a><a
name="_Toc348984608"></a><a name="_Toc348984913"></a><a name="_Toc349038077"></a><a
name="_Toc349038379"></a><a name="_Toc349042870"></a><a name="_Toc351912992"></a><a
name="_Toc351915013"></a><a name="_Toc351915479"></a><a name="_Toc361231577"></a><a
name="_Toc361232103"></a><a name="_Toc362445401"></a><a name="_Toc363909368"></a><a
name="_Toc364463794"></a><a name="_Toc366078398"></a><a name="_Toc366079013"></a><a
name="_Toc366079998"></a><a name="_Toc366080610"></a><a name="_Toc366081219"></a><a
name="_Toc366505559"></a><a name="_Toc366508928"></a><a name="_Toc366513429"></a><a
name="_Toc366574618"></a><a name="_Toc366578411"></a><a name="_Toc366579005"></a><a
name="_Toc366579597"></a><a name="_Toc366580188"></a><a name="_Toc366580780"></a><a
name="_Toc366581371"></a><a name="_Toc366581963"></a><a name="_Toc322911769"></a><a
name="_Toc322912308"></a><a name="_Toc329093168"></a><a name="_Toc332701681"></a><a
name="_Toc332701985"></a><a name="_Toc332711783"></a><a name="_Toc332712085"></a><a
name="_Toc332712386"></a><a name="_Toc332724302"></a><a name="_Toc332724602"></a><a
name="_Toc341102898"></a><a name="_Toc347241634"></a><a name="_Toc347744826"></a><a
name="_Toc348984609"></a><a name="_Toc348984914"></a><a name="_Toc349038078"></a><a
name="_Toc349038380"></a><a name="_Toc349042871"></a><a name="_Toc351912993"></a><a
name="_Toc351915014"></a><a name="_Toc351915480"></a><a name="_Toc361231578"></a><a
name="_Toc361232104"></a><a name="_Toc362445402"></a><a name="_Toc363909369"></a><a
name="_Toc364463795"></a><a name="_Toc366078399"></a><a name="_Toc366079014"></a><a
name="_Toc366079999"></a><a name="_Toc366080611"></a><a name="_Toc366081220"></a><a
name="_Toc366505560"></a><a name="_Toc366508929"></a><a name="_Toc366513430"></a><a
name="_Toc366574619"></a><a name="_Toc366578412"></a><a name="_Toc366579006"></a><a
name="_Toc366579598"></a><a name="_Toc366580189"></a><a name="_Toc366580781"></a><a
name="_Toc366581372"></a><a name="_Toc366581964"></a><a name="_Toc322911770"></a><a
name="_Toc322912309"></a><a name="_Toc329093169"></a><a name="_Toc332701682"></a><a
name="_Toc332701986"></a><a name="_Toc332711784"></a><a name="_Toc332712086"></a><a
name="_Toc332712387"></a><a name="_Toc332724303"></a><a name="_Toc332724603"></a><a
name="_Toc341102899"></a><a name="_Toc347241635"></a><a name="_Toc347744827"></a><a
name="_Toc348984610"></a><a name="_Toc348984915"></a><a name="_Toc349038079"></a><a
name="_Toc349038381"></a><a name="_Toc349042872"></a><a name="_Toc351912994"></a><a
name="_Toc351915015"></a><a name="_Toc351915481"></a><a name="_Toc361231579"></a><a
name="_Toc361232105"></a><a name="_Toc362445403"></a><a name="_Toc363909370"></a><a
name="_Toc364463796"></a><a name="_Toc366078400"></a><a name="_Toc366079015"></a><a
name="_Toc366080000"></a><a name="_Toc366080612"></a><a name="_Toc366081221"></a><a
name="_Toc366505561"></a><a name="_Toc366508930"></a><a name="_Toc366513431"></a><a
name="_Toc366574620"></a><a name="_Toc366578413"></a><a name="_Toc366579007"></a><a
name="_Toc366579599"></a><a name="_Toc366580190"></a><a name="_Toc366580782"></a><a
name="_Toc366581373"></a><a name="_Toc366581965"></a><span style='color:black;
font-weight:normal'>18.5.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Standard XPath Functions</h3>
<h4><span style='color:black;font-weight:normal'>18.5.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Boolean
functions</h4>
<p class=MsoNormal>The following additional constructor functions are defined
on the boolean type. </p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:true()</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Constructs the xs:boolean value 'true'.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:false()</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Constructs the xs:boolean value 'false'.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 58 Boolean functions</p>
<p class=MsoNormal>The following functions are defined on boolean values. The
return type of these functions is xs:boolean.:</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 style='border-collapse:
collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>fn:not($arg?)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>If <span
class=CodeCharacter>$arg</span> is the empty sequence or a node with <b>[nilled]
</b>true, <span class=CodeCharacter>fn:not</span> returns <span
class=CodeCharacter>true</span>.</p>
<p class=MsoNormal style='page-break-after:avoid'>If <span
class=CodeCharacter>$arg</span> is a sequence containing a node with <b>[nilled]</b>
false or <b>[nilled]</b> having no value (that is, a node corresponding to a
non-nillable element), <span class=CodeCharacter>fn:not</span> returns <span
class=CodeCharacter>false</span>.</p>
<p class=MsoNormal style='page-break-after:avoid'>If <span
class=CodeCharacter>$arg</span> is a value of type <span class=CodeCharacter>xs:boolean</span>
or a derived from <span class=CodeCharacter>xs:boolean</span>, <span
class=CodeCharacter>fn:not</span> returns the boolean inverse of <span
class=CodeCharacter>$arg</span>.</p>
<p class=MsoNormal style='page-break-after:avoid'>If <span
class=CodeCharacter>$arg</span> is a value of type <span class=CodeCharacter>xs:string</span>
or a type derived from <span class=CodeCharacter>xs:string</span>, <span
class=CodeCharacter>fn:not</span> returns <span class=CodeCharacter>true</span>
if the operand value has zero length; otherwise it returns <span
class=CodeCharacter>false</span>.</p>
<p class=MsoNormal style='page-break-after:avoid'>If <span
class=CodeCharacter>$arg</span> is a value of any numeric type or a type
derived from a numeric type, <span class=CodeCharacter>fn:not</span> returns <span
class=CodeCharacter>true</span> if the operand value is <span
class=CodeCharacter>NaN</span> or is numerically equal to zero; otherwise it
returns <span class=CodeCharacter>false</span>.</p>
<p class=MsoNormal style='page-break-after:avoid'>In all other cases, <span
class=CodeCharacter>fn:not</span> raises a Processing Error.</p>
<p class=MsoNormal style='page-break-after:avoid'>Inverts the xs:boolean
value of the argument.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 59 Boolean functions</p>
<h4><span style='color:black;font-weight:normal'>18.5.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Numeric
Functions</h4>
<p class=MsoNormal>The following functions are defined on numeric types. Each
function returns a value of the same type as the type of its argument. The
argument must be convertible to a number type.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:abs($arg&nbsp;as&nbsp;numeric)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the absolute value of the argument. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:ceiling($arg&nbsp;as&nbsp;numeric)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the smallest number with no fractional part that
is greater than or equal to the argument.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:floor($arg&nbsp;as&nbsp;numeric)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the largest number with no fractional part that is
less than or equal to the argument.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:round($arg&nbsp;as&nbsp;numeric)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Rounds to the nearest number with no fractional part. When
the value is x.5, it rounds toward positive infinity.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:round-half-to-even($arg&nbsp;as&nbsp;numeric)</p>
<p class=MsoNormal>fn:round-half-to-even($arg&nbsp;as&nbsp;numeric,
$precision as xs:integer)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Takes a number and a precision and returns a number
rounded to the given precision. If the fractional part is exactly half, the
result is the number whose least significant digit is even.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 60 Numeric Functions</p>
<h4><span style='color:black;font-weight:normal'>18.5.2.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>String
Functions</h4>
<p class=MsoNormal>The following functions are defined on values of type <span
class=CodeCharacter>xs:string</span> and types derived from it. In the
functions below which compare strings, DFDL always uses the default Unicode
collation algorithm (which is a comparison of codepoint values).</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:concat( $arg1 as&nbsp;xs:anyAtomicType, $arg2
as&nbsp;xs:anyAtomicType, ... ) </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Concatenates two or more xs:anyAtomicType arguments cast
to xs:string.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:substring($sourceString as xs:string, $startingLoc as
xs:double) </p>
<p class=MsoNormal>fn:substring($sourceString as xs:string, $startingLoc as
xs:double, $length as xs:double)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the xs:string located at a specified place within
an argument xs:string.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:string-length($arg&nbsp;as&nbsp;xs:string)&nbsp; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the length of the argument as an xs:integer</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:upper-case($arg&nbsp;as&nbsp;xs:string)&nbsp; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the upper-cased value of the argument.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:lower-case($arg&nbsp;as&nbsp;xs:string) </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the lower-cased value of the argument.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:contains($arg1 as xs:string, $arg2 as xs:string)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns xs:boolean indicating whether one xs:string
contains another xs:string.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:starts-with($arg1 as xs:string, $arg2 as xs:string)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns xs:boolean indicating whether the value of one xs:string
begins with the characters of another xs:string. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:ends-with($arg1 as xs:string, $arg2 as xs:string)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns xs:boolean indicating whether the value of one xs:string
ends with the characters of another xs:string. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:substring-before($arg1 as xs:string, $arg2 as
xs:string)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the characters of one xs:string that precede in
that xs:string the characters of another xs:string.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:substring-after($arg1 as xs:string, $arg2 as xs:string)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the characters of xs:string that follow in that xs:string
the characters of another xs:string. </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 61 String Functions</p>
<h4><span style='color:black;font-weight:normal'>18.5.2.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Date and
Time Functions</h4>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:year-from-dateTime($arg&nbsp;as&nbsp;xs:dateTime)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the year from an xs:dateTime value as an
xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:month-from-dateTime($arg&nbsp;as&nbsp;xs:dateTime)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the month from an xs:dateTime value as an
xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:day-from-dateTime($arg&nbsp;as&nbsp;xs:dateTime)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the day from an xs:dateTime value as an
xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:hours-from-dateTime($arg&nbsp;as&nbsp;xs:dateTime)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the hours from an xs:dateTime value as an
xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:minutes-from-dateTime($arg&nbsp;as&nbsp;xs:dateTime)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the minutes from an xs:dateTime value as an
xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:seconds-from-dateTime($arg&nbsp;as&nbsp;xs:dateTime)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the seconds from an xs:dateTime value as an
xs:decimal.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:year-from-date($arg&nbsp;as&nbsp;xs:date)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the year from an xs:date value as an xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:month-from-date($arg&nbsp;as&nbsp;xs:date)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the month from an xs:date value as an xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:day-from-date($arg&nbsp;as&nbsp;xs:date)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the day from an xs:date value as an xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><code><span style='font-family:"Arial",sans-serif'>fn:hours-from-time</span></code>($arg&nbsp;as&nbsp;xs:time)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the hours from an xs:time value as an xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><code><span style='font-family:"Arial",sans-serif'>fn:minutes-from-time</span></code>($arg&nbsp;as&nbsp;xs:time)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the minutes from an xs:time value as an
xs:integer.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><code><span style='font-family:"Arial",sans-serif'>fn:seconds-from-time</span></code>($arg&nbsp;as&nbsp;xs:time)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the seconds from an xs:time value as an
xs:decimal.</p>
</td>
</tr>
</table>
<p class=MsoCaption><a name=func-years-from-duration></a>Table 62
Date and Time Functions</p>
<h4><span style='color:black;font-weight:normal'>18.5.2.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Node
Sequence Test Functions</h4>
<p class=MsoNormal>The following functions are defined on sequences. (Note that
DFDL v1.0 does not support sequences of length &gt; 1 as the final results of
expressions.)</p>
<p class=MsoNormal>In the functions below, if the argument includes the current
node, or any enclosing parent node, then it is a Schema Definition Error. </p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:empty($arg?)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Indicates whether the provided sequence is empty.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:exists($arg?)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Indicates whether the provided sequence is not empty.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:exactly&#8209;one($arg?)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the input sequence if it contains exactly one
item. Raises an error otherwise</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:count($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the number of items in the value of <span
class=CodeCharacter>$arg</span> as an xs:integer.</p>
<p class=MsoNormal>Returns 0 if <span class=CodeCharacter>$arg</span> is the
empty sequence. </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 63 Node Sequence Test Functions</p>
<h4><span style='color:black;font-weight:normal'>18.5.2.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Node
functions</h4>
<p class=MsoNormal>This section discusses functions and operators on nodes.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:local-name()</p>
<p class=MsoNormal>fn:local&#8209;name($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the local name of the context node or the specified
node as an xs:string.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>fn:namespace-uri()</p>
<p class=MsoNormal>fn:namespace&#8209;uri($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the namespace URI as an xs:string for the argument
node or the context node if the argument is omitted. Returns empty string if
the argument/context node is in no namespace.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 64 Node functions</p>
<h4><span style='color:black;font-weight:normal'>18.5.2.7<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Nillable
Element Functions</h4>
<p class=MsoNormal>This section discusses functions related to nillable
elements.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span lang=DE>fn:nilled($arg?)</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns an <span style='font-family:"Courier New"'>xs:boolean</span>
true when the argument node Infoset member <b>[nilled] is</b> true and false
when <b>[nilled] </b>is false. If the argument is not an element node,
returns the empty sequence. If the argument is the empty sequence, returns
the empty sequence. If the argument is an element node and <b>[nilled]</b>
has no value returns the empty sequence.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 65 Nillable Element Functions</p>
<h3><a name="_Toc199516277"></a><a name="_Toc194983953"></a><a
name="_Toc243112806"></a><a name="_Toc349042876"></a><a name="_Ref361327371"></a><a
name="_Ref361327380"></a><a name="_Ref365110948"></a><a name="_Ref365110951"></a><a
name="_Ref53069075"></a><a name="_Toc62570225"></a><a name="_Toc322911772"></a><a
name="_Toc322912311"></a><a name="_Toc329093171"></a><a name="_Toc332701684"></a><a
name="_Toc332701988"></a><a name="_Toc332711786"></a><a name="_Toc332712088"></a><a
name="_Toc332712389"></a><a name="_Toc332724305"></a><a name="_Toc332724605"></a><a
name="_Toc341102901"></a><a name="_Toc347241637"></a><a name="_Toc347744829"></a><a
name="_Toc348984612"></a><a name="_Toc348984917"></a><a name="_Toc349038081"></a><a
name="_Toc349038383"></a><a name="_Toc349042874"></a><a name="_Toc351912996"></a><a
name="_Toc351915017"></a><a name="_Toc351915483"></a><a name="_Toc361231581"></a><a
name="_Toc361232107"></a><a name="_Toc362445405"></a><a name="_Toc363909372"></a><a
name="_Toc364463798"></a><a name="_Toc366078402"></a><a name="_Toc366079017"></a><a
name="_Toc366080002"></a><a name="_Toc366080614"></a><a name="_Toc366081223"></a><a
name="_Toc366505563"></a><a name="_Toc366508932"></a><a name="_Toc366513433"></a><a
name="_Toc366574622"></a><a name="_Toc366578415"></a><a name="_Toc366579009"></a><a
name="_Toc366579601"></a><a name="_Toc366580192"></a><a name="_Toc366580784"></a><a
name="_Toc366581375"></a><a name="_Toc366581967"></a><a name="_Toc322911773"></a><a
name="_Toc322912312"></a><a name="_Toc329093172"></a><a name="_Toc332701685"></a><a
name="_Toc332701989"></a><a name="_Toc332711787"></a><a name="_Toc332712089"></a><a
name="_Toc332712390"></a><a name="_Toc332724306"></a><a name="_Toc332724606"></a><a
name="_Toc341102902"></a><a name="_Toc347241638"></a><a name="_Toc347744830"></a><a
name="_Toc348984613"></a><a name="_Toc348984918"></a><a name="_Toc349038082"></a><a
name="_Toc349038384"></a><a name="_Toc349042875"></a><a name="_Toc351912997"></a><a
name="_Toc351915018"></a><a name="_Toc351915484"></a><a name="_Toc361231582"></a><a
name="_Toc361232108"></a><a name="_Toc362445406"></a><a name="_Toc363909373"></a><a
name="_Toc364463799"></a><a name="_Toc366078403"></a><a name="_Toc366079018"></a><a
name="_Toc366080003"></a><a name="_Toc366080615"></a><a name="_Toc366081224"></a><a
name="_Toc366505564"></a><a name="_Toc366508933"></a><a name="_Toc366513434"></a><a
name="_Toc366574623"></a><a name="_Toc366578416"></a><a name="_Toc366579010"></a><a
name="_Toc366579602"></a><a name="_Toc366580193"></a><a name="_Toc366580785"></a><a
name="_Toc366581376"></a><a name="_Toc366581968"></a><span style='color:black;
font-weight:normal'>18.5.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>DFDL Functions</h3>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Func<span style='color:black'>tion</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:contentLength($node,&nbsp;$lengthUnits)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the length of the supplied node's SimpleContent
region for elements of simple type, or ComplexContent region for elements of
complex type. These regions are defined in Section <span
class=MsoHyperlink>9.2</span> DFDL
Data Syntax Grammar. The value is returned as an xs:unsignedLong. </p>
<p class=MsoNormal>The second argument is of type xs:string and must be
'bytes', 'characters', or 'bits' (Schema Definition Error otherwise) and
determines the units of length. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:valueLength($node, $lengthUnits)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the length of the supplied node's
SimpleLogicalValue region for elements of simple type, or ComplexValue region
for elements of complex type. These regions are defined in Section <span class=MsoHyperlink>9.2</span> DFDL
Data Syntax Grammar. The value is returned as an xs:unsignedLong. </p>
<p class=MsoNormal>For simple types, the dfdl:valueLength() function returns
a length which excludes any padding or filling.</p>
<p class=MsoNormal>The second argument is of type xs:string and must be
'bytes', 'characters', or 'bits' (Schema Definition Error otherwise) and
determines the units of length.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:testBit($data, $bitPos) </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns Boolean true if the bit number given by the
xs:nonNegativeInteger $bitPos is set on in the xs:unsignedByte given by
$data, otherwise returns Boolean false.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:setBits($bit1, $bit2, ... $bit8)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns an unsigned byte being the value of the bit
positions provided by the Boolean arguments, where true is1, false is 0. The
number of arguments must be 8.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:occursIndex()</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns the position of the current item of an array as an
xs:nonNegativeInteger. </p>
<p class=MsoNormal>The first element is at position 1.</p>
<p class=MsoNormal>The function may be used on non-array elements so long as
it appears within the dynamic scope of some array element.</p>
<p class=MsoNormal>In this case it returns the index of the current item of
the innermost enclosing array element.</p>
<p class=MsoNormal>It is a Schema Definition Error if this function is called
when there is no enclosing array element.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:checkConstraints($node)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns boolean true if the specified node value satisfies
the XML schema facet constraints that are associated with it. Returns false
if the specified node does not meet the constraints or does not exist.</p>
<p class=MsoNormal>The facets that are checked are</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>minLength, maxLength </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>pattern </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>enumeration </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>maxInclusive, maxExclusive, minExclusive, minInclusive </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>totalDigits </p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>fractionDigits </p>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>5.3</span> for which facets are checked for each simple
type.</p>
<p class=MsoNormal>Additionally, the XSD fixed property is checked.</p>
<p class=MsoNormal>It is a Schema Definition Error if the argument is a
complex element.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><a name="_Toc199516285"></a><a name="_Toc199515651"></a><a
name="_Toc199515839"></a><a name="_Toc199516278"></a><a name="_Toc199515654"></a><a
name="_Toc199515842"></a><a name="_Toc199516281"></a><a name="_Toc199841833"></a><a
name="_Toc199844399"></a><a name="_Toc199515657"></a><a name="_Toc199515845"></a><a
name="_Toc199516284"></a><a name="_Toc199841835"></a><a name="_Toc199844401"></a>dfdl:encodeDFDLEntities($arg)
</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns a string containing a DFDL string literal
constructed from the $arg string argument. If $arg contains any '%' and/or
space characters, then the return value replaces each '%' with '%%' and each
space with '%SP;', otherwise $arg is returned unchanged. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:decodeDFDLEntities ($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns a string constructed from the $arg string
argument. If $arg contains syntax matching DFDL Character Entities syntax,
then the corresponding characters are used in the result. &nbsp;Any
characters in $arg not matching the DFDL Character Entities syntax remain
unchanged in the result.</p>
<p class=MsoNormal>It is a Schema Definition Error if $arg contains syntax
matching DFDL Byte Value Entities syntax.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:containsDFDLEntities($arg) </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Returns a Boolean indicating whether the $arg string
argument contains one or more DFDL entities. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:timeZoneFromDateTime($arg) </p>
<p class=MsoNormal>dfdl:timeZoneFromDate($arg)</p>
<p class=MsoNormal>dfdl:timeZoneFromTime ($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='color:black'>Returns the timezone component,
if any, of $arg as an xs:string. The $arg is of type xs:dateTime, xs:date and
xs:time respectively.</span></p>
<p class=MsoNormal><span style='color:black'>If $arg has a timezone
component, then the result is a string in the format of an ISO Time zone
designator. Interpreted as an offset from UTC, its value may range from
+14:00 to -14:00 hours, both inclusive. The UTC time zone is represented as
&quot;+00:00&quot;. If the $arg has no timezone component, then &quot;&quot;
(empty string) is returned.</span></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoBodyText>dfdl:checkRangeInclusive($node, $val1, $val2)<br>
dfdl:checkRangeExclusive($node, $val1, $val2)<br>
<br>
</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoBodyText>Returns boolean true if the specified node value is in
the range given by $val1 and $val2. <br>
The type of $val1 and $val2 must be compatible with the type of $node, and
must be a derivative of xs:decimal, xs:float or xs:double. It is a Schema Definition
Error if the $node argument is a complex element.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 66 DFDL Functions</p>
<p class=MsoNormal>Notes:</p>
<p class=MsoNormal>dfdl:valueLength(path, lengthUnits) - returns the value
length which excludes any padding or filling which might be added for a <em><span
style='font-family:"Arial",sans-serif'>specified length.</span></em></p>
<p class=MsoNormal>If the element declaration in the DFDL schema corresponding
to the Infoset item has the dfdl:inputValueCalc property, then the unpadded
length is defined to be 0.</p>
<p class=MsoNormal>The value length includes the length contributions from
introduced escape characters needed to escape contained delimiters (if such are
defined and would appear in the output representation). </p>
<p class=MsoNormal>The value length is also a function of the dfdl:encoding
property. Multi-byte and variable-width character set encodings commonly
contribute more bytes to the value length than a single-byte character set
would. </p>
<p class=MsoNormal>The value length is computed from the DFDL Infoset value,
ignoring the dfdl:length or dfdl:textOutputMinLength property. Other DFDL
properties which affect the length of a text or binary representation are
respected, it is only an explicit length which is ignored.</p>
<p class=MsoNormal>For a complex type, this means a bottom up totaling of the
dfdl:contentLength() of all the contents and framing of the complex type.</p>
<p class=MsoNormal>dfdl:contentLength(path, lengthUnits) &#8211; returns the length
of the content of the Infoset data item as identified by the path argument.
This includes padding or filling or truncation which might be carried out for a
<em><span style='font-family:"Arial",sans-serif'>specified length</span></em>
item.</p>
<p class=MsoNormal>If the element declaration in the DFDL schema corresponding
to the Infoset item has a dfdl:inputValueCalc property, then the length is
defined to be 0.</p>
<p class=MsoNormal>When unparsing with dfdl:lengthKind &quot;explicit&quot;,
the calculation of dfdl:contentLength() returns the value of the dfdl:length
property.</p>
<p class=MsoNormal>For both dfdl:contentLength() and dfdl:valueLength(), the
content length excludes any alignment filling as well as excluding any leading
or trailing skip bytes. That is, the returned length is about the length of the
content, and not about the position of that content in the output data stream.</p>
<p class=MsoNormal>Use dfdl:encodeDFDLEntities() when the value of a DFDL
property is obtained from the data stream using an expression, and the type of
the property is DFDL String Literal or List of DFDL String Literals, and the
values extracted from the data stream can contain '%' or space characters. If
the data already contains DFDL entities, this function should not be used.</p>
<p class=MsoNormal>The dfdl:decodeDFDLEntities() function is used to create a
value which contains characters for which DFDL Character Entities are needed.
An example is to create data containing the NUL (character code 0) codepoint.
This character code is not allowed in XML documents, including DFDL Schemas;
hence, it must be specified using a DFDL Character Entity. Within a DFDL
Expression, use this function to obtain a string containing this character.</p>
<h3><a name="_Toc62570226"><span style='color:black;font-weight:normal'>18.5.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>DFDL
Constructor Functions</a></h3>
<p class=MsoNormal style='text-autospace:none'>There is sometimes a need to
create a number type from hex binary, and a hex binary type from a number. Accordingly,
the following new DFDL specific functions are provided. </p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:byte ($arg)</p>
<p class=MsoNormal>dfdl:unsignedByte ($arg)</p>
<p class=MsoNormal>dfdl:short ($arg)</p>
<p class=MsoNormal>dfdl:unsignedShort($arg)</p>
<p class=MsoNormal>dfdl:int ($arg) </p>
<p class=MsoNormal>dfdl:unsignedInt ($arg)</p>
<p class=MsoNormal>dfdl:long ($arg)</p>
<p class=MsoNormal>dfdl:unsignedLong&nbsp;($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>These constructor functions behave identically to the
XPath 2.0 constructor functions of the same names, with one exception. The
argument can be a quoted string beginning with the letter 'x', in which case
the remainder of the string is hexadecimal digits that represent a big-endian
twos complement representation of a binary number.<br>
<br>
If the string begins with 'x', it is a Schema Definition Error if a character
appears other 0-9, a-f, A-F.<br>
<br>
Each constructor function has a limit on the number of hex digits, with no
more digits than 2, 4, 8, or 16 for the byte, short, int and long versions
respectively. It is a Schema Definition Error if more digits are encountered
than are suitable for the type being created</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:hexBinary ($arg)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>This constructor function behaves identically to the XPath
2.0 constructor function of the same name, with one exception. The argument
can also be a long, unsignedLong, or any subtype thereof, and in that case a
xs:hexBinary value containing a number of hex digits is produced. The
ordering and number of the digits correspond to a binary big-endian
twos-complement implementation of the type of the argument. Digits 0-9, A-F
are used.</p>
<p class=MsoNormal>The number of digits produced depends on the type of $arg,
being 2, 4, 8 or 16. If $arg is a literal number then the type is the
smallest signed type (long, int, short, byte) that can contain the value. <br>
<br>
If a literal number is not able to be represented by a long, it is a Schema
Definition Error.</p>
</td>
</tr>
</table>
<p class=MsoCaption style='page-break-after:avoid'>Table 67:
DFDL Constructor Functions</p>
<p class=MsoNormal>Examples:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:unsignedInt(&quot;xa1b2c3d4&quot;) is the unsigned
int value 2712847316. </li>
<li class=MsoNormal>dfdl:int(&quot;xFFFFFFFF&quot;) is the signed int value
-1. </li>
<li class=MsoNormal>dfdl:unsignedByte(&quot;xFF&quot;) is the unsigned byte
value 255.</li>
<li class=MsoNormal>dfdl:byte(&quot;xff&quot;) is the signed byte value -1.</li>
<li class=MsoNormal>dfdl:byte(&quot;x7F&quot;) is the signed byte value 127.</li>
<li class=MsoNormal>dfdl:byte(&quot;x80&quot;) is the signed byte value -128.</li>
<li class=MsoNormal>dfdl:unsignedByte(&quot;x80&quot;) is the unsigned byte
value 128.</li>
<li class=MsoNormal>dfdl:byte(&quot;x0A3&quot;) is a Schema Definition Error
(too many digits for type).</li>
<li class=MsoNormal>dfdl:byte(&quot;xG3&quot;) is a Schema Definition Error
(invalid digit).</li>
<li class=MsoNormal>dfdl:hexBinary(xs:unsignedByte(208))&nbsp; is the
hexBinary value &quot;D0&quot;.</li>
<li class=MsoNormal>dfdl:hexBinary(208)&nbsp; is the hexBinary value
&quot;00D0&quot;.</li>
<li class=MsoNormal>dfdl:hexBinary(-2084) is the hexBinary value
&quot;F7DC&quot;.</li>
</ul>
<h3><a name="_Toc62570227"><span style='color:black;font-weight:normal'>18.5.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Miscellaneous
Functions</a></h3>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid black 1.0pt;background:#D9D9D9;padding:
0in 5.4pt 0in 4.15pt'>
<p class=MsoNormal><b>Function</b></p>
</td>
<td valign=top style='border:solid black 1.0pt;border-left:none;background:
#D9D9D9;padding:0in 5.4pt 0in 4.15pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid black 1.0pt;border-top:none;padding:0in 5.4pt 0in 4.15pt'>
<p class=MsoNormal>fn:error()</p>
<p class=MsoNormal>fn:error($id&nbsp;as&nbsp;xs:string)</p>
<p class=MsoNormal>fn:error($id as&nbsp;xs:string, $desc&nbsp;as&nbsp;xs:string,&nbsp;$obj?)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid black 1.0pt;
border-right:solid black 1.0pt;padding:0in 5.4pt 0in 4.15pt'>
<p class=MsoNormal>Causes a Processing Error.</p>
<p class=MsoNormal>This function does not return a value. A Processing Error
ends the evaluation of the expression. </p>
<p class=MsoNormal>The $id argument is an error code identifier string that
distinguishes this error from others. The string should have the structure of
an XSD QName; the namespace URI conventionally identifies the component,
subsystem, or authority responsible for defining the meaning of the error
code, while the local part identifies the specific error condition. This
information is incorporated into any diagnostic messages created by the DFDL
implementation in response to the Processing Error in an
implementation-dependent manner. If the $id argument string does not have the
form of an XSD QName, or the QName cannot be interpreted as a meaningful
namespace prefix and local identifier, then the Processing Error still occurs
but the diagnostic message is created in an implementation-dependent manner. </p>
<p class=MsoNormal>The $desc is a natural-language description of the error
condition. This string appears in any diagnostic messages created by the DFDL
implementation in response to the Processing Error. </p>
<p class=MsoNormal>The $obj? argument is an arbitrary value used to convey
additional information about the error and it is used to construct the
diagnostic message in an implementation-dependent manner.</p>
<p class=MsoNormal>If any argument is not supplied the Processing Error
occurs but the diagnostic message created is implementation-dependent. </p>
</td>
</tr>
</table>
<h2><a name="_Toc62570228">18.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Unparsing and Circular Expression Deadlock Errors</a></h2>
<p class=MsoNormal>It is possible for expressions and lengths of elements in a
DFDL schema to interact badly, resulting in circular deadlocks. In these cases,&nbsp;
an expression is unable to evaluate because it depends in some way on the
length of something that depends on the expression itself.</p>
<p class=MsoNormal>Expression deadlocks are always Schema Definition Errors.</p>
<p class=MsoNormal>One scenario where such a deadlock can arise is due to what
is called the i<i>nterior-alignment problem</i>. In this scenario<span
style='color:black'> a dfdl:outputValueCalc expression depends on the </span>dfdl:valueLength
function being evaluated for <span style='color:black'>a following complex
element which due to interior alignments, has a length that depends on its
starting position. In this case, &nbsp;a circular deadlock occurs, which is a
unparse-time Processing Error.</span></p>
<h1><a name="_Toc177399140"></a><a name="_Toc175057427"></a><a
name="_Toc199516368"></a><a name="_Toc194984029"></a><a name="_Toc243112871"></a><a
name="_Ref39157931"></a><a name="_Ref39157941"></a><a name="_Ref39157975"></a><a
name="_Ref39157995"></a><a name="_Ref39165089"></a><a name="_Ref39165100"></a><a
name="_Toc62570229"></a><a name="_DFDL_Regular_Expressions"></a>19<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>DFDL Regular
Expressions</h1>
<p class=MsoNormal>A DFDL regular expression may be specified for the
dfdl:lengthPattern format property and the dfdl:testPattern property of the
dfdl:assert and dfdl:discriminator annotations. DFDL regular expressions do not
interpret DFDL entities. </p>
<p class=MsoNormal>A DFDL regular expression is defined by a set of valid
pattern characters. For portability, a DFDL regular expression pattern is
restricted to the inclusive subset of the ICU regular expression [<a
href="#a_ICURegex">ICURegex</a>] and the Java(R) 7 regular expression [<a
href="#a_JavaRegex">JavaRegex</a>] with the Unicode flags UNICODE_CASE and
UNICODE_CHARACTER_CLASS turned on.&nbsp; DFDL regular expressions thereby
conform to Unicode Technical Standard #18 , Unicode Regular Expressions, level
1 [<a href="#a_UnicodeRegex">UnicodeRegex</a>].</p>
<p class=MsoNormal>The following regular expression constructs are not common
to both ICU and Java(R) 7 and it is a Schema Definition Error if any are used
in a DFDL regular expression: &nbsp;</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Construct</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Meaning</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Notes</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>\N{UNICODE CHARACTER NAME}</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>Match the named character</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>ICU only </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>\X</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>Match a Grapheme Cluster</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>ICU only</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>\Uhhhhhhhh</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>Match the character with the
hex value hhhhhhhh</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>ICU only</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>(?# ... )</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>Free-format comment</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>ICU only</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>(?w-w)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>UREGEX_UWORD - Controls the
behaviour of \b in a pattern</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>ICU only</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>(?d-d)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>UNIX_LINES - Enables Unix
lines mode</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>Java 7 only</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>(?u-u)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>UNICODE_CASE - Enables
Unicode-aware case folding</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>Java 7 only (1)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>(?U-U)</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='text-autospace:none'>UNICODE_CHARACTER_CLASS -
Enables the Unicode version of predefined character classes and POSIX
&nbsp;character classes</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid;text-autospace:none'>Java 7
only (2)</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 68 Disallowed Regular Expression Constructs</p>
<p class=MsoNormal>Notes:</p>
<p class=MsoListParagraphCxSpFirst style='margin-left:.25in;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Implementations
using Java 7 MUST set flag UNICODE_CASE by default to match ICU.</p>
<p class=MsoListParagraphCxSpLast style='margin-left:.25in;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Implementations
using Java 7 MUST set flag UNICODE_CHARACTER_CLASS by default to match ICU.</p>
<p class=MsoNormal>Additionally, the behaviour of the word character construct
(\w) is not consistent in ICU and Java 7. In Java 7 \w is</p>
<p class=MsoNormal style='margin-left:.5in'>&nbsp;[\p{Alpha}\p{gc=Mn}\p{gc=Me}\p{gc=Mc}\p{Digit}\p{gc=Pc}],
</p>
<p class=MsoNormal>which is a larger set than ICU where \w is </p>
<p class=MsoNormal style='margin-left:.5in'>[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}].
&nbsp; </p>
<p class=MsoNormal>The use of \w is not recommended in DFDL regular expressions
in conjunction with Unicode encodings, and an implementation MUST issue a
warning if such usage is detected. </p>
<p class=MsoNormal>Character properties are detailed by the Unicode Regular
Expressions [<a href="#a_UnicodeRegex">UnicodeRegex</a>].</p>
<h1><a name="_Ref52982463"></a><a name="_Toc62570230"></a><a
name="_External_Control_of"></a>20<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>External Control of the DFDL Processor</h1>
<p class=nobreak>In addition to providing the DFDL schema and data to be parsed
or serialized, DFDL Schemas can also be parameterized by external variables.</p>
<p class=nobreak>DFDL processors can provide implementation-defined means to
specify:</p>
<p class=MsoListNumber style='margin-left:.6in;text-indent:-.3in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
data to be processed: a data stream when parsing or an Infoset when unparsing.</p>
<p class=MsoListNumber style='margin-left:.6in;text-indent:-.3in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
DFDL schema to be used</p>
<p class=MsoListNumber style='margin-left:.6in;text-indent:-.3in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The <i>&nbsp;distinguished
global element declaration</i> to be used (specifying both name of element and
namespace of that name)</p>
<p class=MsoListNumber style='margin-left:.6in;text-indent:-.3in'>4.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Values
for external variables</p>
<p class=MsoNormal>Notice also that a DFDL Schema, like any XML schema, can
have multiple top-level element declarations; hence, the distinguished global
element declaration is necessary to indicate which of these top-level element
declarations is to be the starting point for processing data. </p>
<p class=MsoNormal>The mechanism by which a DFDL processor is controlled is not
specified by this standard.&nbsp; For example, command line DFDL processors MAY
use command line options, but DFDL processors embedded in other kinds of
software systems may need other mechanisms. </p>
<h1><a name="_Toc177399138"></a><a name="_Toc175057425"></a><a
name="_Toc199516366"></a><a name="_Toc194984027"></a><a name="_Toc243112870"></a><a
name="_Toc349042825"></a><a name="_Toc62570231">21<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Built-in Specifications</a></h1>
<p class=MsoNormal>For convenience, a standard set of named DFDL format
definitions MAY be provided with DFDL processors by implementations. These
built-in format definitions may be imported by DFDL schema authors.</p>
<h1><a name="_Toc349042826"></a><a name="_Toc62570232">22<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Conformance</a></h1>
<p class=nobreak>DFDL conformance can be claimed for schema documents and for
processors</p>
<p class=MsoNormal>A schema document conforms to this specification if it
conforms to the subset of XML Schema 1.0 defined in Section <span class=MsoHyperlink>5.2</span> DFDL
Subset of XML Schema and consists of components which individually and collectively
satisfy all the relevant constraints specified in this document.</p>
<p class=MsoNormal>Conformance may be claimed separately for a DFDL parser, a
DFDL unparser or a DFDL processor that parses and unparses. </p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>A DFDL processor claiming conformance MUST identify the
level of conformance and version specification claimed.</li>
<li class=MsoNormal>A minimal conforming DFDL processor conforms to this
specification when it implements all the non-optional features defined in
this document. </li>
<li class=MsoNormal>An extended conforming DFDL processor conforms to the
specification when it implements all the non-optional features and some of
the optional features defined in this document.&nbsp; </li>
<li class=MsoNormal>A fully conforming DFDL processor conforms to the
specification when it implements all the features defined in this
document.&nbsp; </li>
</ol>
<p class=MsoNormal>See Section <span
class=MsoHyperlink>23</span> Optional
DFDL Features for the list of optional features</p>
<p class=MsoNormal>It is the intention of the DFDL Work Group to provide a
conformance test suit to help verify conformance with this specification.</p>
<h1><a name="_Ref273530851"></a><a name="_Toc349042828"></a><a
name="_Toc62570233"></a><a name="_Toc322911723"></a><a name="_Toc322912262"></a><a
name="_Toc329093123"></a><a name="_Toc332701636"></a><a name="_Toc332701940"></a><a
name="_Toc332711739"></a><a name="_Toc332712041"></a><a name="_Toc332712342"></a><a
name="_Toc332724258"></a><a name="_Toc332724558"></a><a name="_Toc341102854"></a><a
name="_Toc347241589"></a><a name="_Toc347744782"></a><a name="_Toc348984565"></a><a
name="_Toc348984870"></a><a name="_Toc349038034"></a><a name="_Toc349038336"></a><a
name="_Toc349042827"></a><a name="_Toc349642240"></a><a name="_Toc351912949"></a><a
name="_Toc351914970"></a><a name="_Toc351915436"></a><a name="_Toc361231534"></a><a
name="_Toc361232060"></a><a name="_Toc362445358"></a><a name="_Toc363909325"></a><a
name="_Toc364463751"></a><a name="_Toc366078355"></a><a name="_Toc366078970"></a><a
name="_Toc366079955"></a><a name="_Toc366080567"></a><a name="_Toc366081176"></a><a
name="_Toc366505516"></a><a name="_Toc366508885"></a><a name="_Toc366513386"></a><a
name="_Toc366574575"></a><a name="_Toc366578368"></a><a name="_Toc366578962"></a><a
name="_Toc366579554"></a><a name="_Toc366580145"></a><a name="_Toc366580737"></a><a
name="_Toc366581328"></a><a name="_Toc366581920"></a>23<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Optional DFDL Features</h1>
<p class=MsoNormal><span lang=EN-GB>The following table lists the features of
the DFDL language that are considered optional for DFDL processor
implementations. This list admits very small subsets of the full DFDL
specification. For example, a binary-only subset without any expressions or
variables is specifically allowed.</span></p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Feature</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Detection</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Validation </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>External switch</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Named Formats </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:defineFormat or dfdl:ref </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Choices </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>xs:choice in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Arrays where size not known in advance </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:occursCountKind 'implicit', 'parsed', 'stopValue'
</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Expressions </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Use of a DFDL expression in any property value</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>End of parent</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:lengthKind &quot;endOfParent&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Simple type restrictions </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>xs:simpleType in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Text representation for types other than String </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:representation &quot;text&quot; for Number,
Calendar or Boolean types </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Delimiters </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:separator &lt;&gt; &quot;&quot; or dfdl:initiator
&lt;&gt; &quot;&quot; or dfdl:terminator &lt;&gt; &quot;&quot; or
dfdl:lengthKind &quot;delimited&quot; </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Nils</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>XSD nillable 'true' in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Defaults</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>XSD default or XSD fixed in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>Defaulting to Empty String/HexBinary values in the Infoset</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>dfdl:emptyElementParsePolicy=&#8221;treatAsEmpty&#8221;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Lengths in Bits</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:alignmentUnits 'bits' or dfdl:lengthUnits 'bits'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Delimited lengths and representation binary element</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:representation 'binary' (or implied binary) and
dfdl:lengthKind 'delimited'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Regular expressions</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:lengthKind 'pattern', </p>
<p class=TableContents>dfdl:assert with dfdl:testkind 'pattern' , </p>
<p class=TableContents>dfdl:discriminator with dfdl:testkind 'pattern'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Zoned numbers</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:textNumberRep 'zoned'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>IBM 390 packed numbers</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryNumberRep 'packed'&nbsp; </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>IBM 390 packed calendars</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryCalendarRep 'packed'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>IBM 390 floats</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryFloatRep 'ibm390Hex'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Unordered sequences</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:sequenceKind 'unordered'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Floating elements</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:floating 'yes'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl functions in expression language</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>DFDL functions in expression</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Hidden groups</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:hiddenGroupRef &lt;&gt; ''</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Calculated values</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:inputValueCalc &lt;&gt; '' or
dfdl:outputValueCalc &lt;&gt; ''</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Escape schemes</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfd:defineEscapeScheme in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Extended encodings</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Any dfdl:encoding value beyond the core list</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>UTF-16 Variable Width Characters</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:utf16Width=&#8221;variable&#8221;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Asserts </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:assert in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Discriminators </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:discriminator in the schema</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Prefixed lengths</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:lengthKind 'prefixed'</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Variables </p>
<p class=TableContents>&nbsp;</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:defineVariable, </p>
<p class=TableContents>dfdl:newVariableInstances, </p>
<p class=TableContents>dfdl:setVariable</p>
<p class=TableContents>Variables in DFDL expression language</p>
<p class=TableContents>Note that variables as a feature is dependent on the
Expressions feature.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>BCD calendars </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryCalendarRep &quot;bcd&quot; &nbsp; </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>BCD numbers</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryNumberRep &quot;bcd&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Multiple schemas </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>xs:include or xs:import in the schema </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>IBM 4690 packed numbers</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryNumberRep &quot;ibm4690Packed&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>IBM 4690 packed calendars</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:binaryCalendarRep &quot;ibm4690Packed&quot;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>DFDL Byte Value Entities</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Use of %#r syntax in a DFDL String Literal other than
the dfdl:fillByte property</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>DFDL Standard Character Set Encodings</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:encoding name begins with &quot;X-DFDL-&quot;.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>Bit Order - Least Significant Bit First</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=TableContents>dfdl:bitOrder with value 'leastSignificantBitFirst'</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 69 Optional DFDL features</p>
<p class=MsoNormal>In order to provide portability of a DFDL schema, a minimal
or extended conforming processor MUST issue warnings about any DFDL properties
it does not implement. This warning can simply state that the property is not
recognized.</p>
<p class=MsoNormal>(This allows the implementation to simply have no knowledge
of properties it does not need for the subset of features it implements.) </p>
<p class=MsoNormal>For example, if the hidden groups feature were not
implemented, then the implementation most likely would not recognize the
dfdl:hiddenGroupRef property at all. Such an implementation MUST issue a
warning that the dfdl:hiddenGroupRef property is not recognized. </p>
<p class=MsoNormal>It is a Schema Definition Error if a DFDL schema uses an
optional feature that is not supported by a minimal or extended conforming
processor. </p>
<h1><a name="_Toc177399153"></a><a name="_Toc175057440"></a><a
name="_Toc199516371"></a><a name="_Toc194984045"></a><a name="_Toc243112882"></a><a
name="_Toc349042878"></a><a name="_Toc62570234"></a><a name="_Toc322911725"></a><a
name="_Toc322912264"></a><a name="_Toc329093125"></a><a name="_Toc332701638"></a><a
name="_Toc332701942"></a><a name="_Toc332711741"></a><a name="_Toc332712043"></a><a
name="_Toc332712344"></a><a name="_Toc332724260"></a><a name="_Toc332724560"></a><a
name="_Toc341102856"></a><a name="_Toc347241591"></a><a name="_Toc347744784"></a><a
name="_Toc348984567"></a><a name="_Toc348984872"></a><a name="_Toc349038036"></a><a
name="_Toc349038338"></a><a name="_Toc349042829"></a><a name="_Toc349642242"></a><a
name="_Toc351912951"></a><a name="_Toc351914972"></a><a name="_Toc351915438"></a><a
name="_Toc361231536"></a><a name="_Toc361232062"></a><a name="_Toc362445360"></a><a
name="_Toc363909327"></a><a name="_Toc364463753"></a><a name="_Toc366078357"></a><a
name="_Toc366078972"></a><a name="_Toc366079957"></a><a name="_Toc366080569"></a><a
name="_Toc366081178"></a><a name="_Toc366505518"></a><a name="_Toc366508887"></a><a
name="_Toc366513388"></a><a name="_Toc366574577"></a><a name="_Toc366578370"></a><a
name="_Toc366578964"></a><a name="_Toc366579556"></a><a name="_Toc366580147"></a><a
name="_Toc366580739"></a><a name="_Toc366581330"></a><a name="_Toc366581922"></a><a
name="_Toc322911748"></a><a name="_Toc322912287"></a><a name="_Toc329093148"></a><a
name="_Toc332701661"></a><a name="_Toc332701965"></a><a name="_Toc332711763"></a><a
name="_Toc332712065"></a><a name="_Toc332712366"></a><a name="_Toc332724282"></a><a
name="_Toc332724582"></a><a name="_Toc341102878"></a><a name="_Toc347241613"></a><a
name="_Toc347744806"></a><a name="_Toc348984589"></a><a name="_Toc348984894"></a><a
name="_Toc349038058"></a><a name="_Toc349038360"></a><a name="_Toc349042851"></a><a
name="_Toc349642260"></a><a name="_Toc351912973"></a><a name="_Toc351914994"></a><a
name="_Toc351915460"></a><a name="_Toc361231558"></a><a name="_Toc361232084"></a><a
name="_Toc362445382"></a><a name="_Toc363909349"></a><a name="_Toc364463775"></a><a
name="_Toc366078379"></a><a name="_Toc366078994"></a><a name="_Toc366079979"></a><a
name="_Toc366080591"></a><a name="_Toc366081200"></a><a name="_Toc366505540"></a><a
name="_Toc366508909"></a><a name="_Toc366513410"></a><a name="_Toc366574599"></a><a
name="_Toc366578392"></a><a name="_Toc366578986"></a><a name="_Toc366579578"></a><a
name="_Toc366580169"></a><a name="_Toc366580761"></a><a name="_Toc366581352"></a><a
name="_Toc366581944"></a><a name="_Toc322911749"></a><a name="_Toc322912288"></a><a
name="_Toc329093149"></a><a name="_Toc332701662"></a><a name="_Toc332701966"></a><a
name="_Toc332711764"></a><a name="_Toc332712066"></a><a name="_Toc332712367"></a><a
name="_Toc332724283"></a><a name="_Toc332724583"></a><a name="_Toc341102879"></a><a
name="_Toc347241614"></a><a name="_Toc347744807"></a><a name="_Toc348984590"></a><a
name="_Toc348984895"></a><a name="_Toc349038059"></a><a name="_Toc349038361"></a><a
name="_Toc349042852"></a><a name="_Toc349642261"></a><a name="_Toc351912974"></a><a
name="_Toc351914995"></a><a name="_Toc351915461"></a><a name="_Toc361231559"></a><a
name="_Toc361232085"></a><a name="_Toc362445383"></a><a name="_Toc363909350"></a><a
name="_Toc364463776"></a><a name="_Toc366078380"></a><a name="_Toc366078995"></a><a
name="_Toc366079980"></a><a name="_Toc366080592"></a><a name="_Toc366081201"></a><a
name="_Toc366505541"></a><a name="_Toc366508910"></a><a name="_Toc366513411"></a><a
name="_Toc366574600"></a><a name="_Toc366578393"></a><a name="_Toc366578987"></a><a
name="_Toc366579579"></a><a name="_Toc366580170"></a><a name="_Toc366580762"></a><a
name="_Toc366581353"></a><a name="_Toc366581945"></a><a name="_Toc322911750"></a><a
name="_Toc322912289"></a><a name="_Toc329093150"></a><a name="_Toc332701663"></a><a
name="_Toc332701967"></a><a name="_Toc332711765"></a><a name="_Toc332712067"></a><a
name="_Toc332712368"></a><a name="_Toc332724284"></a><a name="_Toc332724584"></a><a
name="_Toc341102880"></a><a name="_Toc347241615"></a><a name="_Toc347744808"></a><a
name="_Toc348984591"></a><a name="_Toc348984896"></a><a name="_Toc349038060"></a><a
name="_Toc349038362"></a><a name="_Toc349042853"></a><a name="_Toc349642262"></a><a
name="_Toc351912975"></a><a name="_Toc351914996"></a><a name="_Toc351915462"></a><a
name="_Toc361231560"></a><a name="_Toc361232086"></a><a name="_Toc362445384"></a><a
name="_Toc363909351"></a><a name="_Toc364463777"></a><a name="_Toc366078381"></a><a
name="_Toc366078996"></a><a name="_Toc366079981"></a><a name="_Toc366080593"></a><a
name="_Toc366081202"></a><a name="_Toc366505542"></a><a name="_Toc366508911"></a><a
name="_Toc366513412"></a><a name="_Toc366574601"></a><a name="_Toc366578394"></a><a
name="_Toc366578988"></a><a name="_Toc366579580"></a><a name="_Toc366580171"></a><a
name="_Toc366580763"></a><a name="_Toc366581354"></a><a name="_Toc366581946"></a><a
name="_Toc362445409"></a><a name="_Toc363909377"></a><a name="_Toc364463805"></a><a
name="_Toc366078409"></a><a name="_Toc366079024"></a><a name="_Toc366080009"></a><a
name="_Toc366080621"></a><a name="_Toc366081230"></a><a name="_Toc366505570"></a><a
name="_Toc366508939"></a><a name="_Toc366513440"></a><a name="_Toc366574629"></a><a
name="_Toc366578422"></a><a name="_Toc366579016"></a><a name="_Toc366579608"></a><a
name="_Toc366580199"></a><a name="_Toc366580791"></a><a name="_Toc366581382"></a><a
name="_Toc366581974"></a><a name="_Toc362445410"></a><a name="_Toc363909378"></a><a
name="_Toc364463806"></a><a name="_Toc366078410"></a><a name="_Toc366079025"></a><a
name="_Toc366080010"></a><a name="_Toc366080622"></a><a name="_Toc366081231"></a><a
name="_Toc366505571"></a><a name="_Toc366508940"></a><a name="_Toc366513441"></a><a
name="_Toc366574630"></a><a name="_Toc366578423"></a><a name="_Toc366579017"></a><a
name="_Toc366579609"></a><a name="_Toc366580200"></a><a name="_Toc366580792"></a><a
name="_Toc366581383"></a><a name="_Toc366581975"></a><a name="_Toc362445411"></a><a
name="_Toc363909379"></a><a name="_Toc364463807"></a><a name="_Toc366078411"></a><a
name="_Toc366079026"></a><a name="_Toc366080011"></a><a name="_Toc366080623"></a><a
name="_Toc366081232"></a><a name="_Toc366505572"></a><a name="_Toc366508941"></a><a
name="_Toc366513442"></a><a name="_Toc366574631"></a><a name="_Toc366578424"></a><a
name="_Toc366579018"></a><a name="_Toc366579610"></a><a name="_Toc366580201"></a><a
name="_Toc366580793"></a><a name="_Toc366581384"></a><a name="_Toc366581976"></a><a
name="_Toc199515659"></a><a name="_Toc199515847"></a><a name="_Toc199516286"></a><a
name="_Toc199841837"></a><a name="_Toc199844403"></a><a name="_Toc199515660"></a><a
name="_Toc199515848"></a><a name="_Toc199516287"></a><a name="_Toc199841838"></a><a
name="_Toc199844404"></a>24<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Security Considerations</h1>
<p class=MsoNormal>All locations MUST be properly initialized before writing to
prevent accidental (or purposeful) transmission of data in the unused parts of
data formats. Even when a DFDL description does not specify that data must be
written to a particular part of the output representation, a defined pattern MUST
always be written.</p>
<p class=MsoNormal>When unparsing data it is a Schema Definition Error if the
representation properties that control filling and padding are not defined by
the DFDL schema. The DFDL processor MUST fail if they are not defined so that
it is certain no region of the output data has unspecified contents.</p>
<p class=MsoNormal>If regions within a DFDL-described data object are
encrypted, then when decrypting them proper means MUST be used to assure secure
passage of passwords to the decrypting software. Such means are beyond the
scope of the DFDL language specification. </p>
<p class=MsoNormal>In addition, if encryption passwords/keys are stored in DFDL
schema-described data, then proper means MUST be used to assure that the
decrypted form of these passwords is not revealed. Such means are beyond the
scope of the DFDL language specification. </p>
<h1><a name="_Toc177399154"></a><a name="_Toc175057441"></a><a
name="_Toc199516372"></a><a name="_Toc243112883"></a><a name="_Toc349042879"></a><a
name="_Toc62570235">25<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Authors
and Contributors</a></h1>
<p class=Author>Michael J. Beckerle, <a name="OLE_LINK1"></a><a name="OLE_LINK2">(corresponding
author)</a></p>
<p class=Author>Owl Cyber Defense (formerly known as Tresys Technology)</p>
<p class=Author>Columbia, MD</p>
<p class=Author>USA</p>
<p class=Author><span lang=DE>Email: </span><a
href="mailto:mbeckerle@owlcyberdefense.com"><span lang=DE>mbeckerle@owlcyberdefense.com</span></a><span
lang=DE>, mbeckerle.dfdl@gmail.com</span></p>
<p class=Author>&nbsp;</p>
<p class=Author><span lang=DE>Stephen M. Hanson, (corresponding author)</span></p>
<p class=Author>IBM, </p>
<p class=Author>Hursley, </p>
<p class=Author>Winchester, UK</p>
<p class=Author>Email: <a href="mailto:smh@uk.ibm.com">smh@uk.ibm.com</a></p>
<p class=Author>&nbsp;</p>
<p class=Author>Alan W. Powell,</p>
<p class=Author>Email: <a href="mailto:apowell888@googlemail.com">apowell888@googlemail.com</a></p>
<p class=MsoNormal style='text-autospace:none'>&nbsp;</p>
<p class=MsoNormal style='text-autospace:none'>The authors greatly acknowledge
the contributions made to this document by the following and all the other
people who provided constructive and valuable input in the group discussions.</p>
<p class=MsoNormal style='text-autospace:none'>Tim Kimber, IBM, Hursley, UK</p>
<p class=MsoNormal style='text-autospace:none'>Suman Kalia, IBM, Markham,
Ontario, Canada </p>
<p class=MsoNormal style='text-autospace:none'>Stephanie Fetzer, IBM,
Charlotte, USA</p>
<p class=MsoNormal style='text-autospace:none'>Martin Westhead, Netgear, San
Jose, CA, USA</p>
<p class=MsoNormal style='text-autospace:none'>James Myers, Univ. of Michigan,
MI, USA</p>
<p class=MsoNormal style='text-autospace:none'>Jonathan W. Cranford, MITRE
Corporation, USA</p>
<p class=MsoNormal style='text-autospace:none'>Tom Sugden, UBS Investment Bank,
UK</p>
<p class=MsoNormal style='text-autospace:none'>Tara Gibson, PNNL, Richland, WA,
USA</p>
<p class=MsoNormal style='text-autospace:none'>Robert McGrath, NCSA,
Urbana-Champaign, IL, USA</p>
<p class=MsoNormal style='text-autospace:none'>Geoff Judd, IBM, Hursley, UK</p>
<p class=MsoNormal style='text-autospace:none'>Dewey M. Sasser, MA, USA</p>
<p class=MsoNormal style='text-autospace:none'>David A. Loose, Opera Solutions,
MA, USA</p>
<p class=MsoNormal style='text-autospace:none'>Eric S. Smith, eBay Enterprise,
MA, USA</p>
<p class=MsoNormal style='text-autospace:none'>Kristoffer H. Rose, Two Sigma
Investments, NY, USA</p>
<p class=MsoNormal style='text-autospace:none'>Simon Parker, Bloomberg Polar
Lake, Dublin, IE</p>
<p class=MsoNormal style='text-autospace:none'>Peter A. Lambros, IBM, Hursley,
UK</p>
<p class=MsoNormal style='text-autospace:none'>Dave Glick, SIPC, USA</p>
<p class=MsoNormal style='text-autospace:none'>Steve Marting, Progeny, USA</p>
<p class=MsoNormal>Alejandro Rodriguez, Amazon, WA, USA</p>
<h1><a name="_Toc526008660"></a><a name="_Toc177399155"></a><a
name="_Toc175057442"></a><a name="_Toc199516373"></a><a name="_Toc243112884"></a><a
name="_Toc349042883"></a><a name="_Toc62570236"></a><a name="_Toc322911778"></a><a
name="_Toc322912317"></a><a name="_Toc329093177"></a><a name="_Toc332701690"></a><a
name="_Toc332701994"></a><a name="_Toc332711792"></a><a name="_Toc332712094"></a><a
name="_Toc332712395"></a><a name="_Toc332724311"></a><a name="_Toc332724611"></a><a
name="_Toc341102907"></a><a name="_Toc347241643"></a><a name="_Toc347744835"></a><a
name="_Toc348984618"></a><a name="_Toc348984923"></a><a name="_Toc349038087"></a><a
name="_Toc349038389"></a><a name="_Toc349042880"></a><a name="_Toc349642281"></a><a
name="_Toc351913002"></a><a name="_Toc351915023"></a><a name="_Toc351915489"></a><a
name="_Toc361231587"></a><a name="_Toc361232113"></a><a name="_Toc362445414"></a><a
name="_Toc363909382"></a><a name="_Toc364463810"></a><a name="_Toc366078414"></a><a
name="_Toc366079029"></a><a name="_Toc366080014"></a><a name="_Toc366080626"></a><a
name="_Toc366081235"></a><a name="_Toc366505575"></a><a name="_Toc366508944"></a><a
name="_Toc366513445"></a><a name="_Toc366574634"></a><a name="_Toc366578427"></a><a
name="_Toc366579021"></a><a name="_Toc366579613"></a><a name="_Toc366580204"></a><a
name="_Toc366580796"></a><a name="_Toc366581387"></a><a name="_Toc366581979"></a><a
name="_Toc322911779"></a><a name="_Toc322912318"></a><a name="_Toc329093178"></a><a
name="_Toc332701691"></a><a name="_Toc332701995"></a><a name="_Toc332711793"></a><a
name="_Toc332712095"></a><a name="_Toc332712396"></a><a name="_Toc332724312"></a><a
name="_Toc332724612"></a><a name="_Toc341102908"></a><a name="_Toc347241644"></a><a
name="_Toc347744836"></a><a name="_Toc348984619"></a><a name="_Toc348984924"></a><a
name="_Toc349038088"></a><a name="_Toc349038390"></a><a name="_Toc349042881"></a><a
name="_Toc349642282"></a><a name="_Toc351913003"></a><a name="_Toc351915024"></a><a
name="_Toc351915490"></a><a name="_Toc361231588"></a><a name="_Toc361232114"></a><a
name="_Toc362445415"></a><a name="_Toc363909383"></a><a name="_Toc364463811"></a><a
name="_Toc366078415"></a><a name="_Toc366079030"></a><a name="_Toc366080015"></a><a
name="_Toc366080627"></a><a name="_Toc366081236"></a><a name="_Toc366505576"></a><a
name="_Toc366508945"></a><a name="_Toc366513446"></a><a name="_Toc366574635"></a><a
name="_Toc366578428"></a><a name="_Toc366579022"></a><a name="_Toc366579614"></a><a
name="_Toc366580205"></a><a name="_Toc366580797"></a><a name="_Toc366581388"></a><a
name="_Toc366581980"></a><a name="_Toc322911780"></a><a name="_Toc322912319"></a><a
name="_Toc329093179"></a><a name="_Toc332701692"></a><a name="_Toc332701996"></a><a
name="_Toc332711794"></a><a name="_Toc332712096"></a><a name="_Toc332712397"></a><a
name="_Toc332724313"></a><a name="_Toc332724613"></a><a name="_Toc341102909"></a><a
name="_Toc347241645"></a><a name="_Toc347744837"></a><a name="_Toc348984620"></a><a
name="_Toc348984925"></a><a name="_Toc349038089"></a><a name="_Toc349038391"></a><a
name="_Toc349042882"></a><a name="_Toc349642283"></a><a name="_Toc351913004"></a><a
name="_Toc351915025"></a><a name="_Toc351915491"></a><a name="_Toc361231589"></a><a
name="_Toc361232115"></a><a name="_Toc362445416"></a><a name="_Toc363909384"></a><a
name="_Toc364463812"></a><a name="_Toc366078416"></a><a name="_Toc366079031"></a><a
name="_Toc366080016"></a><a name="_Toc366080628"></a><a name="_Toc366081237"></a><a
name="_Toc366505577"></a><a name="_Toc366508946"></a><a name="_Toc366513447"></a><a
name="_Toc366574636"></a><a name="_Toc366578429"></a><a name="_Toc366579023"></a><a
name="_Toc366579615"></a><a name="_Toc366580206"></a><a name="_Toc366580798"></a><a
name="_Toc366581389"></a><a name="_Toc366581981"></a>26<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Intellectual Property Statement</h1>
<p class=MsoNormal>The OGF takes no position regarding the validity or scope of
any intellectual property or other rights that might be claimed to pertain to
the implementation or use of the technology described in this document or the
extent to which any license under such rights might or might not be available;
neither does it represent that it has made any effort to identify any such
rights. Copies of claims of rights made available for publication and any
assurances of licenses to be made available, or the result of an attempt made
to obtain a general license or permission for the use of such proprietary
rights by implementers or users of this specification can be obtained from the
OGF Secretariat.</p>
<p class=MsoNormal>The OGF invites any interested party to bring to its
attention any copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice this
recommendation. Please address the information to the OGF Executive Director.</p>
<h1><a name="_Toc526008661"></a><a name="_Toc177399156"></a><a
name="_Toc175057443"></a><a name="_Toc199516374"></a><a name="_Toc243112885"></a><a
name="_Toc349042884"></a><a name="_Toc62570237">27<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Disclaimer</a></h1>
<p class=MsoNormal>This document and the information contained herein is
provided on an &quot;As Is&quot; basis and the OGF disclaims all warranties,
express or implied, including but not limited to any warranty that the use of
the information herein will not infringe any rights or any implied warranties
of merchantability or fitness for a particular purpose.</p>
<h1><a name="_Toc177399157"></a><a name="_Toc175057444"></a><a
name="_Toc199516375"></a><a name="_Toc243112886"></a><a name="_Toc349042885"></a><a
name="_Toc62570238">28<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Full
Copyright Notice</a></h1>
<p class=MsoNormal>Copyright (C) Open Grid Forum (2005-2021). Some Rights
Reserved. </p>
<p class=MsoNormal>This document and translations of it may be copied and
furnished to others, and derivative works that comment on or otherwise explain
it or assist in its implementation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind, provided
that the above copyright notice and this paragraph are included as references
to the derived portions on all such copies and derivative works. The published
OGF document from which such works are derived, however, may not be modified in
any way, such as by removing the copyright notice or references to the OGF or
other organizations, except as needed for the purpose of developing new or
updated OGF documents in conformance with the procedures defined in the OGF
Document Process, or as required to translate it into languages other than
English. OGF, with the approval of its board, may remove this restriction for
inclusion of OGF document content for the purpose of producing standards in
cooperation with other international standards bodies.</p>
<p class=MsoNormal>The limited permissions granted above are perpetual and will
not be revoked by the OGF or its successors or assignees. </p>
<p class=MsoNormal>ICU - Copyright (c) 1995-2021 International Business
Machines Corporation and others</p>
<p class=MsoNormal>XPATH - <a
href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>&nbsp;&copy;&nbsp;2007&nbsp;<a
href="http://www.w3.org/"> <acronym>W3C</acronym></a><sup>&reg;</sup> (<a
href="http://www.csail.mit.edu/"><acronym>MIT</acronym></a>, <a
href="http://www.ercim.org/"><acronym>ERCIM</acronym></a>, <a
href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a
href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document
use</a> rules apply.</p>
<h1><a name="_Toc177399158"></a><a name="_Toc175057445"></a><a
name="_Toc199516376"></a><a name="_Toc243112887"></a><a name="_Toc349042888"></a><a
name="_Toc62570239"></a><a name="_Toc322911784"></a><a name="_Toc322912323"></a><a
name="_Toc329093183"></a><a name="_Toc332701696"></a><a name="_Toc332702000"></a><a
name="_Toc332711798"></a><a name="_Toc332712100"></a><a name="_Toc332712401"></a><a
name="_Toc332724317"></a><a name="_Toc332724617"></a><a name="_Toc341102913"></a><a
name="_Toc347241649"></a><a name="_Toc347744841"></a><a name="_Toc348984624"></a><a
name="_Toc348984929"></a><a name="_Toc349038093"></a><a name="_Toc349038395"></a><a
name="_Toc349042886"></a><a name="_Toc349642287"></a><a name="_Toc351913008"></a><a
name="_Toc351915029"></a><a name="_Toc351915495"></a><a name="_Toc361231593"></a><a
name="_Toc361232119"></a><a name="_Toc362445420"></a><a name="_Toc363909388"></a><a
name="_Toc364463816"></a><a name="_Toc366078420"></a><a name="_Toc366079035"></a><a
name="_Toc366080020"></a><a name="_Toc366080632"></a><a name="_Toc366081241"></a><a
name="_Toc366505581"></a><a name="_Toc366508950"></a><a name="_Toc366513451"></a><a
name="_Toc366574640"></a><a name="_Toc366578433"></a><a name="_Toc366579027"></a><a
name="_Toc366579619"></a><a name="_Toc366580210"></a><a name="_Toc366580802"></a><a
name="_Toc366581393"></a><a name="_Toc366581985"></a><a name="_Toc322911785"></a><a
name="_Toc322912324"></a><a name="_Toc329093184"></a><a name="_Toc332701697"></a><a
name="_Toc332702001"></a><a name="_Toc332711799"></a><a name="_Toc332712101"></a><a
name="_Toc332712402"></a><a name="_Toc332724318"></a><a name="_Toc332724618"></a><a
name="_Toc341102914"></a><a name="_Toc347241650"></a><a name="_Toc347744842"></a><a
name="_Toc348984625"></a><a name="_Toc348984930"></a><a name="_Toc349038094"></a><a
name="_Toc349038396"></a><a name="_Toc349042887"></a><a name="_Toc349642288"></a><a
name="_Toc351913009"></a><a name="_Toc351915030"></a><a name="_Toc351915496"></a><a
name="_Toc361231594"></a><a name="_Toc361232120"></a><a name="_Toc362445421"></a><a
name="_Toc363909389"></a><a name="_Toc364463817"></a><a name="_Toc366078421"></a><a
name="_Toc366079036"></a><a name="_Toc366080021"></a><a name="_Toc366080633"></a><a
name="_Toc366081242"></a><a name="_Toc366505582"></a><a name="_Toc366508951"></a><a
name="_Toc366513452"></a><a name="_Toc366574641"></a><a name="_Toc366578434"></a><a
name="_Toc366579028"></a><a name="_Toc366579620"></a><a name="_Toc366580211"></a><a
name="_Toc366580803"></a><a name="_Toc366581394"></a><a name="_Toc366581986"></a><a
name="_References"></a>29<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>References</h1>
<table class=MsoNormalTable border=0 cellpadding=0>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ASN1">[ASN1]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>&quot;Introduction to ASN.1&quot;, <a
href="https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx">https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ASN1CER">[ASN1CER] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><strong><span style='font-weight:normal'>X.690&nbsp;:&nbsp;Information
technology - ASN.1 encoding rules: Specification of Basic Encoding Rules
(BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) </span></strong><a
href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;id=T-REC-X.690-200811-S!!PDF-E&amp;type=items">https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;id=T-REC-X.690-200811-S!!PDF-E&amp;type=items</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="ref_ASN1ECN">[ASN1ECN] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>&quot;ASN.1 Encoding Control Notation,&quot; <a
href="https://www.itu.int/en/ITU-T/asn1/Pages/ecn.aspx">https://www.itu.int/en/ITU-T/asn1/Pages/ecn.aspx</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="ref_ASN1PER"></a><a name="a_ASN1PER">[ASN1PER]
</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>&quot;ASN.1 Packed Encoding Rules (PER),&quot; <a
href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;id=T-REC-X.691-200811-S!!PDF-E&amp;type=items">https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;id=T-REC-X.691-200811-S!!PDF-E&amp;type=items</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_AVRO">[AVRO] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>&quot;Avro,&quot; <a
href="http://avro.apache.org/docs/1.3.0/spec.html">http://avro.apache.org/docs/1.3.0/spec.html</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_BFD">[BFD] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>&quot;Binary Format Description (BFD)
Language,&quot; <a
href="https://web.archive.org/web/20040331210530/http:/collaboratory.emsl.pnl.gov/sam/bfd/">https://web.archive.org/web/20040331210530/http://collaboratory.emsl.pnl.gov/sam/bfd/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_CARealia">[CARealia] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Disc Interchange Service Company, Inc., Westford,
MA, USA., &quot;EBCDIC to ASCII Conversion of Signed Fields,&quot; <a
href="http://www.3480-3590-data-conversion.com/article-signed-fields.html">http://www.3480-3590-data-conversion.com/article-signed-fields.html</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_CCSID">[CCSID]</a> </p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>&quot;Coded Character Set Identifiers
(CCSID),&quot;&nbsp; <a
href="https://www.ibm.com/support/knowledgecenter/SS4SVW_3.0.0/designing/ccsid_list.html">https://www.ibm.com/support/knowledgecenter/SS4SVW_3.0.0/designing/ccsid_list.html</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name=Composite>[Composite]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Composite Design Pattern: https://en.wikipedia.org/wiki/Composite_pattern</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name=DFDLSchemas>[DFDLSchemas]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>DFDL Schemas for Commercial and Scientific Data
Formats https://github.com/DFDLSchemas</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_EXI">[EXI] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;Efficient XML Interchange (EXI) Format
1.0 (Second Edition),&quot;&nbsp; <a href="http://www.w3.org/TR/exi">http://www.w3.org/TR/exi</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name=GPB>[GPB]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Google Protocol Buffers: https://developers.google.com/protocol-buffers</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_HDF">[HDF]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Hierarchical Data Format (HDF) <a
href="http://www.hdfgroup.org/">http://www.hdfgroup.org/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_IANA">[IANA]</a> </p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>IANA, &quot;Character Sets,&quot; <a
href="http://www.iana.org/assignments/character-sets">http://www.iana.org/assignments/character-sets</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ICUDateTime">[ICUDateTime] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>icu-project.org, &quot;Formatting Dates and
Times,&quot; <a href="http://userguide.icu-project.org/formatparse/datetime">http://userguide.icu-project.org/formatparse/datetime</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ICUDecimal">[ICUDecimal] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>icu-project.org, &quot;icu::DecimalFormat Class
Reference,&quot; <a
href="https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classDecimalFormat.html">https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classDecimalFormat.html</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ICULocale">[ICULocale] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>icu-project.org, &quot;Locale,&quot; <a
href="http://userguide.icu-project.org/locale">http://userguide.icu-project.org/locale</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ICURegex">[ICURegex] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>icu-project.org, &quot;Regular Expressions,&quot; <a
href="http://userguide.icu-project.org/strings/regexp">http://userguide.icu-project.org/strings/regexp</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ISO10646">[ISO10646]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Universal Coded Character Set <a
href="https://www.iso.org/standard/69119.html">https://www.iso.org/standard/69119.html</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name=ISO8583>[ISO8583]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>ISO8583: Financial transaction card originated
messages &#8212; Interchange message specifications &#8212; Part 1: Messages,
data elements and code values https://www.iso.org/obp/ui/#iso:std:iso:8583:-1:ed-1:v1:en</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_ISO8601">[ISO8601]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Date and Time Format - ISO 8601 <a
href="http://www.iso.org/iso/home/standards/iso8601.htm">http://www.iso.org/iso/home/standards/iso8601.htm</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_JavaRegex">[JavaRegex] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Oracle, &quot;Class Pattern,&quot;&nbsp; <a
href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html">http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="ref_OBSOLETE_DFDL"></a><a
name="ref_OBSOLETE_DFDL_174">[OBSOLETE_DFDL_174]</a> </p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Michael J Beckerle, Stephen M Hanson, Alan W Powell.&nbsp;
<u>GFD-P-R.174: Data Format Description Language (DFDL) v1.0 Specification</u>.&nbsp;
Open Grid Forum.&nbsp; January 2011. <a
href="http://www.ogf.org/documents/GFD.174.pdf">http://www.ogf.org/documents/GFD.174.pdf</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="ref_OBSOLETE_DFDL_207">[OBSOLETE_DFDL_207]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Michael J Beckerle, Stephen M Hanson&nbsp; <u>GFD-P-R.207:
Data Format Description Language (DFDL) v1.0 Specification</u>.&nbsp; Open
Grid Forum.&nbsp; September 2014. <a
href="http://www.ogf.org/documents/GFD.207.pdf">http://www.ogf.org/documents/GFD.207.pdf</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_IANATimeZone">[IANATimeZone] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>IANA - Internet Assigned Numbers Authority,
&quot;Time Zone Database,&quot;&nbsp; <a href="http://www.iana.org/time-zones">http://www.iana.org/time-zones</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_JSON">[JSON]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Introducing JSON <a href="http://www.json.org/">http://www.json.org</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_NetCDF">[NETCDF]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Network Common Data Form (NetCDF) <a
href="http://www.unidata.ucar.edu/software/netcdf/">http://www.unidata.ucar.edu/software/netcdf/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_OMG_EAI">[OMG_EAI] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>OMG &quot;CAM&quot; TD Model: Object Management
Group (OMG) &quot;UML Profile and Interchange Models for Enterprise
Application Integration (EAI) Specification&quot; formal/04-03-26, March
2004. Section 7.3.2. Available at <a
href="http://www.omg.org/cgi-bin/doc?formal/2004-03-26">http://www.omg.org/cgi-bin/doc?formal/2004-03-26</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_PSVI">[PSVI]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Post Schema Validation Infoset</p>
<p class=MsoNormal>In W3C XML Schema Definition Language (XSD) 1.1 Part 1:
Structures</p>
<p class=MsoNormal>https://www.w3.org/TR/xmlschema11-1/</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_RDP">[RDP] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>William H. Burge, &quot;Recursive Programming
Techniques,&quot; Addison-Wesley Longman, Incorporated, 1975. ISBN&#8209;10:
0201144506, ISBN&#8209;13: 978&#8209;0201144505 0</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_RFC2119">[RFC2119] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>S. Bradner, &quot;RFC 2119: Key words for use in
RFCs to Indicate Requirement Levels,&quot; IETF (Internet Engineering Task
Force). <a href="http://www.ietf.org/rfc/rfc2119.txt" target="_top"><i>RFC
2119: Key words for use in RFCs to Indicate Requirement Levels</i></a>. S.
Bradner. 1997.</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XSD_SCD"></a><a name="a_SCD">[SCD] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;W3C XML Schema Definition Language (XSD):
Component Designators,&quot;&nbsp; <a
href="http://www.w3.org/TR/xmlschema-ref/">http://www.w3.org/TR/xmlschema-ref/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_Thrift">[Thrift] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>M. Slee, A. Agarwal and M. Kwiatkowski, &quot;Thrift:
Scalable Cross-Language Services Implementation,&quot;&nbsp; <a
href="https://thrift.apache.org/static/files/thrift-20070401.pdf">https://thrift.apache.org/static/files/thrift-20070401.pdf</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_UML">[UML]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Unified Modeling Language&nbsp; <a
href="http://www.uml.org/">http://www.uml.org/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_Unicode">[Unicode] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>The Unicode Consortium, &quot;Unicode,&quot;&nbsp; <a
href="https://home.unicode.org/">https://home.unicode.org/</a>.</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_CLDR">[UnicodeCLDR] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Unicode, Inc., &quot;Unicode Common Locale Data
Repository,&quot;&nbsp; <a href="http://sites.google.com/site/cldr/">http://sites.google.com/site/cldr/</a>.</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_UnicodeRegex">[UnicodeRegex] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Unicode, Inc., &quot;Unicode Regular
Expressions,&quot;&nbsp; <a href="http://www.unicode.org/reports/tr18/">http://www.unicode.org/reports/tr18/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_LDML">[UnicodeLDML] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>Unicode, Inc., &quot;Unicode Locale Data Markup
Language (LDML),&quot; <a href="http://www.unicode.org/reports/tr35/">http://www.unicode.org/reports/tr35/.</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name=Walmsely>[</a>Walmsley]</p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Definitive XML Schema (Walmsley, ISBN 0-13-065567-8) page
390, Section 17.8, Table 17-6 says &quot;A child element-type name which must
be prefixed if it is in a namespace&quot;.</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XDR">[XDR]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>RFC 4506:&nbsp; XDR: External Data Representation
Standard. IETF (Internet Engineering Task Force), 2006. <a
href="http://tools.ietf.org/html/rfc4506">http://tools.ietf.org/html/rfc4506</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XML10">[XML1.0] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;Extensible Markup Language (XML) 1.0
(Fifth Edition),&quot; 26 November 2008.&nbsp; <a
href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XML11">[XML1.1] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;Extensible Markup Language (XML) 1.1
(Second Edition),&quot; 16 August 2006.&nbsp; <a
href="http://www.w3.org/TR/xml11/">http://www.w3.org/TR/xml11/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XMLInfoset">[XMLInfoset] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;XML Information Set (Second
Edition),&quot; 4 February 2004.&nbsp; <a
href="http://www.w3.org/TR/xml-infoset">http://www.w3.org/TR/xml-Infoset</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XMLNamespaces">[XMLNamespaces] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;Namespaces in XML 1.0 (Third
Edition),&quot; 8 December 2009.&nbsp; <a
href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XSDL">[XSD] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;XML Schema,&quot;&nbsp; <a
href="http://www.w3.org/XML/Schema">http://www.w3.org/XML/Schema</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XPath">[XPath] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &quot;XML Path Language (XPath) 2.0 (Second
Edition),&quot;&nbsp; <a href="http://www.w3.org/TR/xpath20/">http://www.w3.org/TR/xpath20/</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XSDL_Part1">[XSDLV1] </a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, XML Schema Part 1: Structures&nbsp; <a
href="http://www.w3.org/TR/xmlschema-1/">http://www.w3.org/TR/xmlschema-1/</a>
XML Schema Part 2: Datatypes <a href="http://www.w3.org/TR/xmlschema-2/">http://www.w3.org/TR/xmlschema-2/</a><span
class=MsoHyperlink> </span>, 28 October 2004.</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography><a name="a_XSLT">[XSLT]</a></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoBibliography>W3C, &#8220;XSL Transformations (XSLT)&#8221; <a
href="https://www.w3.org/TR/xslt/">https://www.w3.org/TR/xslt/</a></p>
</td>
</tr>
</table>
<h1><a name="_Ref38561292"></a><a name="_Toc62570240"></a><a
name="_Toc396135694"></a><a name="_Toc397515368"></a><a name="_Toc396135695"></a><a
name="_Toc397515369"></a><a name="_Toc396135696"></a><a name="_Toc397515370"></a><a
name="_Toc396135697"></a><a name="_Toc397515371"></a><a name="_Toc396135698"></a><a
name="_Toc397515372"></a><a name="_Toc396135699"></a><a name="_Toc397515373"></a><a
name="_Toc396135700"></a><a name="_Toc397515374"></a><a name="_Toc396135701"></a><a
name="_Toc397515375"></a><a name="_Toc396135702"></a><a name="_Toc397515376"></a><a
name="_Toc396135703"></a><a name="_Toc397515377"></a><a name="_Toc396135704"></a><a
name="_Toc397515378"></a><a name="_Toc396135705"></a><a name="_Toc397515379"></a><a
name="_Toc396135706"></a><a name="_Toc397515380"></a><a name="_Toc396135707"></a><a
name="_Toc397515381"></a><a name="_Toc396135708"></a><a name="_Toc397515382"></a><a
name="_Toc396135709"></a><a name="_Toc397515383"></a><a name="_Toc396135710"></a><a
name="_Toc397515384"></a><a name="_Toc396135711"></a><a name="_Toc397515385"></a><a
name="_Toc396135712"></a><a name="_Toc397515386"></a><a name="_Toc396135713"></a><a
name="_Toc397515387"></a><a name="_Toc396135714"></a><a name="_Toc397515388"></a><a
name="_Toc385242977"></a><a name="_Toc391466383"></a><a name="_Toc393357125"></a><a
name="_Toc393999693"></a><a name="_Toc393999948"></a><a name="_Toc394584739"></a><a
name="_Toc396135715"></a><a name="_Toc397515389"></a><a name="_Toc385242978"></a><a
name="_Toc391466384"></a><a name="_Toc393357126"></a><a name="_Toc393999694"></a><a
name="_Toc393999949"></a><a name="_Toc394584740"></a><a name="_Toc396135716"></a><a
name="_Toc397515390"></a><a name="_Toc385242979"></a><a name="_Toc391466385"></a><a
name="_Toc393357127"></a><a name="_Toc393999695"></a><a name="_Toc393999950"></a><a
name="_Toc394584741"></a><a name="_Toc396135717"></a><a name="_Toc397515391"></a><a
name="_Toc385242980"></a><a name="_Toc391466386"></a><a name="_Toc393357128"></a><a
name="_Toc393999696"></a><a name="_Toc393999951"></a><a name="_Toc394584742"></a><a
name="_Toc396135718"></a><a name="_Toc397515392"></a><a name="_Toc385242981"></a><a
name="_Toc391466387"></a><a name="_Toc393357129"></a><a name="_Toc393999697"></a><a
name="_Toc393999952"></a><a name="_Toc394584743"></a><a name="_Toc396135719"></a><a
name="_Toc397515393"></a>30<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Appendix A: <a name="_Toc243112890"></a><a name="_Toc349042889"></a><a
name="_Toc362445423"></a><a name="_Toc363909391"></a><a name="_Toc364463819"></a><a
name="_Toc366078423"></a><a name="_Toc366079038"></a><a name="_Toc366080023"></a><a
name="_Toc366080635"></a><a name="_Toc366081244"></a><a name="_Toc366505584"></a><a
name="_Toc366508953"></a><a name="_Toc366513454"></a><a name="_Toc366574643"></a><a
name="_Toc366578436"></a><a name="_Toc366579030"></a><a name="_Toc366579622"></a><a
name="_Toc366580213"></a><a name="_Toc366580805"></a><a name="_Toc366581396"></a><a
name="_Toc366581988"></a><a name="_Toc254776414"></a><a name="_Toc254776415"></a>Escape
Scheme Use Cases</h1>
<p class=nobreak>This appendix gives additional examples of escape schemes and
how they affect interpretation of (parsing) or creation of (unparsing) the data
stream. </p>
<p class=MsoNormal>The tables can be interpreted as the physical data column on
the right is parsed to obtain the logical data on the left, or the logical data
on the left is unparsed to create the physical representation on the right.</p>
<h2><a name="_Toc243112891"></a><a name="_Toc349042891"></a><a
name="_Toc62570241"></a><a name="_Toc322911788"></a><a name="_Toc322912327"></a><a
name="_Toc329093187"></a><a name="_Toc332701700"></a><a name="_Toc332702004"></a><a
name="_Toc332711802"></a><a name="_Toc332712104"></a><a name="_Toc332712405"></a><a
name="_Toc332724321"></a><a name="_Toc332724621"></a><a name="_Toc341102917"></a><a
name="_Toc347241653"></a><a name="_Toc347744845"></a><a name="_Toc348984628"></a><a
name="_Toc348984933"></a><a name="_Toc349038097"></a><a name="_Toc349038399"></a><a
name="_Toc349042890"></a><a name="_Toc349642291"></a><a name="_Toc351913012"></a><a
name="_Toc351915033"></a><a name="_Toc351915499"></a><a name="_Toc361231597"></a><a
name="_Toc361232123"></a><a name="_Toc362445425"></a><a name="_Toc363909393"></a><a
name="_Toc364463821"></a><a name="_Toc366078425"></a><a name="_Toc366079040"></a><a
name="_Toc366080025"></a><a name="_Toc366080637"></a><a name="_Toc366081246"></a><a
name="_Toc366505586"></a><a name="_Toc366508955"></a><a name="_Toc366513456"></a><a
name="_Toc366574645"></a><a name="_Toc366578438"></a><a name="_Toc366579032"></a><a
name="_Toc366579624"></a><a name="_Toc366580215"></a><a name="_Toc366580807"></a><a
name="_Toc366581398"></a><a name="_Toc366581990"></a>30.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Escape Character Same
as dfdl:escapeEscapeCharacter</h2>
<p class=MsoNormal>dfdl:escapeKind 'escapeCharacter', dfdl:escapeCharacter '/',
dfdl:escapeEscapeCharacter '/', dfdl:separator ';', dfdl:extraEscapedCharacters
'?'</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b>Logical Data</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>Physical Data / Representation</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;//.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;/.&#8230;/&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;//.&#8230;//&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;//.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;////.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>/&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>//&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;../</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..//</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>/&#8230;&#8230;&#8230;&#8230;&#8230;/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>//&#8230;&#8230;&#8230;&#8230;&#8230;//.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;../</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..//</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.///;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>;&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>/;&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>&#8230;&#8230;&#8230;&#8230;&#8230;./?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc243112892"></a><a name="_Toc349042893"></a><a
name="_Toc322911790"></a><a name="_Toc322912329"></a><a name="_Toc329093189"></a><a
name="_Toc332701702"></a><a name="_Toc332702006"></a><a name="_Toc332711804"></a><a
name="_Toc332712106"></a><a name="_Toc332712407"></a><a name="_Toc332724323"></a><a
name="_Toc332724623"></a><a name="_Toc341102919"></a><a name="_Toc347241655"></a><a
name="_Toc347744847"></a><a name="_Toc348984630"></a><a name="_Toc348984935"></a><a
name="_Toc349038099"></a><a name="_Toc349038401"></a><a name="_Toc349042892"></a><a
name="_Toc349642293"></a><a name="_Toc351913014"></a><a name="_Toc351915035"></a><a
name="_Toc351915501"></a><a name="_Toc361231599"></a><a name="_Toc361232125"></a><a
name="_Toc362445427"></a><a name="_Toc363909395"></a><a name="_Toc364463823"></a><a
name="_Toc366078427"></a><a name="_Toc366079042"></a><a name="_Toc366080027"></a><a
name="_Toc366080639"></a><a name="_Toc366081248"></a><a name="_Toc366505588"></a><a
name="_Toc366508957"></a><a name="_Toc366513458"></a><a name="_Toc366574647"></a><a
name="_Toc366578440"></a><a name="_Toc366579034"></a><a name="_Toc366579626"></a><a
name="_Toc366580217"></a><a name="_Toc366580809"></a><a name="_Toc366581400"></a><a
name="_Toc366581992"></a>Table 70 Examples of Escape Character Same as
dfdl:escapeEscapeCharacter</p>
<h2><a name="_Toc62570242">30.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Escape Character Different from dfdl:escapeEscapeCharacter</a></h2>
<h3><a name="_Toc62570243"><span style='color:black;font-weight:normal'>30.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
class=Heading3Char><span style='font-weight:normal'>Example</span></span></a> 1
- Separator ';'</h3>
<p class=MsoNormal>dfdl:escapeKind 'escapeCharacter', dfdl:escapeCharacter '/',
dfdl:escapeEscapeCharacter '%%&#8217;<a name="_Ref18858210"></a><a
href="#_ftn50" name="_ftnref50" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[50]</span></span></span></a>,
dfdl:separator &#8216;;&#8217;', dfdl:extraEscapedCharacters '?'</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b>Logical Data</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>Physical Data / Representation</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;%/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;/.&#8230;/&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;%/.&#8230;%/&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;//.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;%/%/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>/&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%/&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;../</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%/</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>/&#8230;&#8230;&#8230;&#8230;&#8230;/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%/&#8230;&#8230;&#8230;&#8230;&#8230;%/.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;../</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%/&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%/</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%//;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>;&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>/;&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%/&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%%/&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%/%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 71 Examples (1) of Escape Character Different from
dfdl:escapeEscapeCharacter</p>
<h3><a name="_Toc62570244"><span style='color:black;font-weight:normal'>30.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Example 2
- Separator 'sep'</a></h3>
<p class=MsoNormal>Dfdl:escapeKind 'escapeCharacter', dfdl:escapeCharacter '/',
dfdl:escapeEscapeCharacter '%%', dfdl:separator 'sep'</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b>Logical Data</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>Physical Data / Representation</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.sep&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./sep&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;./sep&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%//sep&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>sep&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>/sep&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc243112893"></a><a name="_Toc349042895"></a><a
name="_Toc322911792"></a><a name="_Toc322912331"></a><a name="_Toc329093191"></a><a
name="_Toc332701704"></a><a name="_Toc332702008"></a><a name="_Toc332711806"></a><a
name="_Toc332712108"></a><a name="_Toc332712409"></a><a name="_Toc332724325"></a><a
name="_Toc332724625"></a><a name="_Toc341102921"></a><a name="_Toc347241657"></a><a
name="_Toc347744849"></a><a name="_Toc348984632"></a><a name="_Toc348984937"></a><a
name="_Toc349038101"></a><a name="_Toc349038403"></a><a name="_Toc349042894"></a><a
name="_Toc349642295"></a><a name="_Toc351913016"></a><a name="_Toc351915037"></a><a
name="_Toc351915503"></a><a name="_Toc361231601"></a><a name="_Toc361232127"></a><a
name="_Toc362445429"></a><a name="_Toc363909397"></a><a name="_Toc364463825"></a><a
name="_Toc366078429"></a><a name="_Toc366079044"></a><a name="_Toc366080029"></a><a
name="_Toc366080641"></a><a name="_Toc366081250"></a><a name="_Toc366505590"></a><a
name="_Toc366508959"></a><a name="_Toc366513460"></a><a name="_Toc366574649"></a><a
name="_Toc366578442"></a><a name="_Toc366579036"></a><a name="_Toc366579628"></a><a
name="_Toc366580219"></a><a name="_Toc366580811"></a><a name="_Toc366581402"></a><a
name="_Toc366581994"></a>Table 72 Examples (2) of Escape Character Different
from dfdl:escapeEscapeCharacter</p>
<h2><a name="_Toc62570245">30.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Escape Block with Different Start and End Characters</a></h2>
<p class=MsoNormal>dfdl:escapeKind 'escapeBlock', dfdl:escapeBlockStart '[',
dfdl:escapeBlockEnd ']', dfdl:escapeEscapeCharacter '%%', dfdl:separator
';',&nbsp; dfdl:extraEscapedCharacters '?'</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b>Logical Data</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>Physical Data / Representation</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>]&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>]&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;[.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;[.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;].&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;].&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.[[&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.[[&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.]]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.]]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.%]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.[&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.[&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;[.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;[.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.%]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%[&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%[&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%]&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%[&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;%&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;%&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;%]&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;%%]&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.%;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>[[&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%]]</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>[&#8230;&#8230;&#8230;&#8230;&#8230;.?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..]</b></p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 73 Examples of Escape Block with Different Start and
End Characters</p>
<h2><a name="_Toc62570246"></a><a name="_Toc243112894"></a><a
name="_Toc349042896">30.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Escape Block with Same Start and End </a>Characters</h2>
<p class=MsoNormal>dfdl:escapeKind 'escapeBlock', dfdl:escapeBlockStart '
&amp;apos;', dfdl:escapeBlockEnd '&amp;apos;', dfdl:escapeEscapeCharacter '%',
dfdl:separator ';',&nbsp; dfdl:extraEscapedCharacters '?'</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b>Logical Data</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='color:black'>Physical Data / Representation</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;'.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;'.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>''&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..''</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.''&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.''&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.'&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;.%'&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.'&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.'&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;'.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;%'.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>''&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..''</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>''&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..''</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%%&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%'&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%'&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>%'&#8230;&#8230;&#8230;&#8230;&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;%&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;%&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;%'&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;%%'&#8230;.&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.%;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.%;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>'%'&#8230;&#8230;&#8230;&#8230;&#8230;.;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..%''</b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>&#8230;&#8230;&#8230;&#8230;&#8230;.?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</b></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'><b>'&#8230;&#8230;&#8230;&#8230;&#8230;.?&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..'</b></p>
</td>
</tr>
</table>
<p class=MsoCaption><a name="_Toc243112895"></a><a name="_Toc349042897"></a><a
name="_Toc322911795"></a><a name="_Toc322912334"></a><a name="_Toc329093194"></a><a
name="_Toc332701707"></a><a name="_Toc332702011"></a><a name="_Toc332711809"></a><a
name="_Toc332712111"></a><a name="_Toc332712412"></a><a name="_Toc332724328"></a><a
name="_Toc332724628"></a><a name="_Toc341102924"></a><a name="_Toc322911796"></a><a
name="_Toc322912335"></a><a name="_Toc329093195"></a><a name="_Toc332701708"></a><a
name="_Toc332702012"></a><a name="_Toc332711810"></a><a name="_Toc332712112"></a><a
name="_Toc332712413"></a><a name="_Toc332724329"></a><a name="_Toc332724629"></a><a
name="_Toc341102925"></a><a name="_Toc322911797"></a><a name="_Toc322912336"></a><a
name="_Toc329093196"></a><a name="_Toc332701709"></a><a name="_Toc332702013"></a><a
name="_Toc332711811"></a><a name="_Toc332712113"></a><a name="_Toc332712414"></a><a
name="_Toc332724330"></a><a name="_Toc332724630"></a><a name="_Toc341102926"></a>Table
74 Examples of Escape Block with Same Start and End Characters</p>
<span style='font-size:10.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span>
<p class=MsoCaption>&nbsp;</p>
<h1><a name="_Toc349042898"></a><a name="_Ref52284569"></a><a
name="_Toc62570247">31<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Appendix
B: Rationale for Single-Assignment Variables</a></h1>
<p class=MsoNormal>DFDL is intended to be a description language. That is, the
capture of a data format should be as descriptive/declarative as possible. </p>
<p class=MsoNormal>An additional quite critical goal for DFDL is that it allows
high-performance implementations, including use of parallel processing wherever
possible. </p>
<p class=MsoNormal>DFDL contains an expression language with variables for use
in creating parameterized DFDL schemas. </p>
<p class=MsoNormal>However, the way variables can be used in DFDL is quite
constrained. Specifically, the variables are single-assignment. This is a form
of immutable object (See <a
href="https://en.wikipedia.org/wiki/Immutable_object">https://en.wikipedia.org/wiki/Immutable_object</a>).
</p>
<p class=MsoNormal>Single-assignment variables solve a number of problems. </p>
<p class=MsoNormal>First, they keep the schema more declarative, because the
name of a variable represents a value, not a location. Before assignment, the
value is not yet known, after the assignment the value is known, but the
consumer of the value need only know the name and need not be aware of the mechanism
by which it gets its value or when. </p>
<p class=MsoNormal>Second, single-assignment variables avoid over-constraining
the implementation, thereby preserving the potential for high-performance and
parallel processing.</p>
<p class=MsoNormal>Some digression is useful here: Any variable creates a data
dependency in order of processing. The part of the schema reading/using the
variable's value depends upon the data value coming from the part of the schema
providing that value. This kind of data dependency is inherent and inescapable.
Values must be created before they can be used. </p>
<p class=MsoNormal>However, if one considers a variable to be a location that
can be assigned repeatedly, then things are more complex because there is not
only data dependency on the value (one part of the schema writes the location,
another reads that location), but there is dependency in the other direction: one
must read the location before it can be used again for the <em><span
style='font-family:"Arial",sans-serif'>next</span></em> value. This is usually
called anti-dependency. Anti-dependency is the enemy of high-performance and
parallel execution. It forces specific and artificial sequential ordering on
things that is due to the way variable names are allocated to storage locations.
</p>
<p class=MsoNormal>If variables are single-assignment only, then only
data-dependencies exist. Anti-dependencies don't exist, and implementations are
free to work in any way consistent with the (inescapable) data dependencies.<img
border=0 width=1 height=1 id="Picture 3"
src="gwdrp-dfdl-v1.0.8_files/image004.gif"></p>
<h1><a name="_Ref39067485"></a><a name="_Ref39067581"></a><a name="_Toc62570248">32<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Appendix C: Processing
of DFDL String literals</a></h1>
<p class=nobreak><span lang=EN-GB>A DFDL String Literal describes characters or
bytes that can appear in the data. The syntax of a DFDL String Literal is
described in Section 6.3. This appendix describes how a DFDL String Literal MUST
be processed by a DFDL processor.</span></p>
<h2><a name="_Toc62570249">32.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Interpreting a DFDL String Literal</a></h2>
<p class=nobreak><span lang=EN-GB>A DFDL String literal is a sequence of one or
more <i>string literal parts</i>. Each string literal part describes zero or
more characters or exactly one byte. To process a DFDL string literal correctly
it is necessary to parse it into its string literal parts using the grammar in </span>Table
3 DFDL Character Entity, Character Class Entity, and Byte Value Entity Syntax<span
lang=EN-GB> of Section </span><span
class=MsoHyperlink>6.3.1</span> DFDL
String Literals<span lang=EN-GB>.</span></p>
<h2><a name="_Toc62570250">32.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Recognizing a DFDL String Literal</a></h2>
<p class=MsoNormal><span lang=EN-GB>When parsing, a DFDL processor MUST be able
to recognize a DFDL String Literal in the data. The recognition algorithm is
used whenever the DFDL processor needs to process a property of type 'DFDL
String Literal'. </span></p>
<p class=MsoNormal><span lang=EN-GB>The recognition algorithm is as follows:</span></p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>for each DfdlStringLiteralPart</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; if this DfdlStringLiteralPart
is found in the data at the current offset</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
advance the offset by the width of the characters matched</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; else</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return false</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>&nbsp;&nbsp;&nbsp; end if</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>return true&nbsp; </span></p>
</div>
<h2><a name="_Toc62570251">32.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Recognizing DFDL String Literal Part</a></h2>
<p class=MsoNormal><span lang=EN-GB>Each type of string literal part and/or the
DfdlESEntity is recognised as described in the table below:</span></p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>String Literal Part</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Recognition algorithm</span></b></p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>LiteralString</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The literal string is specifying a sequence of Unicode
characters. The string part is recognized if the same Unicode characters are
found in the data at the current offset. </p>
<p class=MsoNormal>Implementation note: It is not necessary for either the
LiteralString or the data to be encoded using a Unicode encoding. The
matching algorithm MUST operate as if the LiteralString and the data were
both converted to Unicode before comparison. </p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DfdlCharEntity</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying a single Unicode character.</p>
<p class=MsoNormal>The recognition algorithm is the same as for a
single-character LiteralString.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>ByteValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying a single raw byte value.</p>
<p class=MsoNormal>The string part is recognized if the literal byte in the
data at the current byte offset matches the raw byte value.</p>
<p class=MsoNormal>This entity is specifying a raw byte value and not a
character. Itis not always safe to interpret the byte value as a character in
the component's encoding.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DfdlNLEntity</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying a newline character or character
sequence.</p>
<p class=MsoNormal>The string part is recognized if a newline character
sequence is found in the data at the current byte offset:</p>
<p class=MsoNormal>The newline character sequences are defined in Table
5 DFDL Character Class Entities, in Section <span
class=MsoHyperlink>6.3.1.2</span> DFDL
Character Entities, Character Class Entities, and Byte Values in String
Literals.</p>
<p class=MsoNormal>The recognition algorithm MUST be greedy. If the CR
character is matched then the DFDL processor MUST check to see whether it is
followed by an LF character and if so, consume that character also.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DfdlWSPEntity</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying a single whitespace character.</p>
<p class=MsoNormal>The string part if recognized if one of the whitespace
characters is found in the data at the current byte offset. The whitespace
characters are defined in Table
5 DFDL Character Class Entities, in Section <span
class=MsoHyperlink>6.3.1.2</span> DFDL
Character Entities, Character Class Entities, and Byte Values in String
Literals.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DfdlWSPStarEntity</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying zero or more whitespace
characters.</p>
<p class=MsoNormal>The string part is recognized when the entire sequence of
whitespace characters starting at the current offset has been consumed. </p>
<p class=MsoNormal>The recognition of this entity cannot fail because it can
match zero whitespace characters.</p>
<p class=MsoNormal>The recognition algorithm MUST be greedy. All possible
whitespace characters must be consumed.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DfdlWSPPlusEntity</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying one or more whitespace
characters.</p>
<p class=MsoNormal>The string part is recognized when the entire non-empty
sequence of whitespace characters starting at the current offset has been
consumed. </p>
<p class=MsoNormal>The recognition algorithm MUST be greedy. All possible
whitespace characters MUST be consumed.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>DfdlESEntity</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>The entity is specifying an empty string.</p>
<p class=MsoNormal>The string part is recognized if the data available for
matching is zero-length. </p>
<p class=MsoNormal style='page-break-after:avoid'>This entity is only allowed
in contexts where the available data is constrained by other DFDL properties.</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 75 Recognizing DFDL String Literal Part</p>
<h1><a name="_Toc62570252"></a><a name="_Ref393989958">33<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Appendix D: DFDL
Standard Encodings</a><a href="#_ftn51" name="_ftnref51" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><b><span
style='font-size:14.0pt;font-family:"Arial",sans-serif'>[51]</span></b></span></span></a></h1>
<p class=MsoNormal>This appendix provides a specification template for the
definition of DFDL standard encodings and defines two such encodings for use in
DFDL schemas.</p>
<p class=MsoNormal>These encodings are optional - DFDL implementations are not
required to support them to be in conformance with the DFDL specification. </p>
<p class=MsoNormal>However, if implemented, then a conformant DFDL
implementation MUST follow the specification in this appendix.</p>
<h2><a name="_Toc393814645"></a><a name="_Toc62570253"></a><a
name="_Toc394584755"></a><a name="_Toc396135731"></a><a name="_Toc397515405"></a><a
name="__RefHeading__661_850263481"></a>33.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Purpose</h2>
<p class=MsoNormal style='page-break-after:avoid'>Additional encoding names are
needed for several reasons:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal style='page-break-after:avoid'>Incomplete Information: the
definitions of IANA [<a href="#a_IANA">IANA</a>] and CCSID [<a
href="#a_CCSID">CCSID</a>] character set encodings are not sufficiently
specific about the encoding, omitting important characteristics such as
alignment or bit order. An example of this is the encoding X-DFDL-US-ASCII-7-BIT-PACKED,
defined herein. </li>
<li class=MsoNormal>Unnamed or Legacy Encodings: There are many legacy
encodings that have no IANA or CCSID identifiers. For example, ITA2 [<a
href="#a_ITA2">ITA2</a>] is a 5-bit-per character encoding that is very
old, yet still has modern uses.</li>
</ol>
<h2><a name="_Toc393814646"></a><a name="_Toc62570254"></a><a
name="__RefHeading__663_850263481"></a>33.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Conventions</h2>
<p class=MsoNormal style='page-break-after:avoid'>All indexing of positions is
1-based meaning the first position is position 1.</p>
<p class=MsoNormal>Bytes are unsigned integers with values from 0 to 255
(decimal).</p>
<p class=MsoNormal>Hexadecimal numbers have the prefix &quot;0x&quot;.</p>
<p class=MsoNormal>Decimal numbers have no prefix when the context is clear and
are explicitly labeled with (decimal) to resolve ambiguity.</p>
<h2><a name="_Toc393814649"></a><a name="_Toc62570255"></a><a
name="__RefHeading__665_850263481"></a><a name="_Toc393812203"></a><a
name="_Toc393814025"></a><a name="_Toc393814648"></a><a
name="__RefHeading__667_850263481"></a>33.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Specification Template</h2>
<p class=MsoNormal style='page-break-after:avoid'>A DFDL standard encoding
specification SHOULD include:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal style='page-break-after:avoid'><i>Name</i>: All DFDL
standard encoding names begin with the prefix &quot;X-DFDL-&quot;. Note
that encoding names are not case-sensitive.</li>
<li class=MsoNormal><i>Translation table: </i>An encoding/decoding algorithm
that provides a complete bi-directional mapping between encoded characters
and UTF-16 character codes. Many encodings share character code
definitions and describe only different ways of representing those values;
hence, this section may reference other IANA, CCSID or DFDL standard
encoding definitions.</li>
<li class=MsoNormal><i>Width</i>: Whether the character set is fixed or
variable width. If fixed width, the size of a code unit in bits or bytes.</li>
<li class=MsoNormal><i>Alignment:</i>&nbsp; Alignment and alignment units for
a code unit.</li>
<li class=MsoNormal><i>Byte order:</i>&nbsp; When a code unit consists of more
than one byte of data, the byte order of the code units. Note that the
dfdl:byteOrder property does not apply to text. </li>
</ol>
<h2><a name="_Toc393814650"></a><a name="_Toc62570256"></a><a
name="_Toc396135735"></a><a name="_Toc397515409"></a><a
name="__RefHeading__669_850263481"></a>33.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Encoding <a name="__RefHeading__671_850263481"></a>X-DFDL-US-ASCII-7-BIT-PACKED
</h2>
<p class=MsoNormal>This encoding is used by MIL-STD-2045 [<a
href="#a_MILSTD2045">MILSTD2045</a>] and a variety of related binary data
standards. </p>
<h3><a name="_Toc393814651"></a><a name="_Toc62570257"><span style='color:black;
font-weight:normal'>33.4.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Name</a></h3>
<p class=nobreak>X-DFDL-US-ASCII-7-BIT-PACKED</p>
<h3><a name="_Toc62570258"><span style='color:black;font-weight:normal'>33.4.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Translation
table</a> </h3>
<p class=MsoNormal>The characters are exactly the 128 US-ASCII characters with
the same code unit values. </p>
<h3><a name="_Toc393814652"></a><a name="_Toc62570259"><span style='color:black;
font-weight:normal'>33.4.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Width</a></h3>
<p class=MsoNormal>Fixed width. Each code unit is 7-bits wide. </p>
<p class=MsoNormal>This encoding differs from US-ASCII in that it specifically
uses only 7-bits per character within each byte<a href="#_ftn52"
name="_ftnref52" title=""><sup><sup><span style='font-size:10.0pt;font-family:
"Arial",sans-serif'>[52]</span></sup></sup></a>. A subsequent character or the
next data field may begin in the very next bit after a 7-bit character code of
this encoding. </p>
<p class=MsoNormal>Hence, 8 characters fit exactly into 7 bytes of data as no
bits are wasted. </p>
<h3><a name="_Toc393814653"></a><a name="_Toc62570260"><span style='color:black;
font-weight:normal'>33.4.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Alignment</a> </h3>
<p class=MsoNormal>1 bit. That is, a code unit may begin on any bit boundary. </p>
<h3><a name="_Toc393814655"></a><a name="_Toc62570261"><span style='color:black;
font-weight:normal'>33.4.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Byte Order</a></h3>
<p class=MsoNormal>Not applicable - code units are always smaller than 1 byte.</p>
<h3><a name="_Toc393814656"></a><a name="_Toc62570262"></a><a
name="__RefHeading__673_850263481"></a><span style='color:black;font-weight:
normal'>33.4.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Example
1</h3>
<p class=MsoNormal>The table below shows how the 8-character string 'UNIT1234'
is encoded into 7 bytes, when the bit order is least-significant-bit first. </p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Log<span style='color:black'>ical character</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>7-bit code unit</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Bit placement</span></b></p>
<p class=MsoNormal><b><span style='color:black'>2<sup>7</sup>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2<sup>0</sup></span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Byte value</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Byte number</span></b></p>
</td>
</tr>
<tr style='height:19.75pt'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal>U</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>1010101</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>X<b>1010101</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>N</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>1001110</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>0</span></b><span
style='font-family:"Courier New"'>XXXXXXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XX<b>100111</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x55</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>I</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>1001001</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>01</span></b><span
style='font-family:"Courier New"'>XXXXXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXX<b>10010</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x67</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>T</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>1010100</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>100</span></b><span
style='font-family:"Courier New"'>XXXXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXXX<b>1010</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x92</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>0110001</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>0001</span></b><span
style='font-family:"Courier New"'>XXXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXXXX<b>011</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x1A</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>4</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>0110010</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>10010</span></b><span
style='font-family:"Courier New"'>XXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXXXXX<b>01</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x93</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>5</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>0110011</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>110011</span></b><span
style='font-family:"Courier New"'>XX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXXXXXX<b>0</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0xCD</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>6</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>4</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>0110100</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>0110100</span></b><span
style='font-family:"Courier New"'>X</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x68</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>7</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 76: Example of DFDL Standard Encoding
X-DFDL-US-ASCII-7-BIT-PACKED</p>
<p class=MsoNormal>The bits corresponding to the characters are shown in
distinct colors below. The characters that each bit contributes to are written
below each of the bits and in the corresponding color.</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:red'>&nbsp;&nbsp;&nbsp;&nbsp; 0</span><span lang=EN-GB
style='color:black'>1010101 </span><span lang=EN-GB style='color:#92D050'>01</span><span
lang=EN-GB style='color:red'>100111</span><span lang=EN-GB style='color:black'>
</span><span lang=EN-GB style='color:#7030A0'>100</span><span lang=EN-GB
style='color:#92D050'>10010</span><span lang=EN-GB style='color:black'> </span><span
lang=EN-GB style='color:#FFC000'>0001</span><span lang=EN-GB style='color:#7030A0'>1010</span><span
lang=EN-GB style='color:black'> </span><span lang=EN-GB style='color:#00B0F0'>10010</span><span
lang=EN-GB style='color:#FFC000'>011</span><span lang=EN-GB style='color:black'>
</span><span lang=EN-GB style='color:#C00000'>110011</span><span lang=EN-GB
style='color:#00B0F0'>01</span><span lang=EN-GB style='color:black'> 0110100</span><span
lang=EN-GB style='color:#C00000'>0</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>Byte -----1-- -----2-- -----3-- -----4--
-----5-- -----6-- -----7--</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>Char </span><span lang=EN-GB style='color:red'>N</span><span
lang=EN-GB style='color:black'>UUUUUUU </span><span lang=EN-GB
style='color:#92D050'>II</span><span lang=EN-GB style='color:red'>NNNNNN </span><span
lang=EN-GB style='color:#7030A0'>TTT</span><span lang=EN-GB style='color:#92D050'>IIIII</span><span
lang=EN-GB style='color:black'> </span><span lang=EN-GB style='color:#FFC000'>1111</span><span
lang=EN-GB style='color:#7030A0'>TTTT</span><span lang=EN-GB style='color:black'>
</span><span lang=EN-GB style='color:#00B0F0'>22222</span><span lang=EN-GB
style='color:#FFC000'>111</span><span lang=EN-GB style='color:black'> </span><span
lang=EN-GB style='color:#C00000'>333333</span><span lang=EN-GB
style='color:#00B0F0'>22 </span><span lang=EN-GB style='color:black'>4444444</span><span
lang=EN-GB style='color:#C00000'>3</span><span lang=EN-GB style='color:black'> </span></p>
</div>
<p class=MsoNormal>This kind of data is often better visualized by numbering
the bytes in the opposite direction that is <i>right to left</i>, which leads
to this presentation:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:red'>&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang=EN-GB
style='color:black'>0110100</span><span lang=EN-GB style='color:red'>0 110011</span><span
lang=EN-GB style='color:#00B0F0'>01 10010</span><span lang=EN-GB
style='color:#FFC000'>011 0001</span><span lang=EN-GB style='color:#7030A0'>1010
100</span><span lang=EN-GB style='color:#92D050'>10010 01</span><span
lang=EN-GB style='color:red'>100111 0</span><span lang=EN-GB style='color:black'>1010101</span><span
lang=EN-GB style='color:red'>&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>Byte -----7-- -----6-- -----5-- -----4--
-----3-- -----2-- -----1--</span></p>
<p class=Codeblock0 style='background:#F3F3F3;border:none;padding:0in'><span
lang=EN-GB style='color:black'>Char 4444444</span><span lang=EN-GB
style='color:red'>3 333333</span><span lang=EN-GB style='color:#00B0F0'>22
22222</span><span lang=EN-GB style='color:#FFC000'>111 1111</span><span
lang=EN-GB style='color:#7030A0'>TTTT TTT</span><span lang=EN-GB
style='color:#92D050'>IIIII II</span><span lang=EN-GB style='color:red'>NNNNNN
N</span><span lang=EN-GB style='color:black'>UUUUUUU </span></p>
</div>
<p class=MsoNormal>In the above, the bits corresponding to each character code
unit are more easily recognized, but the characters appear right-to-left (i.e.,
backward for English). </p>
<h3><a name="_Toc393814657"></a><a name="_Toc62570263"></a><a
name="__RefHeading__675_850263481"></a><span style='color:black;font-weight:
normal'>33.4.7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Example
2</h3>
<p class=MsoNormal>The bits below represent a 3-bit unsigned integer containing
value 7, followed by the ASCII string 'ABC' followed by the ASCII DEL character
(character code 0x7F). This illustrates a string not beginning on a byte
boundary. Again, the bit ordering is least-significant-bit first. </p>
<p class=MsoNormal>The bits are written in increasing position and place value
from <i>right-to-left</i>:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;1111111 1000011 1000010 1000001 111</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;DEL&nbsp;&nbsp;&nbsp;&nbsp;
C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7</span></p>
</div>
<p class=MsoNormal>In the above example, if one numbers the bits from the
right, starting with position 1, the character code for 'A' occupies bits 4 to
10. Ifone divides the data above into bytes with vertical bars one must start
on the right to get:</p>
<div style='border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
background:#F3F3F3'>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;char:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
DEL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;bits:&nbsp;&nbsp;&nbsp;&nbsp; 01111111 | 1000011 1 |000010
10 | 00001 111</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;byte:&nbsp;&nbsp;&nbsp;&nbsp;
7F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
87&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0F</span></p>
<p class=MsoNormal style='margin:0in;background:#F3F3F3;border:none;padding:
0in'><span lang=EN-GB style='font-size:9.0pt;font-family:"Courier New";
color:black'>&nbsp;byte pos:
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1<a name="_Toc393814658"></a><a name="__RefHeading__1786_906098299"></a><a
name="_Toc384991129"></a><a name="_Toc391372314"></a></span></p>
</div>
<b><span style='font-size:12.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></b>
<h2><a name="_Toc62570264">33.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Encoding X-DFDL-US-ASCII-6-BIT-PACKED</a></h2>
<p class=MsoNormal>This encoding is used by MIL-STD-6016D (See [<a
href="#a_MILSTD6016">MILSTD6016</a>]) and a variety of related binary data
standards.</p>
<h3><a name="_Toc393814659"></a><a name="_Toc62570265"><span style='color:black;
font-weight:normal'>33.5.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Name</a></h3>
<p class=nobreak>X-DFDL-US-ASCII-6-BIT-PACKED</p>
<h3><a name="_Toc62570266"><span style='color:black;font-weight:normal'>33.5.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>Translation
Table</a> </h3>
<p class=MsoNormal>The characters are a subset of the 128 US-ASCII characters.
The assignment of numeric code units to the characters is different for some of
the characters and the same for others.</p>
<p class=MsoNormal>The correspondence of ASCII characters to their code point
values is given by the table below.</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Character </b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Code Point Value (Decimal) </span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Notes</span></b></p>
</td>
</tr>
<tr style='height:23.35pt'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt;height:23.35pt'>
<p class=MsoNormal>@</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:23.35pt'>
<p class=MsoNormal>0</p>
</td>
<td rowspan=7 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;
height:23.35pt'>
<p class=MsoNormal>These characters' code points are the same as the US-ASCII
code point, minus 64 (decimal)</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>A to Z </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1 through 26</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>[ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>27</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>\ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>28</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>] </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>29</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>^ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>30</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>_ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>31</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&nbsp;SPACE&nbsp; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>32</p>
</td>
<td rowspan=23 valign=top style='border-top:none;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>These characters' code points are the same as in US-ASCII.</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>! </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>33</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&quot; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>34</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal># </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>35</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>$ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>36</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>% </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>37</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&amp; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>38</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>'&nbsp; APOSTROPHE</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>39</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>( </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>40</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>) </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>41</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>* </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>42</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>+ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>43</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>,&nbsp; COMMA</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>44</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>- </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>45</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>.&nbsp; PERIOD</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>46</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>/ </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>47</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0 to 9 </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>48 through 57</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>: </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>58</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>59</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&lt; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>60</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>= </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>61</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>&gt; </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>62</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>? </p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>63</p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 77: Translation Table for DFDL Standard Encoding
X-DFDL-US-ASCII-6-BIT-PACKED</p>
<h3><a name="_Toc393814660"></a><a name="_Toc62570267"><span style='color:black;
font-weight:normal'>33.5.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Width</a></h3>
<p class=MsoNormal>Fixed width. Each code unit is 6-bits wide. A subsequent
character or the next data field may begin in the very next bit after a 6-bit
character code of this encoding. </p>
<p class=MsoNormal>Hence, 4 characters fit into 3 bytes of data as no bits are
wasted. </p>
<h3><a name="_Toc393814661"></a><a name="_Toc62570268"><span style='color:black;
font-weight:normal'>33.5.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Alignment</a></h3>
<p class=MsoNormal>1 bit. That is, a code unit may begin on any bit boundary. </p>
<h3><a name="_Toc393814663"></a><a name="_Toc62570269"><span style='color:black;
font-weight:normal'>33.5.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>ByteOrder</a></h3>
<p class=MsoNormal>Not applicable. Code units are always less than 1 byte in
size. </p>
<h3><a name="_Toc393814664"></a><a name="_Toc62570270"><span style='color:black;
font-weight:normal'>33.5.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Example 1</a></h3>
<p class=MsoNormal>The table below shows how the 8 character string '1234' is
encoded into 3 bytes. The bit order is least-significant-bit first:</p>
<table class=Table border=1 cellspacing=0 cellpadding=0 width="100%"
style='width:100.0%;border-collapse:collapse;border:none'>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;background:#E5E5E5;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b>Logical character</b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>6-bit code unit</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Bit placement</span></b></p>
<p class=MsoNormal><b><span style='color:black'>2<sup>7</sup>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2<sup>0</sup></span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Byte value</span></b></p>
</td>
<td valign=top style='border:solid windowtext 1.0pt;border-left:none;
background:#E5E5E5;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='color:black'>Byte number</span></b></p>
</td>
</tr>
<tr style='height:19.75pt'>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal>1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>110001</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>XX<b>110001</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:19.75pt'>
<p class=MsoNormal>&nbsp;</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>110010</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>10</span></b><span
style='font-family:"Courier New"'>XXXXXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXXX<b>1100</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0xB1</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>1</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>3</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>110011</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>0011</span></b><span
style='font-family:"Courier New"'>XXXX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>XXXXXX<b>11</b></span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0x3C</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>2</p>
</td>
</tr>
<tr>
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>4</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><span style='font-family:"Courier New"'>110100</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal><b><span style='font-family:"Courier New"'>110100</span></b><span
style='font-family:"Courier New"'>XX</span></p>
<p class=MsoNormal><span style='font-family:"Courier New"'>&nbsp;</span></p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal>0xD3</p>
</td>
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoNormal style='page-break-after:avoid'>3 </p>
</td>
</tr>
</table>
<p class=MsoCaption>Table 78: Example of DFDL Standard Encoding
X-DFDL-US-ASCII-6-BIT-PACKED</p>
<b><span style='font-size:10.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></b>
<p class=MsoCaption>&nbsp;</p>
<h2><a name="_Toc62570271"></a><a name="_Toc393814665"></a><a
name="_Toc396135751"></a><a name="_Toc397515425"></a>33.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>References for
Appendix D<a href="#_ftn53" name="_ftnref53" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><b><span
style='font-size:12.0pt;font-family:"Arial",sans-serif'>[53]</span></b></span></span></a></h2>
<table class=MsoNormalTable border=0 cellpadding=0 style='margin-left:2.5pt'>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;
margin-left:0in;line-height:115%'><a name="a_ITA2"></a><a name="a_DFDL"></a>[ITA2]</p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Wikipedia: Baudot code,&nbsp; <a
href="http://en.wikipedia.org/wiki/Baudot_code%23ITA2">http://en.wikipedia.org/wiki/Baudot_code#ITA2</a></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;
margin-left:0in;line-height:115%'><a name="a_MILSTD2045"></a>[MILSTD2045]</p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>CONNECTIONLESS DATA TRANSFER APPLICATION LAYER STANDARD,
MIL-STD-2045-47001D w/CHANGE 1, 23 June 2008 <a
href="http://everyspec.com/MIL-STD/MIL-STD-2000-2999/MIL-STD-2045_47001D_CHANGE-1_25098/">http://everyspec.com/MIL-STD/MIL-STD-2000-2999/MIL-STD-2045_47001D_CHANGE-1_25098/</a>)</p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:10.0pt;
margin-left:0in;line-height:115%'>[<a name="a_MILSTD6016">MILSTD6016</a>]</p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal>Tactical Data Link Message Standard MIL-STD-6016</p>
<p class=MsoNormal>(This standard requires authorization to access.) <a
href="http://en.wikipedia.org/wiki/Link_16">http://en.wikipedia.org/wiki/Link_16</a>
</p>
</td>
</tr>
</table>
<h1><a name="_Ref38905284"></a><a name="_Toc62570272">34<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Appendix E: Glossary of Terms</a></h1>
<p class=MsoNormal><b><i>Adjacent</i></b> - Two <i>addressable units</i> of the
input/output stream are adjacent if they are at consecutive positions.</p>
<p class=MsoNormal><b><i>Addressable Unit</i></b> - This is the unit of storage
that makes up the input or output stream holding the representation of the
data. The units are bits, bytes, or characters.</p>
<p class=MsoNormal><b><i>Annotation point</i></b> - A location within a DFDL
schema where DFDL annotation elements are allowed to appear.</p>
<p class=MsoNormal><b><i>Applicable Properties</i></b> - All the DFDL
properties that apply to a given type of schema construct. For example, all the
DFDL properties that apply to an xs:simpleType.</p>
<p class=MsoNormal><b><i>Array</i></b> - A set of adjacent elements whose XSD
element declaration specifies the potential for it to have more than one
occurrence (XSD maxOccurs &gt; '1' or 'unbounded'). Of course, any given array
can have any number of element occurrences, including zero elements or exactly
1 element as long as the occurrence constraints are met. If XSD maxOccurs is
'unbounded' then there is no constraint to the maximum number of occurrences,
though implementations may have implementation-defined maximum capabilities. An
optional element (where XSD maxOccurs is '1', and XSD minOccurs is '0') is not
considered to be an array as described in this document. Note that a sequence
is not to be confused with an array. A sequence is a complex tuple type for an
element; the children of a sequence can be of different types. All elements of
an array have the same type and if the type is simple, then they have the same
information item members except for the value member. </p>
<p class=MsoNormal><b><i>Array Element</i></b> &#8211; An element declaration
or reference with XSD property maxOccurs &gt; '1' or 'unbounded'.</p>
<p class=MsoNormal><b><i>Augmented Infoset</i></b> - When unparsing one begins
with the DFDL schema and conceptually with the logical DFDL Infoset. As the
values of items are filled in by defaulting, and by use of the DFDL
outputValueCalc property (including on hidden items), these new item values
augment the Infoset. The resulting Infoset is called the augmented Infoset.</p>
<p class=MsoNormal><b><i>Binary</i></b> - There are two meanings for this word
depending on context. </p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Data is divided into two broad categories of representations,
which are <em><span style='font-family:"Arial",sans-serif'>text</span></em> and
<em><span style='font-family:"Arial",sans-serif'>binary</span></em>. Hence,
binary representation includes any kind of non-text representation. </p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Within binary (not text) data, one distinguishes base-10
representations which are called <em><span style='font-family:"Arial",sans-serif'>packed
decimal</span></em>, from base-2 representations which are called <em><span
style='font-family:"Arial",sans-serif'>binary</span></em>. The common <em><span
style='font-family:"Arial",sans-serif'>twos-complement</span></em>
representation used for signed integers is a base-2 binary representation. </p>
<p class=MsoNormal><b><i>Binary Representation </i></b>- Of type xs:hexBinary,
or of other type with property dfdl:representation 'binary'. Note that type
xs:string can never have binary representation.</p>
<p class=MsoNormal><b><i>Bit Order</i></b> - .Within a binary integer, if the
most-significant bit is assigned bit position 1, then the bit order is <i>most-significant-bit
first</i>. If the least-significant bit is assigned bit position 1, then the
bit order is <i>least-significant-bit first</i>. When the bit order is
most-significant-bit first, then the least-significant bit of byte N is
considered to be adjacent to the most-significant bit of byte N+1. When the bit
order is least-significant-bit first, then the most-significant bit of byte N
is considered to be adjacent to the least-significant bit of byte N+1.</p>
<p class=MsoNormal><b><i>Bit Position</i></b> - The data stream is assumed to
be a collection of consecutively numbered unsigned bytes. Each byte is a numeric
value from 0 to 255. The bits of a byte are referred to by their numerical
significance as the 2<i><sup>n</sup></i> bit, for <i>n</i> from 0 to 7. Hence,
the byte value 255 = 2<sup>7</sup> + 2<sup>6</sup> + 2<sup>5</sup> + 2<sup>4</sup>
+ 2<sup>3</sup> + 2<sup>2</sup> + 2<sup>1</sup> + 2<sup>0</sup>. The 2<sup>7</sup>-bit
is the most-significant bit, and the 2<sup>0</sup>-bit is the least significant
bit. The bits within each byte are assigned numbered bit positions 1 to 8
according to the <i>bit order. </i>&nbsp;Given a bit-order, every bit in the
data stream has a unique bit position.</p>
<p class=MsoNormal><b><i>Bit String</i></b> - The ordered set of bits from a
first bit with <em><span style='font-family:"Arial",sans-serif'>bit position</span></em>
N, to bit position N+M is a bit string of length M bits. </p>
<p class=MsoNormal><b><i>Byte</i></b> - The term &quot;byte&quot; refers to an
8-bit octet. Can also refer to an integer with value from 0 to 255 inclusive.
Hexadecimal digit pairs are commonly used to illustrate byte values. </p>
<p class=MsoNormal><b><i>CCSID</i></b> - see Coded Character Set Identifier.&nbsp;&nbsp;&nbsp;
</p>
<p class=MsoNormal><b><i>Character</i></b> - An ISO10646 [<a href="#a_ISO10646">ISO10646</a>]
character having a unique character code as its identifier. This concept is
independent of font, typeface, size, and style, so '<b>F</b>', '<b>F</b>', 'F',
are all the same character 'F'.&nbsp;&nbsp;&nbsp; </p>
<p class=MsoNormal><b><i>Character Code</i></b> - The canonical integer used to
identify a character in the ISO10646 [<a href="#a_ISO10646">ISO10646</a>]
standards. This number uniquely identifies the character independently of the
various ways it is represented by different <i>character set encodings</i> of
the character. For example: The '{' character known in Unicode [<a
href="#a_Unicode">Unicode</a>] as LEFT CURLY BRACKET has character code U+007B.
In both ASCII and UTF-8 character set encodings the representation of this
character is as a single byte <i>code point</i> 0x7B. However, in EBCDIC-based
character set encodings the representation of this same character code is the
single byte code point 0xC0.</p>
<p class=MsoNormal><b><i>Character Set</i></b> - An abstract set of characters
that are assigned (or mapped to) a representation by a particular character set
encoding. For most character set encodings their character set is a subset of
the Unicode character set.&nbsp;&nbsp;&nbsp; </p>
<p class=MsoNormal><b><i>Character Set Encoding</i></b> - Often abbreviated to
just 'encoding'. A specific representation of a character set as bytes or bits
of data. A character set encoding is usually identified by a standard character
set encoding name or a recognized alias name, or by a coded character set
identifier or CCSID [<a href="#a_CCSID">CCSID</a>]. These identifiers are
standardized. The names and aliases are standardized by the IANA [<a
href="#a_IANA">IANA</a>] (where unfortunately, they are called character set
names). CCSIDs are an industry standard. Examples of character set encoding
names are UTF-8, USASCII, GB2312, ebcdic-cp-it, ISO-8859-5, UTF-16BE,
Shift_JIS. There are also additional DFDL standard character set encodings, see
<i>DFDL Standard Encoding. </i>The DFDL standard also allows for
implementation-defined character set encodings to be supported.</p>
<p class=MsoNormal><b><i>Character Width</i></b> - The number of code units or
alternatively the number of bytes or bits used to represent a character in a
specific character set encoding is called the character width. Encodings are
either fixed width (all characters encoded using the same width), or
variable-width (different characters are encoded using different widths). For
example, the UTF-32 character set encoding has 4-byte character width, whereas
USASCII has a 1-byte character width. UTF-8 is variable width, and any specific
character in that encoding has width 1, 2, 3, or 4 bytes. See also <em><span
style='font-family:"Arial",sans-serif'>Fixed-Width Character Encoding</span></em>
and <em><span style='font-family:"Arial",sans-serif'>Variable-Width Character
Encoding.</span></em></p>
<p class=MsoNormal><b><i>Code Point </i></b>- The integer that identifies a
character within a character set encoding. A code point is represented by one
or more code units.&nbsp; When a character set is fixed width, then there is no
distinction between a code unit and a code point. For Unicode character set
encodings, there is no distinction between a character code and a code point.
Examples:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>&#8364; - character code U+20AC</li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>IBM01148 encoding - the code point is 0x9F, and this
encoding is fixed width so there is no distinction between the code point
0x9F and the code unit 0x9F that represents the encoded character.</li>
<li class=MsoNormal>UTF-8 encoding - there is no distinction between the
character code 0x20AC and the code point 0x20AC. However, it is
represented by 3 code units 0xE2 0x82 0xAC</li>
</ul>
</ul>
<p class=MsoNormal><b><i>Code Unit</i></b> - When a character set encoding uses
differing variable width representations for characters, the units making up
these variable width representations are called code units. For example, the
UTF-8 encoding uses between 1 and 4 code units to represent characters, and for
UTF-8, the individual code units are single bytes. DFDL's interpretation of the
UTF-16 encoding is either fixed or variable width. When format property
dfdl:utf16Width 'variable' then UTF-16 is variable width and this encoding uses
either one or two code units per character, but in this case each individual
code unit is a 16-bit value. When a character set is fixed width, then there is
no distinction between a code unit and a code point.&nbsp;&nbsp;&nbsp; </p>
<p class=MsoNormal><b><i>Coded Character Set Identifier</i></b> (CCSID) - An
alternate identifier of a character set encoding. Originally created by IBM,
CCSIDs are a broadly used industry standard. See [<a href="#a_CCSID">CCSID</a>].]&nbsp;&nbsp;
</p>
<p class=MsoNormal><b><i>Component</i></b> - A construct within a DFDL schema.
These constructs include XSD element declarations, type definitions, group
definitions, sequence definitions, choice definitions, element references, and
group references. DFDL schema annotations are not components of the schema,
rather they appear on components of the schema or on the top-level xs:schema
element of a schema document.</p>
<p class=MsoNormal><b><i>Content</i></b> - The bits of the data stream data
that are interpreted when parsing to compute the logical value of a simple
type, and when unparsing are computed from the logical value for incorporation
into the data stream.</p>
<p class=MsoNormal><b><i>Content Model</i></b> &#8211; One of 3 kinds of syntactic
structure of XSD element declarations. The DFDL subset of XSD includes only
empty, simple, and element-only content models, and not mixed content (<a
href="https://www.w3.org/TR/xml/#sec-mixed-content">https://www.w3.org/TR/xml/#sec-mixed-content</a>).
An XSD element declaration for an element of complex type containing a
xs:sequence element is said to have a sequence in its content model.
(DFDL&#8217;s usage is derived from Section 13.3 of [Walmsley]).</p>
<p class=MsoNormal><b><i>Contiguous</i></b> - An element has a contiguous
representation if all parts of its representation are adjacent in the
input/output stream. Most simple types have contiguous representations
naturally. Groups containing elements that are themselves contiguous are also
considered to have contiguous representations irrespective of alignment fill or
padding of any kind that exists within the group. Similarly, arrays of elements
that are themselves contiguous are also contiguous. An example of a
non-contiguous representation would be a nillable element, where a flag is used
to determine whether the element is nil, and the location of that flag is not
adjacent to the value representation. </p>
<p class=MsoNormal><b><i>Count</i></b> - The number of occurrences of an
element.</p>
<p class=MsoNormal><b><i>Data Stream</i></b> - Data where the format is being
described by a DFDL schema. Often abbreviated to just &#8220;data&#8221; for
short. This use of 'stream' implies only that there is a numbering scheme that
specifies a unique <em><span style='font-family:"Arial",sans-serif'>bit
position</span></em> for every bit within the data. This use of 'stream' does
not imply anything about whether the data is persistently stored or not, nor
does it imply anything about whether there are sequential or random-access
capabilities for access to the data. When parsing, the data stream may be
referred to as the input stream, and when unparsing the output stream.</p>
<p class=MsoNormal><b><i>DBCS</i></b> - See Double-Byte Character Set</p>
<p class=MsoNormal><b><i>Decimal</i></b> - This term is used several different
ways distinguished by context:</p>
<ol style='margin-top:0in' start=1 type=1>
<li class=MsoNormal>Base 10. When data has text representation, a decimal
number has base-10 digits.</li>
<li class=MsoNormal>Type xs:decimal - a logical type of number that has an
integer component and an optional base-10 fractional component. This type
subsumes all integer types, as they are of type xs:decimal but with the
further restriction that the fractional part doesn't exist. Note that a
base-10 fraction has different rounding properties than a base-2 or
floating point numeric fraction; hence, xs:decimal is the type commonly used
to represent currency/money in data. </li>
<li class=MsoNormal>Packed Decimal - A binary data representation. See
separate glossary entry below. </li>
</ol>
<p class=MsoNormal><b><i>Defining Annotations</i></b> - The annotation elements
dfdl:defineFormat, dfdl:defineVariable, and dfdl:defineEscapeScheme</p>
<p class=MsoNormal><b><i>Delimiter</i></b> - A character or string used to
separate, or mark the start and end of, items of data. In DFDL, dfdl:lengthKind
'delimited' scans the data for initiators, separators, and terminators.</p>
<p class=MsoNormal><b><i>Delimiter scanning</i></b> - When parsing, the process
of scanning for a specific item in the input data which either marks the end of
an item or the beginning of a subsequent item. Delimiter scanning also takes
into account escape schemes so as to allow the delimiters to appear within data
if properly escaped.</p>
<p class=MsoNormal><b><i>DFDL</i></b> &#8211; Data Format Description Language</p>
<p class=MsoNormal><b><i>DFDL Infoset</i></b> - The abstract data structure
that must be provided:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>To an invoking application by a DFDL parser when parsing
DFDL-described data using a DFDL Schema;</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>To a DFDL unparser by an invoking application when generating
DFDL-described data using a DFDL Schema</p>
<p class=MsoNormal><b><i>DFDL Processor</i></b> - A program that uses DFDL
schemas in order to process data described by them.</p>
<p class=MsoNormal><b><i>DFDL Schema</i></b> - An XML schema containing DFDL
annotations to describe data format and using only the DFDL subset of the XSD
language. This includes all included and imported schemas taken together. This
also includes both the XSD declarations and definitions and the DFDL
definitions provided in the top-level DFDL annotations.</p>
<p class=MsoNormal><b><i>DFDL Standard Encoding</i></b><b><i> </i></b>- A
character set for which there is no IANA name or CCSID but the name and
definition of which DFDL implementations must agree on. See Section <span class=MsoHyperlink>33</span> Appendix
D: DFDL Standard Encodings.</p>
<p class=MsoNormal><b><i>Double-Byte Character Set</i></b> (DBCS) - A character
set encoding where each character code consists of one code unit which uses
exactly 2 bytes. </p>
<p class=MsoNormal><b><i>Dynamic extent</i></b> - This is a characteristic of
the data stream. When parsing data corresponding to a schema component, the
collection of bits within the data stream that contain any aspect of the
representation of that schema component make up the component's dynamic extent.</p>
<p class=MsoNormal><b><i>Dynamic scope</i></b> - This is a characteristic of
parts of the DFDL schema. When a definition or declaration contains or references
another declaration or definition, then the contained definition or declaration
is said to be in the dynamic scope of the enclosing one. The important
characteristic of dynamic scoping is that it traverses references. When
parsing, the dynamic scope of an element declaration includes all definitions
and declarations used as part of parsing that element.</p>
<p class=MsoNormal><b><i>Element</i></b> - A part of the data described by an
element declaration in the schema and presented as an element information item
in the Infoset. </p>
<p class=MsoNormal><b><i>Encoding</i></b> - See Character Set Encoding.&nbsp;&nbsp;&nbsp;
</p>
<p class=MsoNormal><b><i>Explicit Properties</i></b> - The explicit properties
are the combination of any defined locally on the annotation and any defined by
a dfdl:defineFormat annotation referenced by a local dfdl:ref property.</p>
<p class=MsoNormal><b><i>Fixed-Length Element</i></b> - An element of specified
length where dfdl:lengthKind is 'explicit' but dfdl:length is not an
expression, or dfdl:lengthKind is 'implicit' (of simple type only). Note that
choice branches where dfdl:choiceLengthKind is 'explicit' are also referred to
as &#8216;fixed-length&#8217; but are not necessarily elements.</p>
<p class=MsoNormal><b><i>Fixed-Width Character Encoding -</i></b> A character
set encoding where all characters are encoded using a single code unit for
their representation. Note that a code unit is not necessarily a single byte.
It may be more than one byte, or some number of bits less than a byte.&nbsp;
Examples of different fixed widths are:</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>1-byte wide: ASCII, ebcdic-cp-us, iso-8859-1. See also
SBCS (Single-Byte Character Set)</li>
<li class=MsoNormal>2-bytes wide: UTF-16 when dfdl:utf16Width is 'fixed'. See
also DBCS (Double-Byte Character Set)</li>
<li class=MsoNormal>4-bytes wide: UTF-32. </li>
<li class=MsoNormal>7-bits wide: X-DFDL-US-ASCII-7-BIT-PACKED<a href="#_ftn54"
name="_ftnref54" title=""><span class=MsoFootnoteReference><span
class=MsoFootnoteReference><span style='font-size:10.0pt;font-family:"Arial",sans-serif'>[54]</span></span></span></a>.
</li>
</ul>
<p class=MsoNormal><b><i>Fixed Array Element</i></b> - An array element where
XSD minOccurs is equal to XSD maxOccurs.</p>
<p class=MsoNormal><b><i>Format Annotations</i></b> - The annotation elements
dfdl:format, dfdl:element, dfdl:simpleType, dfdl:group, dfdl:sequence, dfdl:choice,
and dfdl:escapeScheme.</p>
<p class=MsoNormal><b><i>Format Property</i></b> &#8211; A DFDL property
carried on a DFDL format annotation.</p>
<p class=MsoNormal><b><i>Framing</i></b> - The term used to describe the
delimiters, length fields, and other parts of the data stream which are present
and may be necessary to determine the length or position of the content of an
element.</p>
<p class=MsoNormal><b><i>Implementation-Defined</i></b><i> <b>Feature </b></i>-
A feature where the implementation has discretion in how it is performed, and
the implementation MUST document how it is performed.</p>
<p class=MsoNormal><b><i>Implementation-Dependent</i></b><i> <b>Feature</b></i>
- A feature where the implementation has discretion in how it is performed, but
the implementation is not required to document how the feature is performed. </p>
<p class=MsoNormal><b><i>Index</i></b> - The position of an occurrence in a
count, starting at 1.</p>
<p class=MsoNormal><b><i>Infoset</i></b> &#8211; See DFDL Infoset</p>
<p class=MsoNormal><b><i>Item</i></b> - A DFDL information set consists of a
number of <strong><i>information items</i></strong>; or just <em><span
style='font-family:"Arial",sans-serif'>items</span></em> for short.</p>
<p class=MsoNormal><b><i>Least-Significant Bit</i></b> - Often abbreviated to <b><i>LSB</i></b>.
In a binary integer the least significant bit is the bit having the least place
value. Within an 8-bit unsigned byte, the bit with place value 2<sup>0</sup>
(or 1) is the least significant bit. </p>
<p class=MsoNormal><b><i>Length</i></b> - When discussing data items and their
representations, the term 'length' is used to refer to the measure of the size
of the representation of an item in units of bits, bytes, or characters. The
length of an array is the number of bits, bytes, or characters making up its
representation, and has nothing to do with the number of occurrences of the
array. Any element occurrence has length. Only array elements and optional
elements have numbers of occurrences other than 1.</p>
<p class=MsoNormal><b><i>Lexical scope</i></b> - In a DFDL Schema document, the
lexical scope of any element is the collection of schema declarations,
definitions, and annotations contained within the element textually.</p>
<p class=MsoNormal><b><i>Local properties</i></b> &#8211; Local properties are
the properties defined on an annotation in either short, attribute or element
form</p>
<p class=MsoNormal><b><i>Logical layer</i></b> - A DFDL Schema with all the
DFDL annotations ignored is an ordinary XSD schema. The logical structure
described by this XSD is called the DFDL <em><span style='font-family:"Arial",sans-serif'>logical
layer</span></em>. The logical layer of a DFDL schema describes the DFDL Infoset
of the data format. </p>
<p class=MsoNormal><b><i>Most-Significant Bit</i></b> - Often abbreviated to <b><i>MSB</i></b>.
In a binary integer the most significant bit is the bit having the greatest
place value. Within an 8-bit unsigned byte, the bit with place value 2<sup>7</sup>
is the most significant bit. </p>
<p class=MsoNormal><b><i>Nibble</i></b> - 4 bits. A single hexadecimal digit (0
to F) is often referred to as a nibble as it can be represented in exactly 4
bits. </p>
<p class=MsoNormal><b><i>Node</i></b> - The term Node is a shorter equivalent
to Element Information Item of the DFDL Infoset described in Section <span class=MsoHyperlink>4.2.2</span> Element
Information Items.</p>
<p class=MsoNormal><b><i>Non-Representation Property </i></b>&#8211; A format
property that is not a representation property, specifically dfdl:ref, dfdl:hiddenGroupRef,
dfdl:choiceBranchKey, dfdl:choiceDispatchKey, dfdl:inputValueCalc,
dfdl:outputValueCalc. See also representation property.</p>
<p class=MsoNormal><b><i>Occurrence</i></b> - An instance of an element in the
data, or an item in the DFDL Infoset.</p>
<p class=MsoNormal><b><i>Optional Element</i></b> - An element declaration or
reference where XSD minOccurs is equal to zero.</p>
<p class=MsoNormal><b><i>Optional Occurrence</i></b> - An occurrence with an
index greater than XSD minOccurs.</p>
<p class=MsoNormal><b><i>Packed Decimal</i></b> &#8211; A physical
representation of a decimal and integer numbers where each digit is packed into
one nibble (4 bits) of a byte. There are several variants, some also include a
sign nibble, and some include a padding nibble. The term covers all the
following enums of the dfdl:binaryNumberRep and dfdl:binaryCalendarRep
properties &#8211; 'packed' (IBM 390 packed), 'bcd' (standard binary coded
decimals or BCDs) and 'ibm4690Packed' (IBM 4690 packed).</p>
<p class=MsoNormal><b><i>Parse</i></b> - To construct an Infoset from the data
stream representation of the data, based on its DFDL format description.</p>
<p class=MsoNormal><b><i>Physical Layer</i></b> - A DFDL Schema adds DFDL
annotations onto an XSD language schema. The annotations describe the physical
representation or <em><span style='font-family:"Arial",sans-serif'>physical
layer</span></em> of the data. The physical layer of a DFDL schema describes
the representation in the data stream.</p>
<p class=MsoNormal><b><i>Point of Uncertainty</i></b> - A point of uncertainty
occurs in the data stream when there is more than one schema component that
might occur based on parsing up to that point. These arise from the xs:choice
model group, use of optional and array elements with varying numbers of
occurrences, use of unordered sequences, and use of sequences with floating
elements. </p>
<p class=MsoNormal><b><i>Representation Property</i></b> - A format property
that is used to describe a physical characteristic of a component. Such a
property appliesies to one or more grammar regions of the component. See also
non-representation property.</p>
<p class=MsoNormal><b><i>Required Element </i></b><i>-</i> An element
declaration or reference where XSD minOccurs is greater than zero.</p>
<p class=MsoNormal><b><i>Required Occurrence</i></b> - An occurrence with an
index less than or equal to XSD minOccurs.</p>
<p class=MsoNormal><b><i>Required Property</i></b> &#8211; A DFDL property that
must have a value. The required properties for each schema component are listed
in <a href="#_Appendix_G:_Property">Appendix G: Property Precedence</a>.</p>
<p class=MsoNormal><b><i>Resolved Set of Annotations</i></b> - When DFDL
annotations appear on </p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>a simple
type definition and the base simple type it references (recursively, if the
base simple type also references another base simple type).</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>an element
declaration and the simple type definition from (1) it references.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>an element
reference and the global element declaration from (2) it references.</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'>4.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp; </span>a group
reference and the global group definition it references</p>
<p class=MsoNormal>They are combined, and the resulting set of annotations is
referred to as the <em><span style='font-family:"Arial",sans-serif'>resolved
set of annotations</span></em> for the schema component.</p>
<p class=MsoNormal><b><i>SBCS</i></b> - See Single Byte Character Set</p>
<p class=MsoNormal><b><i>Scan</i></b> &#8211; Examine the input data looking
for delimiters such as separators and terminators or matches to regular
expressions. </p>
<p class=MsoNormal><b><i>Single-Byte Character Set</i></b> (SBCS) - A character
set encoding where each character code consists of one code unit which is
exactly a single byte (8 bits).</p>
<p class=MsoNormal><b><i>Schema</i></b> &#8211; see DFDL Schema. </p>
<p class=MsoNormal><b><i>Schema Component Designator</i></b> (SCD) - A notation
for referring to one of the components of a DFDL Schema. This is a W3C
Candidate Recommendation (inactive since Jan 2010). See <a
href="http://www.w3.org/TR/xmlschema-ref">http://www.w3.org/TR/xmlschema-ref</a>.
If not finalized, then a future DFDL specification version may define its own
SCD syntax.</p>
<p class=MsoNormal><b><i>Schema Definition Order</i></b> &#8211; The order that
the schema components are defined in a schema document.</p>
<p class=MsoNormal><b><i>Specified Length</i></b> - An item has specified length
when dfdl:lengthKind is &quot;implicit&quot; (simple type only), &quot;explicit&quot;,
or &quot;prefixed&quot;.&nbsp; </p>
<p class=MsoNormal><b><i>Speculative Parsing</i></b> &#8211; When the parser
reaches a point of uncertainty it attempts to parse each option in turn until
one is known-to-exist or known-not-to-exist.</p>
<p class=MsoNormal><b><i>Statement Annotations</i></b> - The annotation
elements dfdl:assert, dfdl:discriminator, dfdl:setVariable, and
dfdl:newVariableInstance. Also called DFDL Statements.</p>
<p class=MsoNormal><b><i>Static Analysis</i></b> - A DFDL Implementation can
analyze a DFDL schema and determine the presence of many kinds of errors. This
is called static analysis, compilation of the schema, or determining the
presence of the error <i>statically</i>. </p>
<p class=MsoNormal><b><i>Surrogate Pair</i></b> - A Unicode character whose
character code value is greater than 0xFFFF can be encoded into variable-width
UTF-16BE or UTF-16LE (which are variable-width encodings when the DFDL property
dfdl:utf16Width is 'variable'). In this case the representation uses two
adjacent code units each of which is called a surrogate, and the pair of which
is called a surrogate pair.</p>
<p class=MsoNormal><b><i>Target Length</i></b> - When unparsing, the length (in
dfdl:lengthUnits) of an item's representation is the target length. The length
of the content corresponding to a logical data value in the Infoset may be
shorter or longer than the target length, in which case padding or truncation
may be necessary to make the logical data content conform to the target length.
Rules for when padding and truncation occur, and how they are applied are
specific to simple data types and are controlled by a number of DFDL format
properties.</p>
<p class=MsoNormal><b><i>Text</i></b> - Consisting of characters in some
character set encoding. Normally text data is expected to be human-readable,
but many character set encodings contain special control characters that are
not human-readable, but one calls data containing these control charaters <em><span
style='font-family:"Arial",sans-serif'>text</span></em> anyway. The
dfdl:encoding property is required in order to decode/encode the text.</p>
<p class=MsoNormal><b><i>Text Representation</i></b> - Of type xs:string, or of
other types (except xs:hexBinary) with property dfdl:representation 'text'.
Note that type xs:hexBinary never has text representation. This term
specifically refers to the representation of the SimpleContent region being
textual.</p>
<p class=MsoNormal><b><i>Textual</i></b> &#8211; Of type Text. </p>
<p class=MsoNormal><b><i>Twos-Complement</i></b> - A very common scheme for
representing binary integers within data.&nbsp; A positive integer consisting
of N bits is represented as its base-2 absolute value. A negative integer is
represented as the complement (all bits inverted) of its absolute value plus 1.&nbsp;
</p>
<p class=MsoNormal><b><i>Unicode</i></b> - A character set defined by the
Unicode Consortium, and standardized at the International Standards
Organization (ISO) as ISO10646.&nbsp;&nbsp;&nbsp; </p>
<p class=MsoNormal><b><i>Unit </i></b>-<b><i> </i></b>See Addressable Unit.</p>
<p class=MsoNormal><b><i>Unpadded Length</i></b> - This is the length of the
content of an item of the Infoset, prior to any filling or padding which might
be introduced due to dfdl:lengthKind &quot;prefixed&quot; or dfdl:lengthKind
&quot;explicit&quot;. It is equal to or smaller than the target length. </p>
<p class=MsoNormal><b><i>Unparse</i></b> - The process of recreating the data representation
in a data stream of the Infoset according to its DFDL format description. The
terms <i>marshalling</i>, and data <i>serialization</i> are sometimes used, but
they connote a sequentiality that is not necessarily the case when using DFDL. </p>
<p class=MsoNormal><b><i>Validity </i></b>- A DFDL Infoset is said to be valid
with respect to a DFDL schema if each Infoset item is valid with respect to its
corresponding DFDL schema component. Validity is about the Infoset and the
values it holds. It is independent of the data representation when parsing or
unparsing. See Section 9.6<span class=MsoHyperlink> </span><a
href="#_Validation">Validation</a>, for a list of the specific value checks
that are performed when validating a DFDL Infoset against a DFDL schema.</p>
<p class=MsoNormal><b><i>Variable-Width Character Encoding</i></b> - A
character set encoding where characters are encoded using one or more code
units for their representation depending on which specific character is being
encoded. Examples with their ranges of varying width:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>1 to 4 bytes: UTF-8</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>1 or 2 16-bit code units: UTF-16 when property dfdl:utf16Width is
'variable'</p>
<p class=MsoListParagraphCxSpLast style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>1 or 2 bytes: Shift-JIS</p>
<p class=MsoNormal><b><i>Well-Formed</i></b> &#8211; A data stream is said to
be well-formed with respect to a DFDL schema if a DFDL processor can parse the
data into a DFDL Infoset, or there exists a DFDL Infoset such that a DFDL
processor can unparse to that data stream. The validity of values in the Infoset
is not necessary for data to be well-formed.</p>
<p class=MsoNormal><b><i>Width</i></b> - See Character Width.</p>
<h1><a name="_Toc62570273">35<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
</span>Appendix F: Specific Errors Classified</a></h1>
<p class=MsoNormal style='text-autospace:none'>This appendix clarifies which
errors are Schema Definition Errors and which are Processing Errors.</p>
<p class=MsoNormal>The following are Processing Errors:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Arithmetic Errors</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Division by zero</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Integer Arithmetic Underflow</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Integer Arithmetic Overflow</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Note: Floating point math can produce NaN (Not a Number) values.
This is not an error, nor are properly typed operations on floating point NaN
values. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Expression Errors</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Dynamic Type&nbsp; Error &#8211; unable to convert expression
result value to target type</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: non-digits found in string argument to xs:int(&#8230;)
constructor.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Note: if a DFDL Implementation cannot distinguish Dynamic Type
Errors from Static Type Errors, then a Dynamic Type Error MUST cause a Schema
Definition Error</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Index out of bounds error &#8211; index exceeds the number of occurrences
or is less than 1.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Note: same error for dfdl:testBit if bitPos is not 1..8, or for
character positions in a string-value</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Indexing of non-array non-optional element</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: x[1] when x is declared and has both XSD
minOccurs=&quot;1&quot; and XSD maxOccurs=&quot;1&quot; explicitly, or by not
stating either or both of them.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Illegal argument value (correct type, illegal value)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Parse Errors</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Delimiter not found</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Data from the data stream is not convertible to element type</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Assertion failed</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Discriminator failed</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Required occurrence not found</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>All choice alternatives fail to parse</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Character set decoding failure and dfdl:encodingErrorPolicy is
'error'</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Unparse Errors</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Truncation scenarios where truncation is being disallowed</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Rounding error &#8211; rounding needed but not allowed.
(Unparsing)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>No choice alternative matching the Infoset can be identified for
unparsing. Character set encoding failure and dfdl:encodingErrorPolicy is
'error'</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Implementation-defined Limit Errors - Implementations can have
fixed or adjustable limits that some formats and some data may exceed at
processing time. This specification does not further specify what these errors
are, but some possible examples are:</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Data longer than allowed for representation of a given data type</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: exceed maximum length of representation of xs:decimal
when dfdl:representation is &quot;text&quot;. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Expression references too far back into Infoset (parsing)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Expression references too far forward into Infoset (unparsing)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Number of array elements exceeds limit.</p>
<p class=MsoListParagraphCxSpLast style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Regular expression exceeds time limit </p>
<p class=MsoNormal>The following are Schema Definition Errors, regardless of
whether they are detected in advance of processing or once processing begins:</p>
<p class=MsoListParagraphCxSpFirst style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Errors in XML Schema Construction and Structure</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>See XML Schema Specification Part 1, Section 5.1 [<a
href="#a_XSDL_Part1">XSDLV1</a>]</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Use of XSD constructs outside of DFDL subset</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Implementation-defined Limitations </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Use of DFDL schema constructs not supported by this
implementation.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: xs:choice is an optional part of the DFDL specification
(see Section 23). If not supported, it MUST be rejected as a Schema Definition
Error. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: use of packed-decimal when it is not supported by the
implementation. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: use of dfdl:assert when it is not supported by the
implementation (See Spec Section 23 on DFDL Subsets)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Note: Unrecognized DFDL properties or property values can produce
a warning and an implementation can attempt to process data despite the
warning. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Exceeding implementation-dependent limits for schema
size/complexity</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: schema too large &#8211; simply a limit on how large the
schema can be, how many files, how many top-level constructs, etc.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Schema Not Valid </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>See XML Schema Specification Part 1, Section 5.2 [<a
href="#a_XSDL_Part1">XSDLV1</a>]</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>UPA violation (Unique Particle Attribution)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Reference to DFDL global definition not found</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Format definition (dfdl:defineFormat)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Escape schema definition (dfdl:defineEscapeScheme)</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Variable Definition (dfdl:defineVariable)</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Annotations not well-formed or not valid</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Annotations Incompatible</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>E.g., dfdl:assert and dfdl:discriminator at same combined
annotation point, or more than one format annotation at an annotation point.</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>DFDL Properties and their values</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Property not applicable to DFDL annotation</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Property value not suitable for property</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Property conflict</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Between Element Reference and Element Declaration</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Between Element Declaration and Simple Type Definition</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Between Simple Type Definition and Base Simple Type Definition</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Between Group Reference and Sequence/Choice of Group Definition</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Required property not found</p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Expressions</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Expression syntax error</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Named child element doesn't exist &#8211; E.g., /a/b, and there
is no child b in existence.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Note: no child possible in the schema is a different error, but
also a Schema Definition Error, as /a/b would not have a type in that case. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Note: This is a Schema Definition Error, as schema authors are
advised to use fn:exists(&#8230;) to test for existence of elements when it is
possible that they not exist.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Variable read but not defined</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Variable assigned after read</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Variable assigned more than once</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Static Type error &#8211; type is incorrect for usage</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Note: if an implementation is unable to distinguish Static Type
Errors from Dynamic Type Errors, then both MUST cause Schema Definition Errors.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Path step definition not found &#8211; e.g., /a/n:b but no
definition for n:b as local or global element.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Not enough arguments for function</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Expression value is not single node</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Most DFDL expression contexts require an expression to identify a
single node, not an array (aka sequence of nodes). There are a few exceptions
such as the fn:count(&#8230;) function, where the path expression must be to an
array or optional element. </p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Expression value is not array element or optional element.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Some DFDL expression contexts require an array or an optional
element.</p>
<p class=MsoListParagraphCxSpMiddle style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>Example: The fn:count(...) function argument must be to an array
or optional element. It is a Schema Definition Error if the argument expression
is otherwise. </p>
<p class=MsoListParagraphCxSpMiddle style='text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>Regular Expressions</p>
<p class=MsoListParagraphCxSpLast style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>Syntax error</p>
<p class=MsoNormal style='margin:0in'><span style='font-family:"Times New Roman",serif'>&nbsp;</span></p>
</div>
<b><span style='font-size:14.0pt;font-family:"Arial",sans-serif'><br clear=all
style='page-break-before:always'>
</span></b>
<div class=WordSection3>
<h1><a name="_Toc62570274"></a><a name="_Appendix_G:_Property"></a>36<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Appendix G: Property
Precedence</h1>
<h2><a name="_Toc199516369"></a><a name="_Toc194984030"></a><a
name="_Toc243112872"></a><a name="_Toc349042831"></a><a name="_Toc62570275">36.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Parsing</a></h2>
<p class=MsoNormal>The following list gives the order in which DFDL properties
are examined when the DFDL parser is positioned at a particular component in
the DFDL schema, and about to parse the bitstream modeled by that component.</p>
<h3><a name="_Toc243112873"></a><a name="_Toc349042833"></a><a
name="_Toc62570276"></a><a name="_Toc322911728"></a><a name="_Toc322912267"></a><a
name="_Toc329093128"></a><a name="_Toc332701641"></a><a name="_Toc332701945"></a><a
name="_Toc332711744"></a><a name="_Toc332712046"></a><a name="_Toc332712347"></a><a
name="_Toc332724263"></a><a name="_Toc332724563"></a><a name="_Toc341102859"></a><a
name="_Toc347241594"></a><a name="_Toc347744787"></a><a name="_Toc348984570"></a><a
name="_Toc348984875"></a><a name="_Toc349038039"></a><a name="_Toc349038341"></a><a
name="_Toc349042832"></a><a name="_Toc351912954"></a><a name="_Toc351914975"></a><a
name="_Toc351915441"></a><a name="_Toc361231539"></a><a name="_Toc361232065"></a><a
name="_Toc362445363"></a><a name="_Toc363909330"></a><a name="_Toc364463756"></a><a
name="_Toc366078360"></a><a name="_Toc366078975"></a><a name="_Toc366079960"></a><a
name="_Toc366080572"></a><a name="_Toc366081181"></a><a name="_Toc366505521"></a><a
name="_Toc366508890"></a><a name="_Toc366513391"></a><a name="_Toc366574580"></a><a
name="_Toc366578373"></a><a name="_Toc366578967"></a><a name="_Toc366579559"></a><a
name="_Toc366580150"></a><a name="_Toc366580742"></a><a name="_Toc366581333"></a><a
name="_Toc366581925"></a><span style='color:black;font-weight:normal'>36.1.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:element
(simple) and dfdl:simpleType</h3>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
calculated value (does not apply to dfdl:simpleType or to global elements)</span></em></li>
</ul>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:inputValueCalc </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
common</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:bitOrder</li>
<li class=MsoNormal>dfdl:encoding </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:ignoreCase</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
nillable </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>XSD nillable <em><span style='font-family:"Arial",sans-serif'>(does
not apply to dfdl:simpleType)</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;literalValue&quot;,
&quot;logicalValue&quot;, &quot;literalCharacter&quot; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValue </li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
occurrences (does not apply to dfdl:simpleType)</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:floating </li>
<li class=MsoNormal>(maxOccurs &gt; 1 or unbounded) or (XSD minOccurs = 0 and
XSD maxOccurs = 1)</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursCountKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;expression&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursCount </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;fixed&quot;,
&quot;implicit&quot; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD minOccurs</li>
<li class=MsoNormal>XSD maxOccurs </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;parsed&quot;
</span></em></li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;stopValue&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursStopValue</li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
identification, framing &amp; extraction&nbsp; </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:leadingSkip</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
<li class=MsoNormal>dfdl:alignment </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
<li class=MsoNormal>dfdl:initiator</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy <em><span style='font-family:
"Arial",sans-serif'>(does not apply to dfdl:simpleType)</span></em></li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
</ul>
<li class=MsoNormal>dfdl:representation<em><span style='font-family:"Arial",sans-serif'>
&quot;text&quot; or xs:simpleType is 'string'</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:lengthKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD maxLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
dfdl:textBooleanTrueRep/dfdl:textBooleanFalseRep</li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:length </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;prefixed&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:prefixLengthType </li>
<li class=MsoNormal>dfdl:prefixIncludesPrefixLength </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;pattern&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:lengthPattern</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;delimited&quot;,</span></em>
<em><span style='font-family:"Arial",sans-serif'>&quot;endOfParent&quot;</span></em>
</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>None</span></em></li>
</ul>
</ul>
<li class=MsoNormal>dfdl:textTrimKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textStringPadCharacter, dfdl:textNumberPadCharacter,
dfdl:textBooleanPadCharacter or dfdl:textCalendarPadCharacter&nbsp; </li>
<li class=MsoNormal>dfdl:textStringJustification, dfdl:textNumberJustification,
dfdl:textBooleanJustification or dfdl:textCalendarJustification </li>
</ul>
<li class=MsoNormal>dfdl:escapeSchemeRef</li>
</ul>
<li class=MsoNormal>dfdl:representation<em><span style='font-family:"Arial",sans-serif'>
&quot;binary&quot; or xs:simpleType is 'hexBinary'</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:lengthKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD maxLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
xs:simpleType</li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:length </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;prefixed&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:prefixLengthType </li>
<li class=MsoNormal>dfdl:prefixIncludesPrefixLength </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;delimited&quot;,
&quot;endOfParent&quot; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>None</span></em></li>
</ul>
</ul>
</ul>
<li class=MsoNormal>dfdl:terminator </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy <em><span style='font-family:
"Arial",sans-serif'>(does not apply to dfdl:simpleType)</span></em></li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
<li class=MsoNormal>dfdl:documentFinalTerminatorCanBeMissing </li>
</ul>
<li class=MsoNormal>dfdl:trailingSkip</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits&nbsp;&nbsp; </li>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
conversion </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>XSD type property</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Number&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl: decimalSigned</li>
<li class=MsoNormal>dfdl:representation </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;text&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textNumberRep</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;standard&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textNumberPattern</li>
<li class=MsoNormal>dfdl:textStandardDecimalSeparator</li>
<li class=MsoNormal>dfdl:textStandardGroupingSeparator</li>
<li class=MsoNormal>dfdl:textStandardExponentRep</li>
<li class=MsoNormal>dfdl:textNumberCheckPolicy</li>
<li class=MsoNormal>dfdl:textStandardInfinityRep</li>
<li class=MsoNormal>dfdl:textStandardNaNRep</li>
<li class=MsoNormal>dfdl:textNumberRounding</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraphCxSpFirst style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingMode</p>
<p class=MsoListParagraphCxSpLast style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingIncrement</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textStandardZeroRep</li>
<li class=MsoNormal>dfdl:textStandardBase</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;zoned&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>d</span></em>fdl:textNumberPattern</li>
<li class=MsoNormal>dfdl:textNumberCheckPolicy</li>
<li class=MsoNormal>dfdl:textNumberRounding</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraphCxSpFirst style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingMode</p>
<p class=MsoListParagraphCxSpLast style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingIncrement</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textZonedSignStyle</li>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;</span></em>
</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:byteOrder</li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>xs:decimal
and restrictions</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryNumberRep</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;packed&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:binaryPackedSignCodes</li>
<li class=MsoNormal>dfdl:binaryDecimalVirtualPoint</li>
<li class=MsoNormal>dfdl:binaryNumberCheckPolicy</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;bcd&quot;,
&quot;ibm4690Packed&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:binaryDecimalVirtualPoint</li>
<li class=MsoNormal>dfdl:binaryNumberCheckPolicy</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:binaryDecimalVirtualPoint</li>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>xs:float,
xs:double</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryFloatRep </li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;String&quot;
</span></em></li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Calendar&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:representation </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;text&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarPatternKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>&quot;<em><span style='font-family:"Arial",sans-serif'>explicit</span></em>&quot;</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarPattern</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:calendarCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarTimeZone</li>
<li class=MsoNormal>dfdl:calendarObserveDST</li>
<li class=MsoNormal>dfdl:calendarFirstDayOfWeek</li>
<li class=MsoNormal>dfdl:calendarDaysInFirstWeek</li>
<li class=MsoNormal>dfdl:calendarCenturyStart</li>
<li class=MsoNormal>dfdl:calendarLanguage</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:byteOrder</li>
<li class=MsoNormal>dfdl:binaryCalendarRep</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;packed&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:packedDecimalSignCodes</li>
<li class=MsoNormal>dfdl:binaryNumberCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarPatternKind</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>&quot;<em><span style='font-family:"Arial",sans-serif'>explicit</span></em>&quot;</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraph style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:calendarPattern</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarTimeZone</li>
<li class=MsoNormal>dfdl:calendarObserveDST</li>
<li class=MsoNormal>dfdl:calendarFirstDayOfWeek</li>
<li class=MsoNormal>dfdl:calendarDaysInFirstWeek</li>
<li class=MsoNormal>dfdl:calendarCenturyStart</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&nbsp;&quot;bcd&quot;,
&quot;ibm4690Packed&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryNumberCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarPatternKind</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>&quot;<em><span style='font-family:"Arial",sans-serif'>explicit</span></em>&quot;</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraph style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:calendarPattern</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarTimeZone</li>
<li class=MsoNormal>dfdl:calendarObserveDST</li>
<li class=MsoNormal>dfdl:calendarFirstDayOfWeek</li>
<li class=MsoNormal>dfdl:calendarDaysInFirstWeek</li>
<li class=MsoNormal>dfdl:calendarCenturyStart</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binarySeconds&quot;,
&quot;binaryMilliseconds&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryCalendarEpoch</li>
</ul>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Opaque&quot;
</span></em></li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Boolean&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:representation </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;text&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textBooleanTrueRep </li>
<li class=MsoNormal>dfdl:textBooleanFalseRep </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:byteOrder</li>
<li class=MsoNormal>dfdl:binaryBooleanTrueRep </li>
<li class=MsoNormal>dfdl:binaryBooleanFalseRep </li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal>dfdl:useNilForDefault <em><span style='font-family:"Arial",sans-serif'>(does
not apply to dfdl:simpleType)</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;true&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>None</span></em></li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;false&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD default or XSD fixed</li>
</ul>
</ul>
</ul>
</ul>
<h3><a name="_Toc349042836"></a><a name="_Toc62570277"></a><a
name="_Toc322911730"></a><a name="_Toc322912269"></a><a name="_Toc329093130"></a><a
name="_Toc332701643"></a><a name="_Toc332701947"></a><a name="_Toc332711746"></a><a
name="_Toc332712048"></a><a name="_Toc332712349"></a><a name="_Toc332724265"></a><a
name="_Toc332724565"></a><a name="_Toc341102861"></a><a name="_Toc347241596"></a><a
name="_Toc347744789"></a><a name="_Toc348984572"></a><a name="_Toc348984877"></a><a
name="_Toc349038041"></a><a name="_Toc349038343"></a><a name="_Toc349042834"></a><a
name="_Toc351912956"></a><a name="_Toc351914977"></a><a name="_Toc351915443"></a><a
name="_Toc361231541"></a><a name="_Toc361232067"></a><a name="_Toc362445365"></a><a
name="_Toc363909332"></a><a name="_Toc364463758"></a><a name="_Toc366078362"></a><a
name="_Toc366078977"></a><a name="_Toc366079962"></a><a name="_Toc366080574"></a><a
name="_Toc366081183"></a><a name="_Toc366505523"></a><a name="_Toc366508892"></a><a
name="_Toc366513393"></a><a name="_Toc366574582"></a><a name="_Toc366578375"></a><a
name="_Toc366578969"></a><a name="_Toc366579561"></a><a name="_Toc366580152"></a><a
name="_Toc366580744"></a><a name="_Toc366581335"></a><a name="_Toc366581927"></a><a
name="_Toc322912270"></a><a name="_Toc329093131"></a><a name="_Toc332701644"></a><a
name="_Toc332701948"></a><a name="_Toc332711747"></a><a name="_Toc332712049"></a><a
name="_Toc332712350"></a><a name="_Toc332724266"></a><a name="_Toc332724566"></a><a
name="_Toc341102862"></a><a name="_Toc347241597"></a><a name="_Toc347744790"></a><a
name="_Toc348984573"></a><a name="_Toc348984878"></a><a name="_Toc349038042"></a><a
name="_Toc349038344"></a><a name="_Toc349042835"></a><a name="_Toc351912957"></a><a
name="_Toc351914978"></a><a name="_Toc351915444"></a><a name="_Toc361231542"></a><a
name="_Toc361232068"></a><a name="_Toc362445366"></a><a name="_Toc363909333"></a><a
name="_Toc364463759"></a><a name="_Toc366078363"></a><a name="_Toc366078978"></a><a
name="_Toc366079963"></a><a name="_Toc366080575"></a><a name="_Toc366081184"></a><a
name="_Toc366505524"></a><a name="_Toc366508893"></a><a name="_Toc366513394"></a><a
name="_Toc366574583"></a><a name="_Toc366578376"></a><a name="_Toc366578970"></a><a
name="_Toc366579562"></a><a name="_Toc366580153"></a><a name="_Toc366580745"></a><a
name="_Toc366581336"></a><a name="_Toc366581928"></a><span style='color:black;
font-weight:normal'>36.1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:element (complex)</h3>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
common </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:bitOrder</li>
<li class=MsoNormal>dfdl:encoding </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:ignoreCase</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
nillable </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>XSD nillable</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;literalValue&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValue (must be &quot;%ES;&quot;)</li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
occurrences </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:floating<em><span style='font-family:"Arial",sans-serif'>
</span></em></li>
<li class=MsoNormal>(maxOccurs &gt; 1 or unbounded) or (XSD minOccurs = 0 and
XSD maxOccurs = 1)</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursCountKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;expression&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursCount </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;fixed&quot;</span></em><em><span
style='font-family:"Arial",sans-serif;font-style:normal'> ,</span></em>
&quot;<em><span style='font-family:"Arial",sans-serif'>implicit</span></em>&quot;</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD minOccurs</li>
<li class=MsoNormal>XSD maxOccurs </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;parsed&quot;
</span></em></li>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
identification, framing &amp; extraction </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:leadingSkip </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits</li>
</ul>
<li class=MsoNormal>dfdl:alignment</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>not <em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;</span></em>
</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
</ul>
<li class=MsoNormal>dfdl:initiator</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy</li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
</ul>
<li class=MsoNormal>dfdl:lengthKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:length </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;prefixed&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:prefixLengthType </li>
<li class=MsoNormal>dfdl:prefixIncludesPrefixLength </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;pattern&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:lengthPattern</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;,
&quot;delimited&quot;, &quot;endOfParent&quot;&nbsp; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>None</span></em></li>
</ul>
</ul>
<li class=MsoNormal>dfdl:terminator </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy</li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
<li class=MsoNormal>dfdl:documentFinalTerminatorCanBeMissing </li>
</ul>
<li class=MsoNormal>dfdl:trailingSkip </li>
</ul>
</ul>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits&nbsp; </li>
</ul>
</ul>
</ul>
<h3><a name="_Toc349042838"></a><a name="_Toc62570278"></a><a
name="_Toc322912272"></a><a name="_Toc329093133"></a><a name="_Toc332701646"></a><a
name="_Toc332701950"></a><a name="_Toc332711749"></a><a name="_Toc332712051"></a><a
name="_Toc332712352"></a><a name="_Toc332724268"></a><a name="_Toc332724568"></a><a
name="_Toc341102864"></a><a name="_Toc347241599"></a><a name="_Toc347744792"></a><a
name="_Toc348984575"></a><a name="_Toc348984880"></a><a name="_Toc349038044"></a><a
name="_Toc349038346"></a><a name="_Toc349042837"></a><a name="_Toc351912959"></a><a
name="_Toc351914980"></a><a name="_Toc351915446"></a><a name="_Toc361231544"></a><a
name="_Toc361232070"></a><a name="_Toc362445368"></a><a name="_Toc363909335"></a><a
name="_Toc364463761"></a><a name="_Toc366078365"></a><a name="_Toc366078980"></a><a
name="_Toc366079965"></a><a name="_Toc366080577"></a><a name="_Toc366081186"></a><a
name="_Toc366505526"></a><a name="_Toc366508895"></a><a name="_Toc366513396"></a><a
name="_Toc366574585"></a><a name="_Toc366578378"></a><a name="_Toc366578972"></a><a
name="_Toc366579564"></a><a name="_Toc366580155"></a><a name="_Toc366580747"></a><a
name="_Toc366581338"></a><a name="_Toc366581930"></a><span style='color:black;
font-weight:normal'>36.1.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:sequence and dfdl:group (when reference is to a sequence)</h3>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
hidden (xs:sequence only)</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:hiddenGroupRef</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
common</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:bitOrder</li>
<li class=MsoNormal>dfdl:encoding </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:ignoreCase</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
identification, framing &amp; extraction </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:leadingSkip </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits</li>
</ul>
<li class=MsoNormal>dfdl:alignment </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>not
&quot;implicit&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
</ul>
<li class=MsoNormal>dfdl:initiator </li>
<li class=MsoNormal>dfdl:sequenceKind </li>
<li class=MsoNormal>dfdl:initiatedContent</li>
<li class=MsoNormal>dfdl:separator </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:separatorPosition</li>
<li class=MsoNormal>dfdl:separatorSuppressionPolicy</li>
</ul>
<li class=MsoNormal>dfdl:terminator </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:documentFinalTerminatorCanBeMissing </li>
</ul>
<li class=MsoNormal>dfdl:trailingSkip</li>
</ul>
</ul>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
</ul>
</ul>
<h3><a name="_Toc243112876"></a><a name="_Toc349042839"></a><a
name="_Toc62570279"><span style='color:black;font-weight:normal'>36.1.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:choice
and dfdl:group (when reference is to a choice)</a></h3>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
common</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:bitOrder</li>
<li class=MsoNormal>dfdl:encoding </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:ignoreCase</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Parsing:
identification, framing &amp; extraction </span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:leadingSkip</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
<li class=MsoNormal>dfdl:alignment</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>not
&quot;implicit&quot; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
</ul>
<li class=MsoNormal>dfdl:initiator </li>
<li class=MsoNormal>dfdl:choiceLengthKind</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:choiceLength</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:initiatedContent</li>
<li class=MsoNormal>dfdl:choiceDispatchKey</li>
<li class=MsoNormal>dfdl:choiceBranchKey (on elements)</li>
<li class=MsoNormal>dfdl:terminator </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:documentFinalTerminatorCanBeMissing </li>
</ul>
<li class=MsoNormal>dfdl:trailingSkip</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits</li>
</ul>
</ul>
</ul>
<h2><a name="_Toc199516370"></a><a name="_Toc194984031"></a><a
name="_Toc243112877"></a><a name="_Toc349042843"></a><a name="_Toc62570280"></a><a
name="_Toc322911736"></a><a name="_Toc322912275"></a><a name="_Toc329093136"></a><a
name="_Toc332701649"></a><a name="_Toc332701953"></a><a name="_Toc332711752"></a><a
name="_Toc332712054"></a><a name="_Toc332712355"></a><a name="_Toc332724271"></a><a
name="_Toc332724571"></a><a name="_Toc341102867"></a><a name="_Toc347241602"></a><a
name="_Toc347744795"></a><a name="_Toc348984578"></a><a name="_Toc348984883"></a><a
name="_Toc349038047"></a><a name="_Toc349038349"></a><a name="_Toc349042840"></a><a
name="_Toc349642251"></a><a name="_Toc351912962"></a><a name="_Toc351914983"></a><a
name="_Toc351915449"></a><a name="_Toc361231547"></a><a name="_Toc361232073"></a><a
name="_Toc362445371"></a><a name="_Toc363909338"></a><a name="_Toc364463764"></a><a
name="_Toc366078368"></a><a name="_Toc366078983"></a><a name="_Toc366079968"></a><a
name="_Toc366080580"></a><a name="_Toc366081189"></a><a name="_Toc366505529"></a><a
name="_Toc366508898"></a><a name="_Toc366513399"></a><a name="_Toc366574588"></a><a
name="_Toc366578381"></a><a name="_Toc366578975"></a><a name="_Toc366579567"></a><a
name="_Toc366580158"></a><a name="_Toc366580750"></a><a name="_Toc366581341"></a><a
name="_Toc366581933"></a><a name="_Toc322911737"></a><a name="_Toc322912276"></a><a
name="_Toc329093137"></a><a name="_Toc332701650"></a><a name="_Toc332701954"></a><a
name="_Toc332711753"></a><a name="_Toc332712055"></a><a name="_Toc332712356"></a><a
name="_Toc332724272"></a><a name="_Toc332724572"></a><a name="_Toc341102868"></a><a
name="_Toc347241603"></a><a name="_Toc347744796"></a><a name="_Toc348984579"></a><a
name="_Toc348984884"></a><a name="_Toc349038048"></a><a name="_Toc349038350"></a><a
name="_Toc349042841"></a><a name="_Toc349642252"></a><a name="_Toc351912963"></a><a
name="_Toc351914984"></a><a name="_Toc351915450"></a><a name="_Toc361231548"></a><a
name="_Toc361232074"></a><a name="_Toc362445372"></a><a name="_Toc363909339"></a><a
name="_Toc364463765"></a><a name="_Toc366078369"></a><a name="_Toc366078984"></a><a
name="_Toc366079969"></a><a name="_Toc366080581"></a><a name="_Toc366081190"></a><a
name="_Toc366505530"></a><a name="_Toc366508899"></a><a name="_Toc366513400"></a><a
name="_Toc366574589"></a><a name="_Toc366578382"></a><a name="_Toc366578976"></a><a
name="_Toc366579568"></a><a name="_Toc366580159"></a><a name="_Toc366580751"></a><a
name="_Toc366581342"></a><a name="_Toc366581934"></a><a name="_Toc322911738"></a><a
name="_Toc322912277"></a><a name="_Toc329093138"></a><a name="_Toc332701651"></a><a
name="_Toc332701955"></a><a name="_Toc332711754"></a><a name="_Toc332712056"></a><a
name="_Toc332712357"></a><a name="_Toc332724273"></a><a name="_Toc332724573"></a><a
name="_Toc341102869"></a><a name="_Toc347241604"></a><a name="_Toc347744797"></a><a
name="_Toc348984580"></a><a name="_Toc348984885"></a><a name="_Toc349038049"></a><a
name="_Toc349038351"></a><a name="_Toc349042842"></a><a name="_Toc349642253"></a><a
name="_Toc351912964"></a><a name="_Toc351914985"></a><a name="_Toc351915451"></a><a
name="_Toc361231549"></a><a name="_Toc361232075"></a><a name="_Toc362445373"></a><a
name="_Toc363909340"></a><a name="_Toc364463766"></a><a name="_Toc366078370"></a><a
name="_Toc366078985"></a><a name="_Toc366079970"></a><a name="_Toc366080582"></a><a
name="_Toc366081191"></a><a name="_Toc366505531"></a><a name="_Toc366508900"></a><a
name="_Toc366513401"></a><a name="_Toc366574590"></a><a name="_Toc366578383"></a><a
name="_Toc366578977"></a><a name="_Toc366579569"></a><a name="_Toc366580160"></a><a
name="_Toc366580752"></a><a name="_Toc366581343"></a><a name="_Toc366581935"></a>36.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Unparsing</h2>
<p class=MsoNormal>The following list gives the order in which DFDL properties
are examined when the DFDL unparser is positioned at a particular component in
the DFDL Infoset, and about to unparse and thereby create the bitstream which
is the representation of that component.</p>
<h3><a name="_Toc243112878"></a><a name="_Toc349042845"></a><a
name="_Toc62570281"></a><a name="_Toc322911740"></a><a name="_Toc322912279"></a><a
name="_Toc329093140"></a><a name="_Toc332701653"></a><a name="_Toc332701957"></a><a
name="_Toc332711756"></a><a name="_Toc332712058"></a><a name="_Toc332712359"></a><a
name="_Toc332724275"></a><a name="_Toc332724575"></a><a name="_Toc341102871"></a><a
name="_Toc347241606"></a><a name="_Toc347744799"></a><a name="_Toc348984582"></a><a
name="_Toc348984887"></a><a name="_Toc349038051"></a><a name="_Toc349038353"></a><a
name="_Toc349042844"></a><a name="_Toc351912966"></a><a name="_Toc351914987"></a><a
name="_Toc351915453"></a><a name="_Toc361231551"></a><a name="_Toc361232077"></a><a
name="_Toc362445375"></a><a name="_Toc363909342"></a><a name="_Toc364463768"></a><a
name="_Toc366078372"></a><a name="_Toc366078987"></a><a name="_Toc366079972"></a><a
name="_Toc366080584"></a><a name="_Toc366081193"></a><a name="_Toc366505533"></a><a
name="_Toc366508902"></a><a name="_Toc366513403"></a><a name="_Toc366574592"></a><a
name="_Toc366578385"></a><a name="_Toc366578979"></a><a name="_Toc366579571"></a><a
name="_Toc366580162"></a><a name="_Toc366580754"></a><a name="_Toc366581345"></a><a
name="_Toc366581937"></a><span style='color:black;font-weight:normal'>36.2.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:element
(simple) and dfdl:simpleType</h3>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: calculated value (does not apply to dfdl:simpleType
or to global elements)</i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:inputValueCalc (if set then element is ignored)</p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:outputValueCalc</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Unparsing:
common</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:outputNewLine</li>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:bitOrder</p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:encoding </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:fillByte</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Unparsing:
occurrences (does not apply to dfdl:simpleType)</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>(maxOccurs &gt; 1 or unbounded) or (XSD minOccurs = 0 and
XSD maxOccurs = 1)</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursCountKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;expression&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursCount </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;fixed&quot;,
&quot;implicit&quot; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD minOccurs</li>
<li class=MsoNormal>XSD maxOccurs </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;parsed&quot;
</span></em></li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;stopValue&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:occursStopValue</li>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: conversion </i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:useNilForDefault (does not apply to dfdl:simpleType)</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>&quot;true&quot;</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>None</li>
</ul>
<li class=MsoNormal>&quot;false&quot;</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD default or XSD fixed</li>
</ul>
</ul>
<li class=MsoNormal>XSD nillable (does not apply to dfdl:simpleType)</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:nilKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>&quot;literalValue&quot;, &quot;logicalValue&quot;,
&quot;literalCharacter&quot; </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:nilValue </li>
</ul>
</ul>
</ul>
<li class=MsoNormal>XSD type property </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Number&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:decimalSigned</li>
<li class=MsoNormal>dfdl:representation </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;text&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:textNumberRep</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;standard&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textNumberPattern</li>
<li class=MsoNormal>dfdl:textStandardBase</li>
<li class=MsoNormal>dfdl:textStandardDecimalSeparator</li>
<li class=MsoNormal>dfdl:textStandardGroupingSeparator</li>
<li class=MsoNormal>dfdl:textStandardExponentRep</li>
<li class=MsoNormal>dfdl:textNumberCheckPolicy</li>
<li class=MsoNormal>dfdl:textStandardInfinityRep</li>
<li class=MsoNormal>dfdl:textStandardNaNRep</li>
<li class=MsoNormal>dfdl:textNumberRounding</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraphCxSpFirst style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingMode</p>
<p class=MsoListParagraphCxSpLast style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingIncrement</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textStandardZeroRep</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;zoned&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>d</span></em>fdl:textNumberPattern</li>
<li class=MsoNormal>dfdl:textNumberCheckPolicy</li>
<li class=MsoNormal>dfdl:textNumberRounding</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraphCxSpFirst style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingMode</p>
<p class=MsoListParagraphCxSpLast style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:textNumberRoundingIncrement</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textZonedSignStyle</li>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;</span></em>
</li>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:3.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:byteOrder </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>xs:decimal
and restrictions</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryNumberRep</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;packed&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryPackedSignCodes</li>
<li class=MsoNormal>dfdl:binaryDecimalVirtualPoint</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;bcd&quot;,
&quot;ibm4690Packed&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryDecimalVirtualPoint</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryDecimalVirtualPoint</li>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>xs:float,
xs:double</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryFloatRep </li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;String&quot;
</span></em></li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Calendar&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:representation </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;text&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:calendarPatternKind</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>&quot;<em><span style='font-family:"Arial",sans-serif'>explicit</span></em>&quot;</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarPattern</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:calendarCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarTimeZone</li>
<li class=MsoNormal>dfdl:calendarObserveDST</li>
<li class=MsoNormal>dfdl:calendarFirstDayOfWeek</li>
<li class=MsoNormal>dfdl:calendarDaysInFirstWeek</li>
<li class=MsoNormal>dfdl:calendarLanguage</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:byteOrder</li>
<li class=MsoNormal>dfdl:binaryCalendarRep</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;packed&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:packedDecimalSignCodes</li>
<li class=MsoNormal>dfdl:decimalVirtualPoint</li>
<li class=MsoNormal>dfdl:calendarPatternKind</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>&quot;<em><span style='font-family:"Arial",sans-serif'>explicit</span></em>&quot;</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoListParagraph style='margin-left:5.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:calendarPattern</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarTimeZone</li>
<li class=MsoNormal>dfdl:calendarObserveDST</li>
<li class=MsoNormal>dfdl:calendarFirstDayOfWeek</li>
<li class=MsoNormal>dfdl:calendarDaysInFirstWeek</li>
<li class=MsoNormal>dfdl:calendarCenturyStart</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&nbsp;&quot;bcd&quot;,
&quot;ibm4690Packed&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:decimalVirtualPoint </li>
<li class=MsoNormal>dfdl:calendarPatternKind</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>&quot;<em><span style='font-family:"Arial",sans-serif'>explicit</span></em>&quot;</li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=MsoNormal style='margin-left:4.5in'>dfdl:calendarPattern</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:calendarCheckPolicy</li>
<li class=MsoNormal>dfdl:calendarTimeZone</li>
<li class=MsoNormal>dfdl:calendarObserveDST</li>
<li class=MsoNormal>dfdl:calendarFirstDayOfWeek</li>
<li class=MsoNormal>dfdl:calendarDaysInFirstWeek</li>
<li class=MsoNormal>dfdl:calendarCenturyStart</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binarySeconds&quot;,
&quot;binaryMilliseconds&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:binaryCalendarEpoch</li>
</ul>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Opaque&quot;
</span></em></li>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;Boolean&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:representation </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;text&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:textBooleanTrueRep </li>
<li class=MsoNormal>dfdl:textBooleanFalseRep</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;binary&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:byteOrder</li>
<li class=MsoNormal>dfdl:binaryBooleanTrueRep </li>
<li class=MsoNormal>dfdl:binaryBooleanFalseRep </li>
</ul>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: insertion &amp; framing </i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:leadingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignment</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>not &quot;implicit&quot;</i> </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
</ul>
<li class=MsoNormal>dfdl:representation<em><span style='font-family:"Arial",sans-serif'>
&quot;text&quot; or xs:simpleType 'string'</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:escapeSchemeRef</li>
<li class=MsoNormal>dfdl:lengthKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD maxLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
dfdl:textBooleanTrueRep/dfdl:textBooleanFalseRep</li>
<li class=MsoNormal>dfdl:lengthUnits</li>
<li class=MsoNormal>dfdl:textPadKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:textStringPadCharacter,
dfdl:textNumberPadCharacter, dfdl:textBooleanPadCharacter or
dfdl:textCalendarPadCharacter&nbsp; </li>
<li class=MsoNormal>dfdl:textStringJustification, dfdl:textNumberJustification,
dfdl:textBooleanJustification or dfdl:textCalendarJustification </li>
</ul>
<li class=MsoNormal>dfdl:truncateSpecifiedLengthString</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>not
expression</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:length </li>
<li class=MsoNormal>dfdl:truncateSpecifiedLengthString</li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>expression</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>XSD minLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
dfdl:textOutputMinLength</li>
</ul>
<li class=MsoNormal>dfdl:lengthUnits </li>
<li class=MsoNormal>dfdl:textPadKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:textStringPadCharacter,
dfdl:textNumberPadCharacter, dfdl:textBooleanPadCharacter or
dfdl:textCalendarPadCharacter&nbsp; </li>
<li class=MsoNormal>dfdl:textStringJustification,
dfdl:textNumberJustification, dfdl:textBooleanJustification or
dfdl:textCalendarJustification </li>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;prefixed&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:prefixLengthType </li>
<li class=MsoNormal>dfdl:prefixIncludesPrefixLength </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
<li class=MsoNormal>dfdl:textPadKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:textStringPadCharacter,
dfdl:textNumberPadCharacter, dfdl:textBooleanPadCharacter or
dfdl:textCalendarPadCharacter&nbsp; </li>
<li class=MsoNormal>dfdl:textStringJustification,
dfdl:textNumberJustification, dfdl:textBooleanJustification or
dfdl:textCalendarJustification </li>
<li class=MsoNormal>XSD minLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
dfdl:textOutputMinLength</li>
</ul>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;pattern&quot;,
&quot;delimited&quot;,</span></em> <em><span style='font-family:"Arial",sans-serif'>&quot;endOfParent&quot;</span></em>
</li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:textPadKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:textStringPadCharacter, dfdl:textNumberPadCharacter,
dfdl:textBooleanPadCharacter or dfdl:textCalendarPadCharacter&nbsp; </li>
<li class=MsoNormal>dfdl:textStringJustification,
dfdl:textNumberJustification, dfdl:textBooleanJustification or
dfdl:textCalendarJustification </li>
<li class=MsoNormal>XSD minLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
dfdl:textOutputMinLength</li>
</ul>
</ul>
</ul>
</ul>
<li class=MsoNormal>dfdl:representation<em><span style='font-family:"Arial",sans-serif'>
&quot;binary&quot; or xs:simpleType 'hexBinary'</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:lengthKind </li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>XSD maxLength <em><span style='font-family:"Arial",sans-serif'>or</span></em>
xs:simpleType</li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:length </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;prefixed&quot;
</span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal>dfdl:prefixLengthType </li>
<li class=MsoNormal>dfdl:prefixIncludesPrefixLength </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;delimited&quot;,
&quot;endOfParent&quot; </span></em></li>
<ul style='margin-top:0in' type=square>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>None</span></em></li>
</ul>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:initiator </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy (does not apply to
dfdl:simpleType)</li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:terminator</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy (does not apply to
dfdl:simpleType)</li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:trailingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<h3><a name="_Toc243112879"></a><a name="_Toc349042847"></a><a
name="_Toc62570282"></a><a name="_Toc322911742"></a><a name="_Toc322912281"></a><a
name="_Toc329093142"></a><a name="_Toc332701655"></a><a name="_Toc332701959"></a><a
name="_Toc332711758"></a><a name="_Toc332712060"></a><a name="_Toc332712361"></a><a
name="_Toc332724277"></a><a name="_Toc332724577"></a><a name="_Toc341102873"></a><a
name="_Toc347241608"></a><a name="_Toc347744801"></a><a name="_Toc348984584"></a><a
name="_Toc348984889"></a><a name="_Toc349038053"></a><a name="_Toc349038355"></a><a
name="_Toc349042846"></a><a name="_Toc351912968"></a><a name="_Toc351914989"></a><a
name="_Toc351915455"></a><a name="_Toc361231553"></a><a name="_Toc361232079"></a><a
name="_Toc362445377"></a><a name="_Toc363909344"></a><a name="_Toc364463770"></a><a
name="_Toc366078374"></a><a name="_Toc366078989"></a><a name="_Toc366079974"></a><a
name="_Toc366080586"></a><a name="_Toc366081195"></a><a name="_Toc366505535"></a><a
name="_Toc366508904"></a><a name="_Toc366513405"></a><a name="_Toc366574594"></a><a
name="_Toc366578387"></a><a name="_Toc366578981"></a><a name="_Toc366579573"></a><a
name="_Toc366580164"></a><a name="_Toc366580756"></a><a name="_Toc366581347"></a><a
name="_Toc366581939"></a><span style='color:black;font-weight:normal'>36.2.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:element
(complex)</h3>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: common</i></p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:outputNewLine</li>
</ul>
</ul>
<p class=nobreak style='margin-left:71.7pt;text-indent:-17.85pt'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:bitOrder</p>
<p class=nobreak style='margin-left:71.7pt;text-indent:-17.85pt'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:encoding </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:fillByte</li>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: nillable</i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>XSD nillable <i>(does not apply to dfdl:simpleType)</i></p>
<p class=nobreak style='margin-left:2.0in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:nilKind </p>
<p class=nobreak style='margin-left:2.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>&quot;literalValue&quot; </i></p>
<p class=nobreak style='margin-left:3.0in;text-indent:-.25in'><span
style='font-family:Wingdings'>&sect;<span style='font:7.0pt "Times New Roman"'>&nbsp;
</span></span>dfdl:nilValue (must be &quot;%ES;&quot;)</p>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Unparsing:
occurrences</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>(maxOccurs &gt; 1 or unbounded) or (XSD minOccurs = 0 and
XSD maxOccurs = 1)</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:occursCountKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;expression&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:occursCount </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;fixed&quot;</span></em>,
<em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>XSD minOccurs</li>
<li class=MsoNormal>XSD maxOccurs </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;parsed&quot;
</span></em></li>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: insertion &amp; framing </i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:leadingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in'><span
style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignment </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>not
&quot;implicit&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:alignmentUnits </li>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in'><span
style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:initiator</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy</li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
</ul>
<li class=MsoNormal>dfdl:lengthKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:length </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;prefixed&quot;
</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:prefixLengthType </li>
<li class=MsoNormal>dfdl:prefixIncludesPrefixLength </li>
<li class=MsoNormal>dfdl:lengthUnits </li>
</ul>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;implicit&quot;,
&quot;pattern&quot;, &quot;delimited&quot;, &quot;endOfParent&quot; </span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>None</span></em></li>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:terminator</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:nilValueDelimiterPolicy</li>
<li class=MsoNormal>dfdl:emptyValueDelimiterPolicy </li>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:trailingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<h3><a name="_Toc243112880"></a><a name="_Toc349042848"></a><a
name="_Toc62570283"><span style='color:black;font-weight:normal'>36.2.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span>dfdl:sequence
and dfdl:group (when reference is a sequence)</a></h3>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>Unparsing:
hidden (xs:sequence only)</span></em></li>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:hiddenGroupRef</li>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: common</i></p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:outputNewLine</li>
</ul>
</ul>
<p class=nobreak style='margin-left:71.7pt;text-indent:-17.85pt;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:bitOrder</p>
<p class=nobreak style='margin-left:71.7pt;text-indent:-17.85pt;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:encoding </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:utf16Width</li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:fillByte</li>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: insertion &amp; framing</i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:leadingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignment </p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>not &quot;implicit&quot;</i></p>
<p class=nobreak style='margin-left:2.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:initiator</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:separator </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:separatorPosition</li>
<li class=MsoNormal>dfdl:separatorSuppressionPolicy</li>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:terminator</p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:trailingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<h3><a name="_Toc349042850"></a><a name="_Toc62570284"></a><a
name="_Toc322912285"></a><a name="_Toc329093146"></a><a name="_Toc332701659"></a><a
name="_Toc332701963"></a><a name="_Toc332711761"></a><a name="_Toc332712063"></a><a
name="_Toc332712364"></a><a name="_Toc332724280"></a><a name="_Toc332724580"></a><a
name="_Toc341102876"></a><a name="_Toc347241611"></a><a name="_Toc347744804"></a><a
name="_Toc348984587"></a><a name="_Toc348984892"></a><a name="_Toc349038056"></a><a
name="_Toc349038358"></a><a name="_Toc349042849"></a><a name="_Toc351912971"></a><a
name="_Toc351914992"></a><a name="_Toc351915458"></a><a name="_Toc361231556"></a><a
name="_Toc361232082"></a><a name="_Toc362445380"></a><a name="_Toc363909347"></a><a
name="_Toc364463773"></a><a name="_Toc366078377"></a><a name="_Toc366078992"></a><a
name="_Toc366079977"></a><a name="_Toc366080589"></a><a name="_Toc366081198"></a><a
name="_Toc366505538"></a><a name="_Toc366508907"></a><a name="_Toc366513408"></a><a
name="_Toc366574597"></a><a name="_Toc366578390"></a><a name="_Toc366578984"></a><a
name="_Toc366579576"></a><a name="_Toc366580167"></a><a name="_Toc366580759"></a><a
name="_Toc366581350"></a><a name="_Toc366581942"></a><span style='color:black;
font-weight:normal'>36.2.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:choice and dfdl:group (when reference is a choice)</h3>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: common</i></p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:outputNewLine</li>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:bitOrder</p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:encoding </p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>'UTF-16' 'UTF-16BE' 'UTF-16LE'</li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:utf16Width </li>
</ul>
</ul>
<li class=MsoNormal>dfdl:encodingErrorPolicy</li>
<li class=MsoNormal>dfdl:fillByte</li>
</ul>
</ul>
<p class=nobreak style='margin-left:.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>Unparsing: insertion &amp; framing </i></p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:leadingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignment </p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><i>not &quot;implicit&quot;</i></p>
<p class=nobreak style='margin-left:2.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:initiator</p>
<ul style='margin-top:0in' type=disc>
<ul style='margin-top:0in' type=circle>
<li class=MsoNormal>dfdl:choiceLengthKind </li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal><em><span style='font-family:"Arial",sans-serif'>&quot;explicit&quot;</span></em></li>
<ul style='margin-top:0in' type=disc>
<li class=MsoNormal>dfdl:choiceLength</li>
</ul>
</ul>
</ul>
</ul>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:terminator</p>
<p class=nobreak style='margin-left:1.0in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:"Courier New"'>o<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
</span></span>dfdl:trailingSkip</p>
<p class=nobreak style='margin-left:1.5in;text-indent:-.25in;page-break-after:
auto'><span style='font-family:Symbol'>&middot;<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span>dfdl:alignmentUnits </p>
<p class=MsoNormal style='margin:0in'><span style='font-family:"Times New Roman",serif'>&nbsp;</span></p>
</div>
<div><br clear=all>
<hr align=left size=1 width="33%">
<div id=ftn1>
<p class=MsoFootnoteText><a href="#_ftnref1" name="_ftn1" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[1]</span></span></span></a>
ASN.1 with any of the prescribed encoding rules: Basic Encoding Rules (BER),
Distinguished Encoding Rules (DER), Canonical Encoding Rules (CER) [<a
href="#a_ASN1CER">ASN1CER</a>] or Packed Encoding Rules (PER) [<a
href="#a_ASN1PER">ASN1PER</a>]</p>
</div>
<div id=ftn2>
<p class=MsoFootnoteText><a href="#_ftnref2" name="_ftn2" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[2]</span></span></span></a>
Additional examples of descriptive approaches: ASN1 Encoding Control Notation
(also known as ITU-T X.692) [<a href="#ref_ASN1ECN">ASN1ECN</a>], BFD:&nbsp;
Binary Format Description (BFD) Language [<a href="#a_BFD">BFD</a>]. The
largest set of examples of descriptive approaches are all the various
proprietary ad-hoc format description languages found almost universally in
every commercial database, analytical, or enterprise software system that must
take in data. </p>
</div>
<div id=ftn3>
<p class=MsoFootnoteText><a href="#_ftnref3" name="_ftn3" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[3]</span></span></span></a>
DFDL uses the term &#8216;unparsing&#8217; for symmetry with parsing. This is
roughly equivalent to the terms &#8216;marshalling&#8217; or
&#8216;serialization&#8217;, but those terms both connote a sequencing order
that DFDL does not impose for all formats, so DFDL usesits own distinct term.</p>
</div>
<div id=ftn4>
<p class=MsoFootnoteText><a href="#_ftnref4" name="_ftn4" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[4]</span></span></span></a>
Also, to support PSVI [PSVI] construction.</p>
</div>
<div id=ftn5>
<p class=MsoFootnoteText><a href="#_ftnref5" name="_ftn5" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[5]</span></span></span></a>
<strong><span style='font-weight:normal'>The purpose of this member is to support
construction of a W3C standard Post Schema Validation Infoset (PSVI) </span></strong>[PSVI]<strong><span style='font-weight:normal'> from a DFDL Infoset.</span></strong></p>
</div>
<div id=ftn6>
<p class=MsoFootnoteText><a href="#_ftnref6" name="_ftn6" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[6]</span></span></span></a>
The purpose of unions is to allow multiple constraints via facets such as
multiple independent range restrictions on numbers. This enhances the ability
to do rich validation of data.</p>
</div>
<div id=ftn7>
<p class=MsoFootnoteText><a href="#_ftnref7" name="_ftn7" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[7]</span></span></span></a>
By reserved it is intended that conforming DFDL v1.0 implementations MUST NOT
assign semantics to them.</p>
</div>
<div id=ftn8>
<p class=MsoFootnoteText><a href="#_ftnref8" name="_ftn8" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[8]</span></span></span></a>
Note that the trailing slash is required.</p>
</div>
<div id=ftn9>
<p class=MsoFootnoteText><a href="#_ftnref9" name="_ftn9" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[9]</span></span></span></a>
The rationale for single-assignment variables is to keep DFDL schemas <i>declarative</i>
by preventing variables from being used as algorithmic accumulators. See the Appendix B: Rationale for Single-Assignment Variables.</p>
</div>
<div id=ftn10>
<p class=MsoFootnoteText><a href="#_ftnref10" name="_ftn10" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[10]</span></span></span></a>
A &quot;top-down&quot; <a href="http://dictionary.reference.com/browse/parser"><span
style='color:windowtext;text-decoration:none'>parser</span></a> built from a
set of <a href="http://dictionary.reference.com/browse/mutually-recursive"><span
style='color:windowtext;text-decoration:none'>mutually-recursive</span></a>
procedures or a non-recursive equivalent where each such procedure usually implements
one of the <a href="http://dictionary.reference.com/browse/productions"><span
style='color:windowtext;text-decoration:none'>productions</span></a> of the <a
href="http://dictionary.reference.com/browse/grammar"><span style='color:windowtext;
text-decoration:none'>grammar</span></a>. Thus, the structure of the resulting
program closely mirrors that of the grammar it recognizes. See [<a href="#a_RDP">RDP</a>].</p>
</div>
<div id=ftn11>
<p class=MsoFootnoteText><a href="#_ftnref11" name="_ftn11" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[11]</span></span></span></a>
For dfdl:sequenceKind, see Section <span
class=MsoHyperlink>14</span> Sequence
Groups.</p>
</div>
<div id=ftn12>
<p class=MsoFootnoteText><a href="#_ftnref12" name="_ftn12" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[12]</span></span></span></a>
For dfdl:floating elements, see Section <span
class=MsoHyperlink>14.4</span> Floating
Elements.</p>
</div>
<div id=ftn13>
<p class=MsoFootnoteText><a href="#_ftnref13" name="_ftn13" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[13]</span></span></span></a>
For optional and array elements, see Section <span
class=MsoHyperlink>16</span> Properties
for Array Elements and Optional Elements.</p>
</div>
<div id=ftn14>
<p class=MsoFootnoteText><a href="#_ftnref14" name="_ftn14" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[14]</span></span></span></a>
For dfdl:nilValueDelimiterPolicy, see Section 13.16<span class=MsoHyperlink> </span><a
href="#_Properties_for_Nillable">Properties for Nillable Elements</a>.</p>
</div>
<div id=ftn15>
<p class=MsoFootnoteText><a href="#_ftnref15" name="_ftn15" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[15]</span></span></span></a>
For dfdl:emptyValueDelimiterPolicy, see Section <span
class=MsoHyperlink>12.2</span> <span
class=InternetLink>Properties for Specifying Delimiters</span>.</p>
</div>
<div id=ftn16>
<p class=MsoFootnoteText><a href="#_ftnref16" name="_ftn16" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[16]</span></span></span></a>
<span class=FootnoteTextChar>DFDL discriminators are described in Section: </span><span class=MsoHyperlink>7.6</span><span class=FootnoteTextChar> </span><span class=MsoHyperlink>The dfdl:discriminator Statement Annotation Element</span><span
class=FootnoteTextChar>.</span></p>
</div>
<div id=ftn17>
<p class=MsoFootnoteText><a href="#_ftnref17" name="_ftn17" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[17]</span></span></span></a>
For dfdl:initiator and dfdl:initiatedContent, see Section <span class=MsoHyperlink>12.2</span> Properties
for Specifying Delimiters.</p>
</div>
<div id=ftn18>
<p class=MsoFootnoteText><a href="#_ftnref18" name="_ftn18" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[18]</span></span></span></a>
For dfdl:choiceDispatchKey and dfdl:choiceBranchKey, see Section <span class=MsoHyperlink>15.1.2</span> Resolving
Choices via Direct Dispatch.</p>
</div>
<div id=ftn19>
<p class=MsoFootnoteText><a href="#_ftnref19" name="_ftn19" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[19]</span></span></span></a>&nbsp;
DFDL asserts are described in Section <span
class=MsoHyperlink>7.5</span> The
dfdl:assert Statement Annotation Element.</p>
</div>
<div id=ftn20>
<p class=MsoFootnoteText><a href="#_ftnref20" name="_ftn20" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[20]</span></span></span></a>
This is a corner case that only happens when type is xs:string or xs:hexBinary
and the maxLength facet is 0. Such an element can only be of length 0. </p>
</div>
<div id=ftn21>
<p class=MsoFootnoteText><a href="#_ftnref21" name="_ftn21" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[21]</span></span></span></a>
It is a Schema Definition Error if a complex element has XSD nillable
&#8216;true&#8217; and dfdl:lengthKind &#8216;implicit&#8217;. </p>
</div>
<div id=ftn22>
<p class=MsoFootnoteText><a href="#_ftnref22" name="_ftn22" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[22]</span></span></span></a>
The rationale for this is that otherwise this could give rise to misleading
error messages where the parser reported that required child elements were
missing required occurrences. (This is consistent with XML Schema validation,
where if a required element is missing, it gets reported as such, and there is
nothing reported about its children).</p>
</div>
<div id=ftn23>
<p class=MsoFootnoteText><a href="#_ftnref23" name="_ftn23" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[23]</span></span></span></a>
Property dfdl:occursCountKind is defined in Section <span
class=InternetLink>16.1</span>.</p>
</div>
<div id=ftn24>
<p class=MsoFootnoteText><a href="#_ftnref24" name="_ftn24" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[24]</span></span></span></a>
Property dfdl:occursCount is defined in Section <span
class=InternetLink>16</span>.</p>
</div>
<div id=ftn25>
<p class=MsoFootnoteText><a href="#_ftnref25" name="_ftn25" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[25]</span></span></span></a>
For the XSD fixed property see Section 5.3.7.</p>
</div>
<div id=ftn26>
<p class=MsoFootnoteText><a href="#_ftnref26" name="_ftn26" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[26]</span></span></span></a>
For dfdl:useNilForDefault see Section <span
class=MsoHyperlink>13.16</span>.</p>
</div>
<div id=ftn27>
<p class=MsoFootnoteText><a href="#_ftnref27" name="_ftn27" title=""><span
class=MsoFootnoteReference><span style='font-size:8.0pt'><span
class=MsoFootnoteReference><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>[27]</span></span></span></span></a>
If other than &#8216;none&#8217;, either an initiator, terminator or both must
have been found in the data stream.</p>
</div>
<div id=ftn28>
<p class=MsoFootnoteText><a href="#_ftnref28" name="_ftn28" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[28]</span></span></span></a>
For dfdl:checkConstraints function see Section 18.5.3</p>
</div>
<div id=ftn29>
<p class=MsoFootnoteText><a href="#_ftnref29" name="_ftn29" title=""><span
class=MsoFootnoteReference><span style='font-size:8.0pt'><span
class=MsoFootnoteReference><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>[29]</span></span></span></span></a>
If other than &#8216;none&#8217;, either an initiator, terminator or both must
have been found in the data stream.</p>
</div>
<div id=ftn30>
<p class=MsoFootnoteText><a href="#_ftnref30" name="_ftn30" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[30]</span></span></span></a>
The concept of native-endian is avoided in DFDL since a DFDL schema containing
such a property binding would not contain a complete description of data, but
rather an incomplete one which would behave differently based on
characteristics of the machine and implementation where the DFDL processor is
executed. In DFDL this same behavior is achieved through the use of explicit
parameterization using DFDL variables to set dfdl:byteOrder. See Section <span class=MsoHyperlink>7.7.1.2</span> Predefined
Variables.</p>
</div>
<div id=ftn31>
<p class=MsoFootnoteText><a href="#_ftnref31" name="_ftn31" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[31]</span></span></span></a>
IANA is the Internet Assigned Names Authority. See [IANA]</p>
</div>
<div id=ftn32>
<p class=MsoFootnoteText><a href="#_ftnref32" name="_ftn32" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[32]</span></span></span></a>
CCSID stands for Coded Character Set ID, a decimal number syntax for a coded
character set specifier. [CCSID]</p>
</div>
<div id=ftn33>
<p class=MsoFootnoteText><a href="#_ftnref33" name="_ftn33" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[33]</span></span></span></a>
The concept of native character encoding is avoided in DFDL since a DFDL schema
containing such a property binding would not contain a complete description of
data, but rather an incomplete one which would behave differently based on
characteristics of the operating environment where the DFDL processor executes.
In DFDL this same behavior is achieved through the use of explicit parameterization
using DFDL variables to set dfdl:encoding. See Section <span class=MsoHyperlink>7.7.1.2</span> Predefined
Variables.</p>
</div>
<div id=ftn34>
<p class=MsoFootnoteText><a href="#_ftnref34" name="_ftn34" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[34]</span></span></span></a>
Used by data format MIL-STD-2045</p>
</div>
<div id=ftn35>
<p class=MsoFootnoteText><a href="#_ftnref35" name="_ftn35" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[35]</span></span></span></a>
For dfdl:lengthUnits, see Section <span
class=MsoHyperlink>12.3</span> Properties
for Specifying Lengths.</p>
</div>
<div id=ftn36>
<p class=MsoFootnoteText><a href="#_ftnref36" name="_ftn36" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[36]</span></span></span></a>
For dfdl:binaryNumberRep, see Section <span
class=MsoHyperlink>13.7</span> Properties
Specific to Number with Binary Representation.</p>
</div>
<div id=ftn37>
<p class=MsoFootnoteText><a href="#_ftnref37" name="_ftn37" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[37]</span></span></span></a>
For dfdl:binaryNumberRep, see Section <span
class=MsoHyperlink>13.7</span> Properties
Specific to Number with Binary Representation.</p>
</div>
<div id=ftn38>
<p class=MsoFootnoteText><a href="#_ftnref38" name="_ftn38" title=""><span
class=FootnoteCharacters><span class=FootnoteCharacters><span style='font-size:
9.0pt;font-family:"Arial",sans-serif'>[38]</span></span></span></a>This feature
allows DFDL to describe the needed &#8220;one more level&#8221; of prefix that
is needed for modeling an ASN.1 format, but without the complexities of general
recursion.</p>
</div>
<div id=ftn39>
<p class=MsoFootnoteText><a href="#_ftnref39" name="_ftn39" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[39]</span></span></span></a>
Type decimal must be a minimum of 8 bits because lengthUnits 'bits' is not
allowed for xs:decimal.</p>
</div>
<div id=ftn40>
<p class=MsoFootnoteText><a href="#_ftnref40" name="_ftn40" title=""><span
class=MsoFootnoteReference><span style='font-size:8.0pt'><span
class=MsoFootnoteReference><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>[40]</span></span></span></span></a>
This is the smallest pattern that contains all the digit-only symbols. SSS is
the minimum precision that must be supported for fractional seconds, but in can
be more, hence why 'not less than 9 bytes'.</p>
</div>
<div id=ftn41>
<p class=MsoFootnoteText><a href="#_ftnref41" name="_ftn41" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[41]</span></span></span></a>
Reference for this CA Realia 0x20 overpunch for negative sign is the article:
&quot;EBCDIC to ASCII Conversion of Signed Fields&quot; [CARealia] where it
says:</p>
<p class=MsoFootnoteText>COBOL compilers that run on ASCII platforms have a
&quot;signed&quot; data type that operates in a similar manner to the EBCDIC
Signed field -- that is, they over punch the sign on the LSD (Least Significant
Digit).&nbsp; However, this is not standardized in ASCII, and different
compilers use different overpunch codes.&nbsp; For example, Computer
Associates' Realia compiler uses a 30 hex for positive values and a 20 hex for
negative values, but Micro Focus&reg; and Microsoft&reg; use 30 hex for
positive values and 70 hex for negative values.</p>
</div>
<div id=ftn42>
<p class=MsoFootnoteText><a href="#_ftnref42" name="_ftn42" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[42]</span></span></span></a>
Implementations which use current versions of the popular ICU library will
allow 309 digits as <i>maximum integer digits</i>. </p>
</div>
<div id=ftn43>
<p class=MsoFootnoteText><a href="#_ftnref43" name="_ftn43" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[43]</span></span></span></a>
Note that XSD 1.1 moved to IEEE 754-2008 only because of new decimal support, and
not for enhanced float support. That's why in XSD 1.1 there are still just the xs:float
and xs:double built-in types. Any future support for half-precision and quad-precision
in XSD would very likely be implemented by adding new built-in types that derive
from xs:anySimpleType.&nbsp; It is likely therefore that future DFDL support for
half-precision and quad-precision will build on XSD.</p>
</div>
<div id=ftn44>
<p class=MsoFootnoteText><a href="#_ftnref44" name="_ftn44" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[44]</span></span></span></a>
Note that DFDL does not support an isolated month, day, or year that is not
part of a greater date type, as it does not support the XSD simple types
xs:gMonth, xs:gDay, and xs:gYear. </p>
</div>
<div id=ftn45>
<p class=MsoFootnoteText><a href="#_ftnref45" name="_ftn45" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[45]</span></span></span></a>
Absent representation implies Processing Error for &#8216;implicit&#8217; when
less than or equal to XSD minOccurs.</p>
</div>
<div id=ftn46>
<p class=MsoFootnoteText><a href="#_ftnref46" name="_ftn46" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[46]</span></span></span></a>
Absent representation always implies zero-length. Nil, empty, and normal
representations can also be zero-length with the right combinations of
properties. See Section <span
class=MsoHyperlink>9.2.5</span> <span
class=MsoHyperlink>Zero-length Representation</span>.</p>
</div>
<div id=ftn47>
<p class=MsoFootnoteText><a href="#_ftnref47" name="_ftn47" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[47]</span></span></span></a>
An Infoset item value of nil means the Infoset item <b>[nilled]</b> member is
true, and the <b>[dataValue]</b> member has no value. See Section <span class=MsoHyperlink>4.2.2</span> <span
class=MsoHyperlink>Element Information Items</span>.</p>
</div>
<div id=ftn48>
<p class=MsoFootnoteText><a href="#_ftnref48" name="_ftn48" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[48]</span></span></span></a><span
lang=EN-GB>The NTE segment in the X12 EDI standard is an example of a floating
element</span><span lang=EN-GB style='font-family:"Helv",sans-serif'>.</span></p>
</div>
<div id=ftn49>
<p class=MsoFootnoteText><a href="#_ftnref49" name="_ftn49" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[49]</span></span></span></a>
Because DFDL v1.0 does not allow recursive definitions, the notion of unbounded
here is limited by the depth of the DFDL schema, so is not truly unbounded as
it would be if recursion were allowed.</p>
</div>
<div id=ftn50>
<p class=MsoFootnoteText><a href="#_ftnref50" name="_ftn50" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[50]</span></span></span></a>
The &#8216;%&#8217; character needs escaping as part of DFDL syntax when used
as a literal character in DFDL properties. It is escaped by doubling it, i.e.,
preceding it by another &#8216;%&#8217; character. In this examplethe
dfdl:escapeEscapeCharacter is defined to be a single '%' character in the data
stream. </p>
</div>
<div id=ftn51>
<p class=nobreak><a href="#_ftnref51" name="_ftn51" title=""><span
class=MsoFootnoteReference><span style='font-size:9.0pt'><span
class=MsoFootnoteReference><span style='font-size:9.0pt;font-family:"Arial",sans-serif'>[51]</span></span></span></span></a><span
style='font-size:9.0pt'> It is anticipated this appendix will be migrated into
a separate document to facilitate the addition of new encodings without
revising the DFDL specification.</span></p>
</div>
<div id=ftn52>
<p class=MsoFootnoteText><a href="#_ftnref52" name="_ftn52" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[52]</span></span></span></a>
Though US-ASCII contains only 128 characters DFDL assumes the US-ASCII encoding
to use one character per 8-bit byte.</p>
</div>
<div id=ftn53>
<p class=nobreak><a href="#_ftnref53" name="_ftn53" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:10.0pt;font-family:"Arial",sans-serif'>[53]</span></span></span></a>
<span style='font-size:9.0pt'>This list is maintained separately from the other
references in the specification to facilitate future migration of this material
into a separate document.</span></p>
</div>
<div id=ftn54>
<p class=MsoFootnoteText><a href="#_ftnref54" name="_ftn54" title=""><span
class=MsoFootnoteReference><span class=MsoFootnoteReference><span
style='font-size:9.0pt;font-family:"Arial",sans-serif'>[54]</span></span></span></a>
X-DFDL-US-ASCII-7-BIT-PACKED is a DFDL standard encoding, which uses the
US-ASCII characters, but each code unit is stored occupying only 7 bits, not a
whole 8-bit-byte. DFDL standard encodings are defined in a separate
specification. See Section <span
class=MsoHyperlink>33</span> Appendix
D: DFDL Standard Encodings.</p>
</div>
</div>
</body>
</html>