start = report-template report-template = element report-template{((introduction)?),((table-of-contents)?),((section)*)} introduction = element introduction{((introduction__title)?),((introduction__subtitle)?),(((paragraph)|(table)|(fixed-table)|(data-grid))*)} introduction__title = element title{(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} text__small = element small{(((text)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} text__bold = element bold{(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} text__large = element large{(((text)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} text__italic = element italic{(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} text__line-break = element br{empty} text__calculated-value = element calculated-value{(attribute expression{xsd:string})} text__link = element a{(attribute href{xsd:string}),(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} introduction__subtitle = element subtitle{(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} paragraph = element p{(attribute api{"yes"|"no"}?),(attribute export{"yes"|"no"}?),(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*),(((table-named-input)|(table-named-selection-input)|(table-field-input)|(table-field-selection-input)|(grid-with-row-source)|(grid-with-variable-rows))?),(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} table-named-input = element input{(attribute name{xsd:string}),(attribute type{"short-text"|"long-text"|"rich-text"|"number"|"month"|"date"|"checkbox"}),(attribute from-report{xsd:string}?),(attribute default-from-report{xsd:string}?),(attribute read-only{"yes"|"no"}?),(attribute hummingbird-id{xsd:string}?)} table-named-selection-input = element input{(attribute name{xsd:string}),(attribute type{"single-select"|"multi-select"}),(attribute from-report{xsd:string}?),(attribute default-from-report{xsd:string}?),(attribute read-only{"yes"|"no"}?),(attribute hummingbird-id{xsd:string}?),((calculated-options)|((option)*))} calculated-options = element calculated-options{(attribute expression{xsd:string})} option = element option{(attribute id{xsd:string}),(text)} table-field-input = element input{(attribute field{xsd:string}),(attribute type{"short-text"|"long-text"|"rich-text"|"number"|"month"|"date"|"checkbox"}),(attribute read-only{"yes"|"no"}?),(attribute hummingbird-id{xsd:string}?)} table-field-selection-input = element input{(attribute field{xsd:string}),(attribute type{"single-select"|"multi-select"}),(attribute read-only{"yes"|"no"}?),(attribute hummingbird-id{xsd:string}?),((calculated-options)|((option)*))} grid-with-row-source = element input{(attribute name{xsd:string}),(attribute type{"grid"}),(attribute from-report{xsd:string}?),(attribute read-only{"yes"|"no"}?),(attribute hummingbird-id{xsd:string}?),(attribute hummingbird-cluster{xsd:string}?),(grid-with-row-source__rows-from),(grid-with-row-source__columns)} grid-with-row-source__rows-from = element rows-from{(attribute expression{xsd:string})} grid-with-row-source__columns = element columns{(grid-with-row-source__name-column),(((grid-with-row-source__column)|(grid-with-variable-rows__column))*)} grid-with-row-source__name-column = element column{(attribute width{xsd:integer}?),(text)} grid-with-row-source__column = element column{(attribute width{xsd:integer}?),(text),((grid-with-row-source__input)|(grid-with-row-source__selection-input))} grid-with-row-source__input = element input{(attribute field{xsd:string}),(attribute type{"long-text"|"short-text"|"email"|"date"|"number"|"checkbox"}),(attribute required{"yes"|"no"}?),(attribute read-only{"yes"|"no"}?)} grid-with-row-source__selection-input = element input{(attribute field{xsd:string}),(attribute type{"single-select"|"multi-select"}),(attribute required{"yes"|"no"}?),(attribute read-only{"yes"|"no"}?),((calculated-options)|((option)*))} grid-with-variable-rows__column = element column{(attribute width{xsd:integer}?),(text),((grid-with-variable-rows__input)|(grid-with-variable-rows__selection-input))} grid-with-variable-rows__input = element input{(attribute name{xsd:string}),(attribute type{"long-text"|"short-text"|"email"|"date"|"number"|"checkbox"}),(attribute required{"yes"|"no"}?),(attribute read-only{"yes"|"no"}?)} grid-with-variable-rows__selection-input = element input{(attribute name{xsd:string}),(attribute type{"single-select"|"multi-select"}),(attribute required{"yes"|"no"}?),(attribute read-only{"yes"|"no"}?),((grid-with-variable-rows__selection-input__calculated-options)|((grid-with-variable-rows__selection-input__option)*))} grid-with-variable-rows__selection-input__calculated-options = element calculated-options{(attribute expression{xsd:string})} grid-with-variable-rows__selection-input__option = element option{(attribute id{xsd:string}),(text)} grid-with-variable-rows = element input{(attribute name{xsd:string}),(attribute type{"grid"}),(attribute from-report{xsd:string}?),(attribute read-only{"yes"|"no"}?),(attribute hummingbird-id{xsd:string}?),(attribute hummingbird-cluster{xsd:string}?),(grid-with-variable-rows__columns)} grid-with-variable-rows__columns = element columns{((grid-with-variable-rows__column)*)} table = element table{(attribute api{"yes"|"no"}?),(attribute export{"yes"|"no"}?),(attribute background{"red"|"green"|"bright-green"|"yellow"|"dark-yellow"|"orange"|"pink"|"dark-pink"|"light-blue"|"white"|"grey"|"dark-grey"|"light-grey"|"black"}?),(attribute border{"red"|"green"|"bright-green"|"yellow"|"dark-yellow"|"orange"|"pink"|"dark-pink"|"light-blue"|"white"|"grey"|"dark-grey"|"light-grey"|"black"}?),((table__columns)?),((table__row)*)} table__columns = element columns{((table__column)*)} table__column = element column{(attribute width{xsd:integer{minInclusive="1"}})} table__row = element row{(attribute background{"red"|"green"|"bright-green"|"yellow"|"dark-yellow"|"orange"|"pink"|"dark-pink"|"light-blue"|"white"|"grey"|"dark-grey"|"light-grey"|"black"}?),(attribute border{"red"|"green"|"bright-green"|"yellow"|"dark-yellow"|"orange"|"pink"|"dark-pink"|"light-blue"|"white"|"grey"|"dark-grey"|"light-grey"|"black"}?),((table__cell)*)} table__cell = element cell{(attribute background{"red"|"green"|"bright-green"|"yellow"|"dark-yellow"|"orange"|"pink"|"dark-pink"|"light-blue"|"white"|"grey"|"dark-grey"|"light-grey"|"black"}?),(attribute border{"red"|"green"|"bright-green"|"yellow"|"dark-yellow"|"orange"|"pink"|"dark-pink"|"light-blue"|"white"|"grey"|"dark-grey"|"light-grey"|"black"}?),(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*),(((table-named-input)|(table-named-selection-input)|(table-field-input)|(table-field-selection-input))?),(((text)|(text__small)|(text__large)|(text__bold)|(text__italic)|(text__line-break)|(text__calculated-value)|(text__link))*)} fixed-table = element fixed-table{(attribute api{"yes"|"no"}?),(attribute export{"yes"|"no"}?),(attribute code{xsd:string{pattern="FT[0-9]{3}[A-Z]?"}}),(attribute hummingbird-id{xsd:string}?),(attribute ft018b-clustered{"yes"|"no"}?)} data-grid = element data-grid{(attribute api{"yes"|"no"}?),(attribute export{"yes"|"no"}?),(attribute code{xsd:string{pattern="DG[0-9]{3}[A-Z]?"}}),(attribute hummingbird-id{xsd:string}?)} table-of-contents = element table-of-contents{empty} section = element section{(attribute api{"yes"|"no"}?),(attribute export{"yes"|"no"}?),(attribute feature-flag{xsd:string}?),(section__heading),((section__impact-stories)|(section__email-report)|(section__activity-report)|(section__outcome-report)|(section__project-partners)|(progress-report)|(plan-report)|(((paragraph)|(table)|(fixed-table)|(data-grid))*))} section__heading = element heading{(text)} section__impact-stories = element impact-stories{empty} section__email-report = element email-report{empty} section__activity-report = element activity-report{empty} section__outcome-report = element outcome-report{empty} section__project-partners = element project-partners{empty} progress-report = element progress-report{empty} plan-report = element plan-report{empty}