Support Center

Use Google to find help fast. For example, search on “xpressdox choosefromlist”.


Click here for email support.

Alphabetic command listAlphabetic List of Commands and Functions

Command or Function Name Description and Examples
AlignCaption Sets the alignment of the caption for specific data elements

«AlignCaption(FirstName,LastName,Top)»

AlignCaptions Sets whether captions on the interview should be aligned left, right or top

«AlignCaptions(Right)»

«AlignCaptions(Left)»

«AlignCaptions(Top)»

AlignErrorMessages Sets whether error messages (on the web interview) should be aligned top or bottom

«AlignErrorMessages(Top)»

AppendPDF Append a PDF file to the assembled (PDF) document

«AppendPDF(PDFFileName)»

«AppendPDF('Survey Agreement.pdf')»

«AppendPDF('Survey Agreement.pdf|Non-disclosure Agreement.pdf')»

AppendVr Append values to the end of a variable

«AppendVr('List',',')»

«AppendVr('List',',',PartyName)»

ApplyRulesToDataset Apply Rules to the Dataset in the absence of an interview

«ApplyRulesToDataset(Yes)»

«ApplyRulesToDataset(IgnoreSoftRules)»

ArrayAppendVr Append a value to the value of an array element

«ArrayAppendVr('contacts','FullName',' ',Surname)»

ArrayClear Removes all entries from an array

«ArrayClear('Transactions')»

ArrayConcat Concatenate one array into another

«ArrayConcat('AllContacts','ForeignContacts')»

ArrayCount Get the number of elements in an array

«ArrayCount('A')»

ArrayDelete Delete an array element

«ArrayDelete('contacts','dependants')»

ArrayGetV Get the value of an array element

«ArrayGetV('contacts','dependants')»

«ArrayGetV('contacts',3)»

ArrayGetVn Get the value of an array element as numeric where the context requires it

«ArrayGetVn('contacts','dependants')»

ArrayIncrementV Increment the value of an array element

«ArrayIncrementV('contacts','dependants')»

«ArrayIncrementV('contacts','dependants',count(Child))»

ArrayIncrementVr Increment the value of an array element, and remove the paragraph

«ArrayIncrementVr('contacts','dependants')»

«ArrayIncrementVr('contacts','dependants',count(Child))»

ArrayKeys Get one of the keys of the elements in the array

«ArrayKeys('A',1)»

«ArrayKeys('A',ArrayCount('A'))»

«SetVr('Ix',1)»
«RepeatWhile(GetV('Ix') <= ArrayCount('A'))»
«ArrayKeys('A',GetV('Ix'))» = «ArrayValues('A',GetV('Ix'))»
«IncrementVr('Ix')»
«End()»

ArrayRemoveDuplicates Removes duplicate (and empty) elements from an array

«ArrayRemoveDuplicates('foodList')»

ArraySetFromString Create an array from a delimited string

«ArraySetFromString('names','Fred,John,Mary,Jack',',')»

ArraySetV Initialise or change the value of an array element

«ArraySetV('contact','N',FirstNames)»

«ArraySetV('contact',3,FirstNames)»

ArraySetVr Initialise or change the value of an array element, and remove the paragraph

«ArraySetVr('contact','N',FirstNames)»

ArraySortByIndex Sorts the elements of an array by the index values

«ArraySortByIndex('Transactions')»

«ArraySortByIndex('Transactions','Numeric')»

ArraySortByValue Sorts the elements of an array by value

«ArraySortByValue('Transactions')»

ArrayValues Get one of the values of the elements in the array

«ArrayValues('A',1)»

«ArrayValues('A',ArrayCount('A'))»

«SetVr('Ix',1)»
«RepeatWhile(GetV('Ix') <= ArrayCount('A'))»
«ArrayValues('A',GetV('Ix'))»
«IncrementVr('Ix')»
«End()»

BaseTemplate Base (or overlay) this template on another template

«BaseTemplate(LetterHead)»

«BaseTemplate(headings:LetterHead,Destination)»

Button Place a Button on the interview

«Button(ButtonDummy)»

«Button(ButtonDummy)»«OnExitSet(ButtonDummy,StartDate,Value,(),Today(),OnlyWhenEmpty)»

Caption Set the caption for the data element on the interview screen

«Caption(Amount,Capital amount of loan)»

«Caption(Amount,^bu^@Navy@Capital amount of loan)»

CaptureAllDataElements Capture all data elements even if not used in this template

«CaptureAllDataElements(Yes)»

CaptureAsLongText Capture a multi-line text values

«CaptureAsLongText(Address,3)»

«CaptureAsLongText(Address,3,PendingRelevance,Rich)»

CaptureDataElement Places a control for the data element on the interview screen

«CaptureDataElement(Name)»

«CaptureDataElement(DateOfBirth,date)»

CaptureDataElements Include a number of data elements element in the interview for the template

«CaptureDataElements(CheckAll,Chk1,Chk2,Chk3)»

CaptureInGrid Specify whether or not a repeater should be displayed and captured in a grid

«CaptureInGrid(Child,Yes)»

«CaptureInGrid(Child,No)»«CaptureInGrid(Child/Pet,Yes)»

CaptureLater Defer the capture of a data element to later in the interview

«CaptureLater(Name)»

CaptureOnlyEmptyValues Specify whether only empty values should be shown in the interview

«CaptureOnlyEmptyValues(Yes)»

«CaptureOnlyEmptyValues(No)»

ceiling Round a value up to the nearest integer

«ceiling(RegionToX(YearsBetween(Today(),DateOfBirth)))»

CentsToCurrency Convert value in cents to currency and format it

«CentsToCurrency(CentsValue,'#,0.00')»

ChooseFromData Choose from repeating data already in the data set

«ChooseFromData(IdOfOrder,Order/OrderID)»

«ChooseFromData(IdOfOrder,Order/OrderID,OrderDescription)»

«ChooseFromData(IdOfOrder,Order/OrderID,OrderDescription,AddAllChosenData,Px)»

ChooseFromDataElements Choose from data already in the data set
ChooseFromDataset ChooseFromDataset

«ChooseFromDataset(CustodianName,../Respondent1,'Father',../Respondent2,'Mother')»

«ChooseFromDataset(PartyDescription,IIf((PartyType = 'Type1'),PartyName,'None'),,IIf((PartyType = 'Type2'),PartyName,PrincipalName))»

ChooseFromDataSource Choose a row from a data source

«ChooseFromDataSource(Contacts,Choose a Contact)»

«ChooseFromDataSource(Contacts,Type in the Contact's ID,RefreshSave,,DisallowSearch)»

«ChooseFromDataSource(Contacts,Choose the contacts that apply,Refresh,Range=PostalCode = 7405,AllowSearch,Contacts)»

ChooseFromFile Choose data from a text or XML file

«ChooseFromFile(Lookups:Contacts.xdtxt,Choose a contact,NoRefresh,Surname)»

«ChooseFromFile(Lookups:Contacts.xdtxt,Choose the Borrower,NoRefresh,BorrowerSurname,Borrower)»

ChooseFromHzRDBList Present a horizontal list of radio button choices

«ChooseFromHzRDBList(Gender,,Male,Female)»

ChooseFromList Present the user with a list of choices in a drop down list

«ChooseFromList(Province,Ontario,Quebec,British Columbia,Alberta,Manitoba,Saskatchewan,Nova Scotia,New Brunswick,Newfoundland and Labrador,Prince Edward Island)»

«ChooseFromList(Province,,Ontario,Quebec,'British Columbia', 'Alberta' ,Manitoba,Saskatchewan,Nova Scotia,New Brunswick,'Newfoundland and Labrador',Prince Edward Island)»

«ChooseFromList(Province,O~~Ontario,Q~~Quebec,BC~~British Columbia,A~~Alberta,M~~Manitoba,S~~Saskatchewan,NS~~Nova Scotia,NB~~New Brunswick,NL~~Newfoundland and Labrador,PE~~Prince Edward Island)»

ChooseFromRDBList Present a radio button list of choices

«ChooseFromRDBList(Orientation,North,South,East,West)»

«ChooseFromRDBList(Clause,Security~~The undersigned undertakes to provide security covering the loan to be granted.,NoSecurity~~The undersigned is not required to provide security for the loan.)»

«ChooseFromRDBList(Clause,~~The undersigned undertakes to provide security covering the loan to be granted.,~~The undersigned is not required to provide security for the loan.)»

ChooseFromRepeatingData Choose from repeating data already in the data set

«ChooseFromRepeatingData(IdOfOrder,Order/OrderID)»

«ChooseFromRepeatingData(IdOfOrder,Order/OrderID,OrderDescription)»

«ChooseFromData(IdOfOrder,Order/OrderID,OrderDescription,AddAllChosenData,Px)»

ChooseFromSamples Presents a drop down list of choices, but the user can type their own if it is not in the list

«ChooseFromSamples(Title,,Mr.,Mrs.,Miss,Ms.,Prof.,Dr.)»

ChooseUsingCheckBox Choose a value using a check box

«ChooseUsingCheckBox(RequiresSpecialSchooling,Yes,No,No)»

«ChooseUsingCheckBox(Clause,~~The Parties agree to cede their rights to various assets without prejudice.)»
«If(Clause != '')»
«Clause»
«End()»

ChooseUsingDatePicker Choose a data element value using a date picker

«ChooseUsingDatePicker(DateOpened)»

ChooseUsingTimePicker Choose a data element value using a time picker

«ChooseUsingTimePicker(AppointmentTime)»

Chr Get a character value from its integer representation

«OnExitSet(AddressLine2,AddressBlock,Value,,concat(AddressLine1,Chr(13),AddressLine2),,EvenWhenNotEmpty)»

ComeHereAfterRun Place a marker in the template where the cursor should be after the template has run.

«ComeHereAfterRun()»

CommasAndList Gets a natural language list from a delimited list.

«CommasAndList(GetV('JoinedValues'),'/',', ',' and ')»

«CommasAndList(GetV('JoinedValues'),'/',', ',' en ')»

Comment Enter a comment into the template

«Comment(Any arbitrary comments)»

CompareStrings Compare two strings

«If(CompareStrings(A,B) < 0)»


«If(CompareStrings(A,B) > 0)»


«If(CompareStrings(A,B,'fr-FR') > 0)»

concat Concat

«SetV('FullName',concat(FirstNames,' ',Surname))»

«SetV('Possessive',concat(Noun,'!'s'))»

contains Test for a substring inside another string

«If(contains(Word,'q'))»the word contains 'q'.«End()»

count Count – returns the number of a repeated item

«If(count(Child) > 0)»The number of children in the family is «count(Child)»«End()»

«If(count(Child) > 0)»The names of the children follow:«Foreach(Child)»«Name» «Surname»«End()»«End()»

«count(Child[Age < 12])»

CountOf Get the number of occurrences of one string inside another

«CountOf('.',Name)»

«If(CountOf('.',Name) = 0)»The name contains no initials.«End()»

CreateDataElement Create a data element in the template’s data set.

«CreateDataElement('ThisDataElement',GetV('ThisVariable')»

«CreateDataElement('ThisFileName'),GetValidFileName(AccountNumber)»

CreateObject Create a reference to a COM or .NET object

«CreateObject('Excel','Excel.Application')»

«CreateObject('Account','o2Smart.PracticeManagement.Account, o2Smart.PracticeManagement','ctor',AccountNumber)»

CultureName Get the active culture name

«CultureName('Input')»

«CultureName('Output')»

CurrencySymbol Insert the currency symbol as defined in the Regional Settings

«CurrencySymbol()»

CurrencyToCents Multiplies a currency value by 100 with minimal rounding

«CurrencyToCents(Price)»

DateAsNumber Get a date in numeric format for numeric operations

«DateAsNumber(StartDate)»

DateTimeAsNumber Render a date/time as a number for numeric operations

«DateTimeAsNumber(StartDateTime)»

DaysBetween Gets the number of working days between two dates

«DaysBetween(EndDate,StartDate)»

«FormatNumber(((DaysBetween(Today(),DateOfBirth) div 365) - 0.5), '0')»

«DaysBetween(EndDate,StartDate,'w','2016-12-16,2016-12-26,2016-12-27,2017-01-01,2017-01-02')»

«DaysBetween(EndDate,StartDate,'wi','2016-12-16,2016-12-26,2016-12-27,2017-01-01,2017-01-02')»

«DaysBetween(EndDate,StartDate,'wi')»

Debug Debug missing or superfluous ‘end’ and ‘else’ issues

«Debug()»

Define Define the interview properties of a data element

«Define(Amount,^biu^@Red@Caption text,|^b^@Navy@Heading text,Footing Text,Tab Caption,CaptureDataElement,,Required,Initial Value,hard;IsDigits;The amount must be numerics only.,Cases;RefreshSave;'Id=;')?Enter the amount of the deal.»

«Define(Title,^biu^@Red@Title of the party,|^b^@Navy@PARTY DETAILS,,Contact Information,ChooseFromList,;Mr.;Mrs.;Ms.;Dr.;Prof.)»

«Define(TaxIncluded,Is Tax included,,,,ChooseUsingCheckBox,Y;N;N)»

DefineSetAllGroup Implements a “Check All” feature

«DefineSetAllGroup(CheckAll,Option1,Option2,Option3)»

«DefineSetAllGroup(CheckAll,Option1,Option2,Option3,|,OptionList)»

«DefineSetAllGroup(CheckAll,Option1,Option2,Option3,|,OptionList,DropPH)»

«DefineSetAllGroup(CheckAll,Option1~~a~~Option2~~b~~Option3~~c,|,OptionList)»

DocumentBody Insert the body of the originating template into the Base Template

«DocumentBody»

Dolares Render a numeric amount as a number of Dollars, in Spanish words

«Dolares(Price)»

«Dolares(Price,'ToUpper')»

Dollars Render a numeric amount as a number of Dollars, in words

«Dollars(Price)»

«Dollars(Price,'ToUpper')»

DollarsFrancaise Render a numeric amount as a number of Dollars, in French words

«DollarsFrancaise(Price)»

«DollarsFrancaise(Price,'ToLower')»

DropDownPanel Present the data elements in a drop down list

«DropDownPanel(PH1,Choice1,Choice2,Choice3,Choice4)»

«DropDownPanel(PH1,Soccer,Tennis,Golf,repeater=Sports/SportName)»

EnableWebLocalSave Enable Save Local on the Web

«EnableWebLocalSave(Yes)»

EnableWebPreview Enable the Preview option on Integrated Web interview

«EnableWebPreview(Yes)»

«EnableWebPreview(No)»

EndsWith Test whether a string ends in a given string

«If(EndsWith(Surname,'-Smith'))»

Eq Test whether a string is equivalent to another string

«If(Eq(MaritalStatus,'Mar*comm*other'))»«End()»

«If(Eq(Quotation,'longandwindingroad'))»«End()»

EscapeForXml Escape a string for use in XML

«EscapeForXml(Text)»

EuroDeutsch Render a numeric amount as a number of Euros, in German words

«EuroDeutsch(Price)»

«EuroDeutsch(Price,'ToLower')»

EurosEspanol Render a numeric amount as a number of Euros, in Spanish words

«EurosEspanol(Price)»

«EurosEspanol(Price,'ToUpper')»

EurosFrancaise Render a numeric amount as a number of Euros, in French words

«EurosFrancaise(Price)»

«EurosFrancaise(Price,'ToLower')»

ExcludeFromDataSet Exclude elements from the saved dataset

«ExcludeFromDataSet(DataElements,UserID,UserName,UserEmail,Child/Address)»

«ExcludeFromDataSet(DataSources,Users,Accounts)»

ExcludeFromGrid Exclude the data element from a grid row when captured in a grid

«ExcludeFromGrid(PictureCode)»

«ExcludeFromGrid(PictureCode,Size,Location)»

ExcludeFromIV Excludes a data element from the capture interview for the template

«ExcludeFromIV(FirmName)»

«ExcludeFromIV(FirmName,FirmAddressLine1,FirmAddressLine2,FirmPostalCode)»

Execute Execute a number of functions

«Execute(SetV('X',12),GetV('X'))»

«Execute(SetV('X',12),IncrementV('X'),GetV('X'))»

ExpectXSLTFormatNumbers Cause XpressDox to expect XSLT formatted numbers in data

«ExpectXSLTFormatNumbers(Yes)»

ExtractInitials Extract Initials from name

«ExtractInitials(Fullnames,'.')»

«ExtractInitials(Fullnames,'')»

FileExists Test whether file exists

«If(FileExists(FileName))»do something«End()»

«If(FileExists(concat(Folder,"\",FileName)))»do something«End()»

floor Round a value down to the nearest integer

«floor(RegionToX(YearsBetween(Today(),DateOfBirth)))»

Footing Place footing text below a data element in the interview

«Footing(CompanyPostalCode,END OF COMPANY DETAILS)»

«Footing(CompanyName,)»

«Footing(CompanyPostalCode,|^bu^@Navy@END OF COMPANY DETAILS)»

ForbidThousandsSeparators Specify that capture of numeric values should not permit thousands separators

«ForbidThousandsSeparators(Yes)»

«ForbidThousandsSeparators(No)»

ForEach Repeat for a number of repeating data elements

«ForEach(Party)» «End()»

«ForEach(Party,Surname,ascending,text)» «End(for each)»

«ForEach(Child[Age < 12]) selects children whose age is less than 12» «End()»

Format Format a string according to a pattern

«CreateDataElement(Format('Child[{0}]/Name',position()),GetV('Name'))»

FormatDate Format a field as date and/or time

«FormatDate(DateOfBirth,'yyyy/MM/dd','en')»

«FormatDate(SignatureDate,'o MMMM yyyy')»

FormatNumber Format Number

«FormatNumber(Amount)»

«FormatNumber(Amount,'#,0.00;(#,0.00)')»

«FormatNumber(Amount,'#,0.00;(#,0.00)','FR')»

FormatSeconds Format a number of seconds into hours, minutes and seconds

«FormatSeconds(Seconds,'HH:mm:ss')»

«FormatSeconds(Seconds,'HH')» hours, «FormatSeconds(Seconds,'mm')» minutes and «FormatSeconds(Seconds,'ss')» seconds

FormatTime Format a field as a time

«FormatTime(AppointmentTime,'hh:mm tt')»

«FormatTime(AppointmentTime,'hh:mm tt','fr')»

«FormatTime(AppointmentTime,'HH:mm:ss')»

GE Greater than or Equal to

«IIf(GE(First,Second),'First is greater than or equal to Second','First is neither greater than nor equal to Second')»

Gender Return a value depending on a party’s gender


«ChooseFromRDBList(PartyGender,Male,Female)»
«Gender(PartyGender,1,'he,she')» took «Gender(PartyGender,1,'his,her')» bag with «Gender(PartyGender,1,'him,her')»


«ChooseFromRDBList(PartyGender,,Y~~Male,X~~Female)»«Comment(Y and X are accepted as gender codes from genetics)»
«Gender(PartyGender,1,'he,she,it')» took «Gender(PartyGender,1,'his,her,its')» bag with «Gender(PartyGender,1,'him,her,it')»


«ForEach(Party)»«ChooseFromRDBList(PartyGender,Male,Female,Neuter)»«End(ForEach party)»
«Gender(Party/PartyGender,count(Party),'he,she,it,they')» took «Gender(Party/PartyGender,count(Party),'his,her,its,their')» bag«Plural(count(Party),'','s')» with «Gender(Party/PartyGender,count(Party),'him,her,it,them')»


«ChooseUsingCheckBox(OnlyOneParty,Y,N,N)»
«Gender(PartyGender,(OnlyOneParty = 'Y'),'he,she,it,they')» took «Gender(PartyGender,(OnlyOneParty = 'Y'),'his,her,its,their')» bag«Plural((OnlyOneParty = 'Y'),'','s')» with «Gender(PartyGender,(OnlyOneParty = 'Y'),'him,her,it,them')»


«ForEach(Party)»«ChooseFromRDBList(PartyGender,M,V,D)»«End(ForEach party)»
«Gender(Party/PartyGender,count(Party),'hy,sy,die ding,hulle','M,V,D')» het «Gender(Party/PartyGender,count(Party),'sy,haar,sy,hulle','M,V,D')» sak«Plural(count(Party),'','ke')» saam met «Gender(Party/PartyGender,count(Party),'hom,haar,hom,hulle','M,V,D')» gevat.

GetDataSet Get a string representation of the data set

«GetDataSet()»

«SetDataSourceData('StagingTable',Guid(),'XMLBlob',GetDataSet(),'Description',Name)»

GetDataSourceData Get the data from a data source during assembly

«SetV('ProductXML',GetDataSourceData('Products',ProductID))»

«GetDataSourceData('Products',ProductID,'ProductName')»

«GetXMLElementValue(GetDataSourceData('Products',ProductID),'ProductName')»

GetListItem Extract a value from a delimited list

«GetListItem(ListItem,'First,Second,Third',',')»

«GetListItem(4,IP_Address,'.')»

«GetListItem(GetV('element number'),PeriodicTable,',')»

GetObjectValue Get the value of a property or method call on a COM or .NET object

«GetObjectValue('msword:Version')»

«GetObjectValue('msword:PointsToInches',72)»

GetProperty Get the value of a property of a COM or .NET object

«GetProperty('MyObject:MyPropertyName')»

«GetProperty('msword:ActiveDocument.Name')»

GetRegistryValue Get a value from the registry

«GetRegistryValue('HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Accounting\Options\ScratchFolder')»

«GetRegistryValue(concat('HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Accounting\UserOptions\',WindowsLogonUser()))»

GetV Get the value of a variable

«GetV('Balance')»

GetValidFileName Get a string which only has valid file name characters

«GetValidFileName(AccountNumber)»

«GetValidFileName(AccountNumber,'-')»

«CreateDataElement('TargetFileName',GetValidFileName(AccountNumber,'-'))»

GetValidXmlElementName Converts the passed string to a valid XML element name

«GetValidXmlElementName(Name,'_and_')»

GetVn Get the value of a variable used as numeric

«Party[GetVn('Counter')]/Name»

GetVOrDefault Get the value of a variable if it has been defined otherwise a default value

«GetVOrDefault('NumberOfLines',1)»

GetXmlElementValue Get the value of an XML element in an XML document

«GetXmlElementValue(GetV('ProductXML'),'ProductName')»

«GetXmlElementValue(GetDataSourceData('Products',ProductID),'ProductName')»

GetXPathValue Get values from XML using XPATH expressions

«GetXPathValue(GetV('ProductXML'),'count(/root/Product)')»

«GetXPathValue(GetDataSourceData('Products','Range=ProductID > 1'),'count(//Product)')»

«GetXPathValue(GetDataSourceData('Products','Range=ProductID > 1'),'sum(//Product/CostPrice)')»

GT Greater than

«IIf(GT(First,Second),'First is greater than Second','First is not greater than Second')»

Guid Get a GUID (Globally Unique Identifier)

«SetV('Id',Guid())»

«OnExitSet(Name,Id,Value,,Guid(),,OnlyWhenEmpty)»

HardSpace Convert normal spaces to non-breaking spaces

«HardSpace(Phrase)»

«HardSpace(Pounds(Price))»

Heading Place heading text above a data element in the interview

«Heading(CompanyName, COMPANY DETAILS)»

«Heading(CompanyName,|^bu^@Navy@COMPANY DETAILS)»

Help Provide help text (to be shown in the Help area) for a data element

«Help(Amount,Enter the amount of the loan)»

{**Help(Address,\Enter the address, each address line on a separate line)»

HideEmptyInterview Specify whether or not an empty interview should be hidden

«HideEmptyInterview(Yes)»

«HideEmptyInterview(No)»

HideFromPreview Prevent the document generated from being inlcuded in a preview

«HideFromPreview(Yes)»

«HideFromPreview(X > 1)»

HideInsideIV Hides a data element inside the interview for the template

«HideInsideIV(DebtorTypeOption)»

«HideInsideIV(DebtorTypeOption,CreditorTypeOption,AgentTypeOption)»

Hyperlink Attach a hyperlink to a heading or footing

«Hyperlink(Description,Heading,www.xpressdox.com)»

«Hyperlink(Description,Heading,www.xpressdox.com/

HzGroup Group data elements together horizontally on the interview

«HzGroup(Title,FirstNames,LastName)»

«HzGroup(Title,FirstNames,LastName,10,EmptyAllCaptions)»

«HzGroup(Title:4,FirstNames,LastName,20)»

If Conditionally include text into the document

«If(Answer = 'No')» «End(If)»

«If(Answer = 'Yes')»text when Answer is 'Yes'«Else()»text when Answer is not 'Yes'«End(If)»

«If((Answer = 'Yes') or (Answer = 'Maybe') and (Amount > 500)»«End()»

«If(position()= 1)»This applies only to the first repeating item.«End()»

«ForEach(Party)»«PartyFullNames»«If(last() > 1)»«When(position() < last()-1,!, )»«When(position() = last()-1, and )»«End(party > 1)»«End(for each)»

«ChooseFromRDBList(Gender,Male,Female)»«If(Gender = "Male")»«SetV("PronounHe","he")»«Setv("PronounHim","him")»«SetV("PronounHis","his")»«Else()»«SetV("PronounHe","she")»«SetV("PronounHim","her")»«SetV("PronounHis","her")»«End()»«RemoveParagraph()»
«GetV('PronounHe')» took «GetV('PronounHis')» bag with «GetV('PronounHim')»

IIf IIf function

«IIf((VatIndicator = 'Yes'),FormatNumber(Amount * 0.14),'0.00')»

IncludeCodeTemplate Include only those paragraphs which contain XpressDox merge fields

«IncludeCodeTemplate(utils:Help,Text)»

IncludeDataSourceData Include data from a data source

«IncludeDataSourceData(Contacts,RefreshSave,range=PostalCode > 8000,Customers)»

IncludeFileData Include data from a text or XML file

«IncludeFileData(Contacts.xml)»

«IncludeFileData(lookups:Contacts.xml,Refresh,Customers)»

IncludePicture Include a picture

«IncludePicture(images:Logo.jpg,0.8in,0.8in)»

IncludeSpreadsheet Include a spreadsheet in the final document

«IncludeSpreadsheet(HourlyRates.xslt)»

IncludeTemplate Include a template as part of this template

«IncludeTemplate(utils:Clauses,Destination,ExcludeHeaders)»

«IncludeTemplate(utils:Clauses,Destination,PreserveHeaders)»

«IncludeTemplate(utils:Help,Text)»

IncrementDate Increment a date

«IncrementDate(DateOfBirth,1,'y')»

«IncrementDate(Today(),5,'d')»

«IncrementDate(Today(),5,'w')»

IncrementV Increment a variable value

«IncrementV('Counter')»

«IncrementV('Total',RenderAsNumeric(Amount))»

IncrementVr Increment a variable by a given amount and remove the paragraph

«IncrementVr('Total',RenderAsNumeric(Amount))»

«IncrementVr('Counter')»

InhibitAutomaticRuleOnNumberFunctions Inhibit the automatic Rule commands that are generated for functions taking numeric values as input.

«InhibitAutomaticRuleOnNumberFunctions(Yes)»

InsertFormattedText Insert text captured as long text

«InsertFormattedText(Address)»

«InsertFormattedText(Address,Paragraph)»

«InsertFormattedText(Address,Destination)»

InsertHyperlink Insert a hyperlink into the document

«InsertHyperlink('Our Company Web Site','www.abccompany.com.xy')»

«InsertHyperlink(concat(DirectorName, ' profile'),DirectorProfileWebSite)»

InsertInto Insert a string inside a value

«InsertInto(Name,3,'X.')»

InsertPicture Insert a picture

«InsertPicture(concat('images:Personnel\',Signatory,'.jpg'),0.8in,0.8in)»

InsertSpreadsheet Insert a spreadsheet in the final document

«InsertSpreadsheet(concat('HourlyRatesFor',DirectorCode,'.xslt'))»

InsertTemplate Insert a template whose name appears in a data element which is chosen by the user.

«InsertTemplate(Clause,Destination)»

«InsertTemplate(concat('Clauses:',ChosenClauseName,PartyType),Destination)»

«InsertTemplate('Party Underage Clause',Destination)»

«InsertTemplate('letters:Covering Letter',Destination,PreserveHeaders)»

InsertUnformattedLongText Inserts text captured as “long” text but with no line breaks or formatting

«InsertUnformattedLongText(Address,', ')»

InterviewFont Specify the font for the entire interview

«InterviewFont(Microsoft Sans Serif/8.25)»

«InterviewFont(Times New Roman/9)»

InterviewIsWizard Specify whether the interview should be in Wizard form or not

«InterviewIsWizard(Yes)»

«InterviewIsWizard(Strict)»

«InterviewIsWizard(No)»

InterviewLogo Provide the name of an image file to use in the interview

«InterviewLogo(images:InterviewLogo.jpg)»

InterviewRelevance Provide a condition governing the relevance of the data element in the interview

«InterviewRelevance(Name,Name = '')»

«InterviewRelevance(Children,count(Children) > 0)»

InterviewTheme The theme of the Desktop Interview

«InterviewTitle(Classic)»

«InterviewTitle(White)»

InterviewTitle Set the title which will show on the Interview screen for this template

«InterviewTitle(Custom Title for Interview Screen)»

InvokeMethod Invoke a method on a COM or .NET object

«InvokeMethod('Excel.Application:Quit')»

«InvokeMethod('msword:ChangeFileOpenDirectory',concat('C:\Users\',WindowsLogonUser(),'\Documents\XpressDox'))»

IsFalse Test whether a value does not look like a boolean “true”

«If(IsFalse(Option1))»Option1 («Option1») is not true«End()»

IsTrue Test whether a value looks like a boolean “true”

«If(IsTrue(Option1))»Option1 («Option1») is true«End()»

«If(not(IsTrue(Option1)))»Option1 («Option1») is false«End()»

last Used in a ForEach to test whether the last repeating item is being referenced.

«last()»

«If((position() > 1) and (position() < last()-1))», «End()»«If((position() > 1) and (position() = last()-1))» and «End()»

LastDayInMonth Get the last day in a month

«FormatDate(LastDayInMonth(Today()),'dd MMMM yyyy')»

LE Less than or Equal to

«IIf(LE(First,Second),'First is less than or equal to Second','First is neither less than nor equal to Second')»

Left Extract the left-most a portion of a string

«Left(Name,5)»

LinkToDataSource Link the control for any data element in the interview to a data source

«LinkToDataSource(MatterNumber,Cases)»

«LinkToDataSource(MatterNumber,Cases,RefreshSave,'id=,',LookupMatter = 'Y',UserClass='High')»

LinkToDataSourceOnEnter When entering a control in the interview, link it to a data source

«LinkToDataSourceOnEnter(MatterNumber,Cases)»

«LinkToDataSourceOnEnter(MatterNumber,CasesDataSource,AllowInsert,id=0,MatterNumber = '')»

«LinkToDataSourceOnEnter(MatterNumber,CasesDataSource,RefreshSave,,(MatterNumber != ''),(UserCanSave = 'Yes'))»

LinkToOtherData Links the control in the interview for this data element to a saved dataset

«LinkToOtherData(AccountNumber)»

«LinkToOtherData(AccountNumber,_

List Produce a delimited list (e.g. commas and ‘and’) from repeating data

«List(Party,Firstname Surname,!, , and )»

«List(Child[Age < 10],Firstname Surname,', ',' and ')»

ListDelimiter Inserts a delimiter between parts of a list, typically a comma and “and”

«ListDelimiter(position(),last()-1,'; ',' and also ')»

«ListDelimiter(position(),last()-1)»

«ListDelimiter(GetVn('counter'),GetVn('sizeMinus1'))»

Log Log a message

«Log(concat('At this point in the template, and the value of Name is ',Name))»

LogDataElements Log a list of data elements with a message

«LogDataElements(The name and address are,Name,Address)»

LogVariables Log a list of XpressDox variable values with a message

«LogVariables(At the middle of the template,Total,TotalTax)»

Lookup Look up the value of a key in a name/value list

«Lookup(Language,'en-gb:colour;en-us:color')»

LT Less than

«IIf(LT(First,Second),'First is less than Second','First is not less than Second')»

MakeNoise Make one of the system sounds

«MakeNoise()»

«MakeNoise('Asterisk')»

Max Gets the higher of two values

«Max(HourlyRate * Hours, 1000)»

«Max(Age,CutoffAge)»

MaximumRepeats Set the maximum number of repeats

«MaximumRepeats(Child,2)»

«MaximumRepeats(Child,IIf((ParentName = ''),0,2))»

MergeDataSheetTemplate Merge this template’s Data Sheet Template

«MergeDataSheetTemplate()»

MergePDFForm Merge a PDF from after the currently running template

«MergePDFForm('Agreement')»

«MergePDFForm(concat('Agreement -',PartyType),'Agreement')»

«MergePDFForm(concat('Agreement -',PartyType),'Agreement','R')»

MergeTemplate Merge another template after the currently running template

«MergeTemplate('Agreement')»

«MergeTemplate(concat('Agreement -',PartyType))»

Min Gets the lower of two values

«Min(HourlyRate * Hours, 1000)»

«Min(Age,CutoffAge)»

Mod Gets remainder after dividing one number by another

«Mod(LineNumber, 2)»

MonthsBetween Gets the number of months between two dates

«MonthsBetween(Today(),FirstOfJan)»

Now Insert the current date (i.e. today) and/or time into the document

«Now('yyyy/MM/dd')»

«Now('MMMM o yyyy')»

«Now('d MMMM yyyy HH:mm:ss','de')»

«Now()»

NumberPhrase Format a number as words

«NumberPhrase(Price)»

«NumberPhrase(Price - 100,'en-us','ToUpper')»

NumberToCurrency Render a number as currency, in words

«NumberToCurrency(Price, "Dollar", "Dollars", "cent", "cents", "", "en-uk", "Leave")»

OnEnterSet Set values when focus enters a data element’s control

«OnEnterSet(Gender,Gender,Value,(Substring(IDNumber,7,1) > '4'),'Male','Female')»

«OnEnterSet(RefNumber,RefNumber,Caption,(PartyType = 'Individual'),'ID Number','Company Number')»

«OnEnterSet(ReminderDate,ReminderDate,Value,,IncrementDate(DateOpened,7,'d'),,EvenWhenNotEmpty)»

OnExitSet Set values when focus leaves a data element’s control

«OnExitSet(IDNumber,Gender,Value,(Substring(IDNumber,7,1) > '4'),'Male','Female')»

«OnExitSet(PartyType,RefNumber,Caption,(PartyType = 'Individual'),'ID Number','Company Number')»

«OnExitSet(DateOpened,ReminderDate,Value,,IncrementDate(DateOpened,7,'d'),,EvenWhenNotEmpty)»

OptimizeParsing Optimize parsing of the template

«OptimizeParsing(Off)»

«OptimizeParsing(On)»

Ordinal Ordinal (i.e. First, Second,…) inside ForEach

«Ordinal()»

«Ordinal(,Eerste,Tweede,Derde,Vierde,Fyfde,Sesde,Sewende,Agste en verdere)»

OrdinalSuffix Gets the suffix st, nd, rd, etc. of the ordinal of a number

«OrdinalSuffix(Today('d'))»

«OrdinalSuffix(Today('d'),'af')»

«OrdinalSuffix(Today('d'),'st,nd,rd,th,th,th,th,th,th,th,th,th,th,th,th,th,th,th,th,th,st,nd,rd,th,th,th,th,th,th')»

PaintInsertedText Paint Text Inserted by Fillpoints

«PaintInsertedText(Yes,Blue)»

«PaintInsertedText(Yes,Blue,Paint='Yes')»

«PaintInsertedText(No)»

«PaintInsertedText(No,Red)»

Paragraph Split the containing paragraph into two at this point.

«Paragraph()»

«Paragraph('Letter Body')»

PdfUserPassword Set a User Password when saving as PDF

«PdfUserPassword('MySecretPassword')»

«PdfUserPassword(FormatDate(DateOfBirth,'yyyyMMdd'))»

Pesos Render a numeric amount as a number of Pesos, in Spanish words

«Pesos(Price)»

«Pesos(Price,'ToUpper')»

PlaceHolder A placeholder in the interview to which text can be attached


«PlaceHolder(DummyName)»


«PlaceHolder(DummyName,Title)»

Plural Get the singular or plural depending on the number.

«Plural(count(Child),'child','children')»

«Plural(count(Child),'child!'s','children!'s')»

«ChooseUsingCheckBox(OnlyOne,Y,N,N)»«Plural((OnlyOne = 'Y'),'child','children')»

position Get the position within a ForEach

«When(position() > 1, and )»

«ForEach(Party)»«PartyFullNames»«If(last() > 1)»«When(position() < last()-1,!, )»«When(position() = last()-1, and )»«End(party > 1)»«End(for each)»

Pounds Render a numeric amount as a number of Pounds, in words, UK English

«Pounds(Price)»

«Pounds(Price,'ToUpper')»

PrefixWith Insert a prefix if the value is not empty

«PrefixWith(AddressLine2,' ')»

PrependVr Prefix values at the front of a variable

«PrependVr('List',',')»

«PrependVr('List',PartyName,',')»

PreviewHighlight Set the color to use for highlighting inserted text for the preview

«PreviewHighlight(Blue)»

RaiseToPower Raise a number to a power

«RaiseToPower(SideOfSquare,2)»

Rand Render a numeric amount as a number of Rand in words, in English

«Rand(Price)»

«Rand(Price,'ToUpper')»

RandAfrikaans Render a numeric amount as a number of Rand in words, Afrikaans

«RandAfrikaans(Price)»

«RandAfrikaans(Price,'ToUpper')»

ReadOnly Set the control for a data element on the interview to Read Only

«ReadOnly(Description)»

«ReadOnly(Description,Size,Location)»

«ReadOnly(Description,Size,Location,(UserIsPrivileged = 'Yes'))»

RegionToX Convert a number in regional format to XpressDox calculation-compliant format

«(RegionToX(UnitPrice) * RegionToX(Qty))»

RemoveColumnIf Remove a Word table column

«RemoveColumnIf(ColumnCount < 3)»

«RemoveColumnIf(ColumnCount < 3,1)»

«RemoveColumnIf(ColumnCount < 3,Empty)»

RemoveParagraph Remove the paragraph after the template has merged.

«RemoveParagraph()»

RemoveRowIf Remove a Word table row

«RemoveRowIf(AgeOfChild < 18)»

RenderAsNumeric Force a string to be a valid numeric value

«FormatNumber(RenderAsNumeric(Amount) * 1.10)»

RepeaterCaption Set the caption for a group of repeating data elements on the interview screen

«RepeaterCaption(Child,Children)»

«RepeaterCaption(Child,^bu^@Navy@Children)»

RepeaterPosition Get the position during interview processing

«RepeaterPosition(Child)»

«RepeaterPosition(../Child)»

RepeatWhile Repeat while a condition is true

«SetV('This','XXThat')»«RepeatWhile(GetV('This') != 'That')»Variable 'This' is «GetV('This')» «SetV('This',substring(GetV('This'),2))»«End()»

Replace Replace all occurrences of a specified string with another

«Replace(EnglishSentence,'grey','gray')»

«Replace(Replace(Replace(EnglishSentence,'grey','gray'),'colour','color'),'favourite','favorite')»

ReplaceField Replace a Merge Field in the Base Template

«ReplaceField(Addressee)»«ClientName»«ReplaceFieldEnd()»

«ReplaceField(ToUpper(Addressee))»«ToSentence(ClientName)»«ReplaceFieldEnd()»

Required Mark one or more data elements as required – i.e. must have a non-empty value

«Required(AccountNumber,Decimal)»

«Required(AccountNumber)»

«Required(AccountNumber,Surname,IDNumber)»

RequiredVersion Allows the template author to prevent a template running if the installed version of XpressDox is too low.

«RequiredVersion(3.1.1)»

RestrictToLicenses Supply licence serial numbers for this template

«RestrictToLicenses(123,124,300)»

Right Extract the right-most a portion of a string

«Right(Name,5)»

Round Round a value to the nearest integer

«FormatNumber(Round(Price,2))»

«Round(InterestRate,3)»

Rule Applies a custom made validation rule to the data element in the interview process

«Rule(Cost,hard,IsNumber,110.00,12000.00,The Cost must be greater than 109 and less than or equal to 12000.)»

«Rule(SellingPrice,hard,(Area > 1000 and SellingPrice > 500000) or (Area < 1001 and SellingPrice < 50001),'The SellingPrice must be greater than 500000 when the Area is more than 1000.')»

«Rule(IDNumber,hard,IsDigits,The IDNumber must consist only of digits)»«Rule(IDNumber,hard,string-length(IDNumber) = 13,the IDNumber must be exactly 13 digits long.)»

«Rule(IDNumber,hard,IsZAIDNumber,The IDNumber failed the test for a valid South African ID Number.)»

«Rule(Email,hard,IsEmailAddress,'The field must be a valid email address')»«Rule(Email,hard,(not(contains(Email,',')) and not(contains(Email,';'))),'not a list of addresses.')»

«Rule(Postal_Code,hard,IsUKPostalCode,'Please enter a valid UK Postal Code')»

«Rule(Price,hard,IsRegionalNumber,'EU','The value must be a number in the format 9.999,99')»

«Rule(IDNumber,soft,1 = 1,'do you want to accept the value anyway?')»

RunAsHugeTemplate Instruct XpressDox Word Addin to run the template in a separate process

«RunAsHugeTemplate(yes)»

RunTemplates Specify a number of templates to be run when this template is run.

«RunTemplates(CoveringLetter,Contract,Invoice,DebitOrder)»

RunWordMacro Run a Word macro after the template has been merged.

«RunWordMacro(MacroName)»

«RunWordMacro(FirstMacro,SecondMacro)»

SaveAsHtml Specify whether or not to save the merged document in HTML format.
SaveAsPdf Specify whether or not to save the merged document in PDF format.
SaveAsRtf Specify whether or not to save the merged document in RTF format.
SaveAsText Specify whether or not to save the merged document in plain text format.

«SaveAsText(Yes)»

SaveDataset Specify whether or not to save the dataset.

«SaveDataset(No)»

Script Define a chunk of document for re-use

«Script(ProductDescription)»chunk of text«ScriptEnd()»

«Script(ProductDescription,UpperOrTitle)»«&UpperOrTitle&(chunk of text)»«ScriptEnd()»

ScriptIf Conditionally include text in a script

«ScriptIf(&Required& = 'Y')»«Required(&Name&)»«ScriptIfEnd()»

SecondsBetween Gets the number of seconds between two date/times

«SecondsBetween('13:00:00','12:00:00')»

«SecondsBetween(EndTime,StartTime)»

Select A Select/Case/Default block

«Select(Testing things)»«Case(Test = 1)»Test is 1«End()»«Case(Test = 2)»Test is 2«End()»«Default()»Test is «Test»«End()»«End(Select)»

«Select(Testing things)»
«Case(Test = 1)»Test is 1
«End()»
«Case(Test = 2)»
Test is 2
«End()»
«Default()»
Test is «Test»
«End()»
«End(Select)»

SendWebEmail Set all the properties to send an email from a Web based template

«SendWebEmail(ToAddress,'','','noreply@email.com','Documents attached for your info','emailbody.html','false','true','false')»

SetCoreFileProperty Sets a core file property in the merged document

«SetCoreFileProperty('Author',WindowsLogonUser())»

«SetCoreFileProperty('Subject',What_this_is_About)»

SetCustomDocumentProperty Sets a custom document property in the merged document.

«SetCustomDocumentProperty(MadeByXpressDox,Y)»

«SetCustomDocumentProperty(XDFsProf-custom1,CUSTOM1VALUE1)»

SetDataSourceData Set the value of a field in a data source

«SetDataSourceData('Products',ProductID,'UnitPrice',100)»

SetDocumentName Set the document name (referenced as ).

«SetDocumentName(CoveringLetter)»

SetEmptyMarker Set the value of the Empty Marker

«SetEmptyMarker('{^}')»

«SetEmptyMarker('{^}',LastName,FirstNames,IDNumber)»

«SetEmptyMarker('',LastName,FirstNames,IDNumber)»

«SetEmptyMarker('{~cyan~^~}')»

«SetEmptyMarker('{~red~^~}',LastName,FirstNames,IDNumber)»

SetInitialValue Sets the initial value for a data element that is to be captured

«SetInitialValue(PostalCode,7890)»

«SetInitialValue(Customer/State,Washington)»

SetInterviewDataOnly Set the option that a template is destined only for data capture

«SetInterviewDataOnly(Yes)»

«SetInterviewDataOnly(No)»

SetMultipleDocumentFilter Sets a filter applying to the Document Per Repeated Item feature

«SetMultipleDocumentFilter(ChildAge > 12)»

«SetMultipleDocumentFilter(ChildAge > ../AgeFilterValue)»

SetProperty Set the value of a property of a COM or .NET object

«SetProperty('Excel.Application:ActiveCell.FormulaR1C1',Today('yyyy-MM-dd'))»

SetRepeaterQualifier Set the string which must appear in the interview against repeating elements

«SetRepeaterQualifier(Child,,

SetSavedDataFileName Set the file name of the data that was captured in an interview for the template.

«SetSavedDataFileName(Data

«SetSavedDataFileName(concat('Data ',GetValidFileName(AccountNumber)))»

SetSavedDataFolder Sets the folder where the data captured in the interview will be saved.

«SetSavedDataFolder(Data

«SetSavedDataFolder(concat('Data ',WindowsLogonUser()))»

SetSavedDocumentFileName Set the file name of the merged document.

«SetSavedDocumentFileName(

«SetSavedDocumentFileName(concat('Document for ',GetValidFileName(AccountNumber)))»

SetSavedDocumentFolder Set the folder where the merged document will be saved.

«SetSavedDocumentFolder(Docs

«SetSavedDocumentFolder(concat('Docs ',WindowsLogonUser()))»

SetSavedDocumentNameVersioning Set the option governing the versioning of the merged document file name (default is ON)

«SetSavedDocumentNameVersioning(Off)»

SetV Set a variable value

«SetV('Balance',0)»

«SetV('Balance',GetV('Balance') + RenderAsNumeric(Amount))»

«IncrementV('Balance', RenderAsNumeric(Amount))»

«ChooseFromRDBList(Gender,Male,Female)»«If(Gender = "Male")»«SetV("PronounHe","he")»«Setv("PronounHim","him")»«SetV("PronounHis","his")»«Else()»«SetV("PronounHe","she")»«SetV("PronounHim","her")»«SetV("PronounHis","her")»«End()»«RemoveParagraph()»
«GetV('PronounHe')» took «GetV('PronounHis')» bag with «GetV('PronounHim')»


«ChooseFromRDBList(PartyGender,Male,Female)»
«Gender(PartyGender,1,'he,she')» took «Gender(PartyGender,1,'his,her')» bag with «Gender(PartyGender,1,'him,her')»

SetVR Set a variable value and remove the paragraph

«SetVR('Balance',0)»

«SetVr('Balance',GetV('Balance') + RenderAsNumeric(Amount))»

«ChooseFromRDBList(Gender,Male,Female)»«If(Gender = "Male")»«SetVr("PronounHe","he")»«Setv("PronounHim","him")»«SetV("PronounHis","his")»«Else()»«SetVR("PronounHe","she")»«SetV("PronounHim","her")»«SetV("PronounHis","her")»«End()»
«GetV('PronounHe')» took «GetV('PronounHis')» bag with «GetV('PronounHim')»

SetWebButtonText Sets the text to be shown in the “Assemble Document” button on the web interview

«SetWebButtonText(Submit)»

SetWebCustomButton Sets custom text to be implemented in the interview by the web designer

«SetWebCustomButton('Do Something')»

SetWebInterimSaveButton Sets the text to be shown in the “InterimSave” button on the web interview, and the URL

«SetWebInterimSaveButton(Save data and Exit,http://www.mydomain.com/SaveInterviewData.php?interviewID=76575&type=privateCompany)»

SetWebInterviewMinimumHeight Set the minimum height of the Web Interview

«SetWebInterviewMinimumHeight(200)»

SetWebInterviewSize Set the Web Interview Size

«SetWebInterviewSize(Medium)»

SetWebReturnURL Set the return URL for a web-based template

«SetWebReturnURL('www.MyLawFirm.com/DocumentCompleted.aspx')»

«SetWebReturnURL('www.MyLawFirm.com/DocumentCompleted.php?userID=131234&activity=LoanApplication')»

«SetWebReturnURL('www.MyLawFirm.com/DocumentCompleted.php?userID=&activity=LoanApplication')»

ShowHidden Show hidden fields on the interview

«ShowHidden(Name,Address)»

«ShowHidden(Child/Name,Child/DataOfBirth)»

«ShowHidden()»

ShowIfHasValue Show the item only if it has a non-empty value

«ShowIfHasValue(AddressLine3)»

«ShowIfHasValue(ToUpper(AddressLine3))»

StartsWith Test whether a string starts with a given string

«If(StartsWith(ProductName,'Microsoft'))»Good quality inside«End()»

StartsWithVowel Test whether a string starts with a vowel

«When(StartsWithVowel(Fruit),an,a)»

«When(StartsWithVowel(Accomodation,'Hh'),an,a)»

string-length Returns the number of characters in a value

«If(string-length(AddressLine3) > 0)»
«AddressLine3»
«End()»

substring Extract a portion of a string

«substring(Name,5)»

«substring(GetV('description'),1,string-length(GetV('name')))»

SubstringAfter Extract the substring after a given string

«SubstringAfter(Surname,'-')»

SubstringAfterLast Get the last substring using a delimiter

«SubstringAfterLast('C:\Documents\XpressDox\WordFile.docx','\')»

SubstringBefore Extract the substring before a given string

«SubstringBefore(Initials,'.')»

SubstringBeforeLast Get the substring before the last delimiter

«SubstringBeforeLast('C:\Documents\XpressDox\WordFile.docx','\')»

SuffixWith Insert a suffix if the value is not empty

«SuffixWith(FirstNames,' ')»

sum Calculate the sum of values

«FormatNumber(sum(InvoiceLine/Amount))»

Tab Add a tab to the main panel of the interview screen

«Tab(Financial Information,Capital,InterestRate,InterestDate,AmountPaid)»

TableLookup Calculate a value from a table

«TableLookup(CapitalAmount,'3001;56;0,5001;187;0,9999999;277;0')»

«TableLookup(AnnualIncome,'122500;0;18,195000;21960;25,270000;40210;30,999999999;143010;40')»

TabOrientation Specify whether Tabs appear Horizontally or Vertically

«TabOrientation(Vertical)»

TemplateName Get the file name of the running template

«TemplateName()»

«TemplateName('true','true')»

Today Insert the current date into the document

«Today('yyyy/MM/dd')»

«Today('MMMM o yyyy')»

«Today()»

ToHtml Wrap string in HTML tags

«ToHtml(Description)»

ToLower Convert to lower case

«ToLower(Name)»

«ToLower(Name,1)»

«ToLower(Name,2,0)»

«ToLower(Name,3,2)»

ToNumber Renders a string already in numeric form into a number

«ToNumber(GetV('Pos'))»

ToSentence Convert to Sentence case

«ToSentence(Surname)»

ToTitle Convert to Title Case

«ToTitle(BookTitle)»

«ToTitle(Names,'short')»

ToUpper Convert to UPPER case

«ToUpper(Name)»

«ToUpper(Name,1,1)»

«ToUpper(Name,2,0)»

«ToUpper(Name,3,2)»

Trim Removes white space or other characters from either side of a string

«FormatNumber(Trim(Amount))»

«Trim(List,',;')»

UpdateFields Indicate that the Table of Contents and Word fields must be updated

«UpdateFields(Yes)»

UpdateTableFormattingForPdf Request that table formatting is performed when saving to PDF

«UpdateTableFormattingForPdf((Amount != 0))»

«UpdateTableFormattingForPdf('Yes')»

UseScript Insert the contents of a script defined in another part of the template.

«UseScript(ProductDescription)»

Value Returns the value of what is passed (specifically needed for Scripts)

«Value(&ParameterName&)»

ValueIsEmpty Tests whether a value is empty or not

«If(not(ValueIsEmpty(AddressLine1)))»«AddressLine1»«End()»

When Provide condition for including small text values (e.g. for gender or plural handling)

«When(Gender = 'M',he,she)»

«When(count(Child) = 1,child,children)»

«When(StartsWithVowel(Fruit),an,a)» «Fruit»

Width Set the width of the control in the interview to a fixed value

«Width(Price,6)»

WindowsLogonUser Returns the user name with which the current user logged on to Windows

«WindowsLogonUser()»

«SetSavedDocumentFolder(Docs

WriteTimeStampToDataSet Specify whether or not to write a time stamp into the dataset

«WriteTimeStampToDataSet(Yes)»

XToRegion Convert a number in calculation-compliant format to regional settings format

«FormatNumber(XToRegion(RegionToX(UnitPrice) * RegionToX(Qty)),'','EU')»

YearsBetween Gets the number of years between two dates

«Round(YearsBetween(Today(),DateOfBirth) – 0.5)»

YearsMonthsDaysBetween Gets the number of years, months and days between two dates

«YearsMonthsDaysBetween(EndDate,StartDate)»

«YearsMonthsDaysBetween(EndDate,StartDate,'M')»

Back to top »

 

Categorized Command ListCategorized List of Commands and Functions

Conditional Commands and Functions    Conditional Commands and Functions

Command or Function Name Description and Examples
CompareStrings Compare two strings

«If(CompareStrings(A,B) < 0)»


«If(CompareStrings(A,B) > 0)»


«If(CompareStrings(A,B,'fr-FR') > 0)»

contains Test for a substring inside another string

«If(contains(Word,'q'))»the word contains 'q'.«End()»

count Count – returns the number of a repeated item

«If(count(Child) > 0)»The number of children in the family is «count(Child)»«End()»

«If(count(Child) > 0)»The names of the children follow:«Foreach(Child)»«Name» «Surname»«End()»«End()»

«count(Child[Age < 12])»

EndsWith Test whether a string ends in a given string

«If(EndsWith(Surname,'-Smith'))»

Eq Test whether a string is equivalent to another string

«If(Eq(MaritalStatus,'Mar*comm*other'))»«End()»

«If(Eq(Quotation,'longandwindingroad'))»«End()»

FileExists Test whether file exists

«If(FileExists(FileName))»do something«End()»

«If(FileExists(concat(Folder,"\",FileName)))»do something«End()»

GE Greater than or Equal to

«IIf(GE(First,Second),'First is greater than or equal to Second','First is neither greater than nor equal to Second')»

GT Greater than

«IIf(GT(First,Second),'First is greater than Second','First is not greater than Second')»

If Conditionally include text into the document

«If(Answer = 'No')» «End(If)»

«If(Answer = 'Yes')»text when Answer is 'Yes'«Else()»text when Answer is not 'Yes'«End(If)»

«If((Answer = 'Yes') or (Answer = 'Maybe') and (Amount > 500)»«End()»

«If(position()= 1)»This applies only to the first repeating item.«End()»

«ForEach(Party)»«PartyFullNames»«If(last() > 1)»«When(position() < last()-1,!, )»«When(position() = last()-1, and )»«End(party > 1)»«End(for each)»

«ChooseFromRDBList(Gender,Male,Female)»«If(Gender = "Male")»«SetV("PronounHe","he")»«Setv("PronounHim","him")»«SetV("PronounHis","his")»«Else()»«SetV("PronounHe","she")»«SetV("PronounHim","her")»«SetV("PronounHis","her")»«End()»«RemoveParagraph()»
«GetV('PronounHe')» took «GetV('PronounHis')» bag with «GetV('PronounHim')»

IIf IIf function

«IIf((VatIndicator = 'Yes'),FormatNumber(Amount * 0.14),'0.00')»

IsFalse Test whether a value does not look like a boolean “true”

«If(IsFalse(Option1))»Option1 («Option1») is not true«End()»

IsTrue Test whether a value looks like a boolean “true”

«If(IsTrue(Option1))»Option1 («Option1») is true«End()»

«If(not(IsTrue(Option1)))»Option1 («Option1») is false«End()»

LE Less than or Equal to

«IIf(LE(First,Second),'First is less than or equal to Second','First is neither less than nor equal to Second')»

LT Less than

«IIf(LT(First,Second),'First is less than Second','First is not less than Second')»

RemoveColumnIf Remove a Word table column

«RemoveColumnIf(ColumnCount < 3)»

«RemoveColumnIf(ColumnCount < 3,1)»

«RemoveColumnIf(ColumnCount < 3,Empty)»

RemoveRowIf Remove a Word table row

«RemoveRowIf(AgeOfChild < 18)»

RepeaterPosition Get the position during interview processing

«RepeaterPosition(Child)»

«RepeaterPosition(../Child)»

Select A Select/Case/Default block

«Select(Testing things)»«Case(Test = 1)»Test is 1«End()»«Case(Test = 2)»Test is 2«End()»«Default()»Test is «Test»«End()»«End(Select)»

«Select(Testing things)»
«Case(Test = 1)»Test is 1
«End()»
«Case(Test = 2)»
Test is 2
«End()»
«Default()»
Test is «Test»
«End()»
«End(Select)»

ShowIfHasValue Show the item only if it has a non-empty value

«ShowIfHasValue(AddressLine3)»

«ShowIfHasValue(ToUpper(AddressLine3))»

StartsWith Test whether a string starts with a given string

«If(StartsWith(ProductName,'Microsoft'))»Good quality inside«End()»

StartsWithVowel Test whether a string starts with a vowel

«When(StartsWithVowel(Fruit),an,a)»

«When(StartsWithVowel(Accomodation,'Hh'),an,a)»

string-length Returns the number of characters in a value

«If(string-length(AddressLine3) > 0)»
«AddressLine3»
«End()»

ValueIsEmpty Tests whether a value is empty or not

«If(not(ValueIsEmpty(AddressLine1)))»«AddressLine1»«End()»

When Provide condition for including small text values (e.g. for gender or plural handling)

«When(Gender = 'M',he,she)»

«When(count(Child) = 1,child,children)»

«When(StartsWithVowel(Fruit),an,a)» «Fruit»

Data Capture - Interview Commands and Functions    Data Capture – Interview Commands and Functions

Command or Function Name Description and Examples
AlignCaption Sets the alignment of the caption for specific data elements

«AlignCaption(FirstName,LastName,Top)»

AlignCaptions Sets whether captions on the interview should be aligned left, right or top

«AlignCaptions(Right)»

«AlignCaptions(Left)»

«AlignCaptions(Top)»

AlignErrorMessages Sets whether error messages (on the web interview) should be aligned top or bottom

«AlignErrorMessages(Top)»

Button Place a Button on the interview

«Button(ButtonDummy)»

«Button(ButtonDummy)»«OnExitSet(ButtonDummy,StartDate,Value,(),Today(),OnlyWhenEmpty)»

Caption Set the caption for the data element on the interview screen

«Caption(Amount,Capital amount of loan)»

«Caption(Amount,^bu^@Navy@Capital amount of loan)»

CaptureAllDataElements Capture all data elements even if not used in this template

«CaptureAllDataElements(Yes)»

CaptureAsLongText Capture a multi-line text values

«CaptureAsLongText(Address,3)»

«CaptureAsLongText(Address,3,PendingRelevance,Rich)»

CaptureDataElement Places a control for the data element on the interview screen

«CaptureDataElement(Name)»

«CaptureDataElement(DateOfBirth,date)»

CaptureDataElements Include a number of data elements element in the interview for the template

«CaptureDataElements(CheckAll,Chk1,Chk2,Chk3)»

CaptureInGrid Specify whether or not a repeater should be displayed and captured in a grid

«CaptureInGrid(Child,Yes)»

«CaptureInGrid(Child,No)»«CaptureInGrid(Child/Pet,Yes)»

CaptureLater Defer the capture of a data element to later in the interview

«CaptureLater(Name)»

CaptureOnlyEmptyValues Specify whether only empty values should be shown in the interview

«CaptureOnlyEmptyValues(Yes)»

«CaptureOnlyEmptyValues(No)»

ChooseFromData Choose from repeating data already in the data set

«ChooseFromData(IdOfOrder,Order/OrderID)»

«ChooseFromData(IdOfOrder,Order/OrderID,OrderDescription)»

«ChooseFromData(IdOfOrder,Order/OrderID,OrderDescription,AddAllChosenData,Px)»

ChooseFromDataElements Choose from data already in the data set
ChooseFromDataset ChooseFromDataset

«ChooseFromDataset(CustodianName,../Respondent1,'Father',../Respondent2,'Mother')»

«ChooseFromDataset(PartyDescription,IIf((PartyType = 'Type1'),PartyName,'None'),,IIf((PartyType = 'Type2'),PartyName,PrincipalName))»

ChooseFromHzRDBList Present a horizontal list of radio button choices

«ChooseFromHzRDBList(Gender,,Male,Female)»

ChooseFromList Present the user with a list of choices in a drop down list

«ChooseFromList(Province,Ontario,Quebec,British Columbia,Alberta,Manitoba,Saskatchewan,Nova Scotia,New Brunswick,Newfoundland and Labrador,Prince Edward Island)»

«ChooseFromList(Province,,Ontario,Quebec,'British Columbia', 'Alberta' ,Manitoba,Saskatchewan,Nova Scotia,New Brunswick,'Newfoundland and Labrador',Prince Edward Island)»

«ChooseFromList(Province,O~~Ontario,Q~~Quebec,BC~~British Columbia,A~~Alberta,M~~Manitoba,S~~Saskatchewan,NS~~Nova Scotia,NB~~New Brunswick,NL~~Newfoundland and Labrador,PE~~Prince Edward Island)»

ChooseFromRDBList Present a radio button list of choices

«ChooseFromRDBList(Orientation,North,South,East,West)»

«ChooseFromRDBList(Clause,Security~~The undersigned undertakes to provide security covering the loan to be granted.,NoSecurity~~The undersigned is not required to provide security for the loan.)»

«ChooseFromRDBList(Clause,~~The undersigned undertakes to provide security covering the loan to be granted.,~~The undersigned is not required to provide security for the loan.)»

ChooseFromRepeatingData Choose from repeating data already in the data set

«ChooseFromRepeatingData(IdOfOrder,Order/OrderID)»

«ChooseFromRepeatingData(IdOfOrder,Order/OrderID,OrderDescription)»

«ChooseFromData(IdOfOrder,Order/OrderID,OrderDescription,AddAllChosenData,Px)»

ChooseFromSamples Presents a drop down list of choices, but the user can type their own if it is not in the list

«ChooseFromSamples(Title,,Mr.,Mrs.,Miss,Ms.,Prof.,Dr.)»

ChooseUsingCheckBox Choose a value using a check box

«ChooseUsingCheckBox(RequiresSpecialSchooling,Yes,No,No)»

«ChooseUsingCheckBox(Clause,~~The Parties agree to cede their rights to various assets without prejudice.)»
«If(Clause != '')»
«Clause»
«End()»

ChooseUsingDatePicker Choose a data element value using a date picker

«ChooseUsingDatePicker(DateOpened)»

ChooseUsingTimePicker Choose a data element value using a time picker

«ChooseUsingTimePicker(AppointmentTime)»

Comment Enter a comment into the template

«Comment(Any arbitrary comments)»

Define Define the interview properties of a data element

«Define(Amount,^biu^@Red@Caption text,|^b^@Navy@Heading text,Footing Text,Tab Caption,CaptureDataElement,,Required,Initial Value,hard;IsDigits;The amount must be numerics only.,Cases;RefreshSave;'Id=;')?Enter the amount of the deal.»

«Define(Title,^biu^@Red@Title of the party,|^b^@Navy@PARTY DETAILS,,Contact Information,ChooseFromList,;Mr.;Mrs.;Ms.;Dr.;Prof.)»

«Define(TaxIncluded,Is Tax included,,,,ChooseUsingCheckBox,Y;N;N)»

DefineSetAllGroup Implements a “Check All” feature

«DefineSetAllGroup(CheckAll,Option1,Option2,Option3)»

«DefineSetAllGroup(CheckAll,Option1,Option2,Option3,|,OptionList)»

«DefineSetAllGroup(CheckAll,Option1,Option2,Option3,|,OptionList,DropPH)»

«DefineSetAllGroup(CheckAll,Option1~~a~~Option2~~b~~Option3~~c,|,OptionList)»

DropDownPanel Present the data elements in a drop down list

«DropDownPanel(PH1,Choice1,Choice2,Choice3,Choice4)»

«DropDownPanel(PH1,Soccer,Tennis,Golf,repeater=Sports/SportName)»

ExcludeFromGrid Exclude the data element from a grid row when captured in a grid

«ExcludeFromGrid(PictureCode)»

«ExcludeFromGrid(PictureCode,Size,Location)»

ExcludeFromIV Excludes a data element from the capture interview for the template

«ExcludeFromIV(FirmName)»

«ExcludeFromIV(FirmName,FirmAddressLine1,FirmAddressLine2,FirmPostalCode)»

ExpectXSLTFormatNumbers Cause XpressDox to expect XSLT formatted numbers in data

«ExpectXSLTFormatNumbers(Yes)»

Footing Place footing text below a data element in the interview

«Footing(CompanyPostalCode,END OF COMPANY DETAILS)»

«Footing(CompanyName,)»

«Footing(CompanyPostalCode,|^bu^@Navy@END OF COMPANY DETAILS)»

ForbidThousandsSeparators Specify that capture of numeric values should not permit thousands separators

«ForbidThousandsSeparators(Yes)»

«ForbidThousandsSeparators(No)»

Heading Place heading text above a data element in the interview

«Heading(CompanyName, COMPANY DETAILS)»

«Heading(CompanyName,|^bu^@Navy@COMPANY DETAILS)»

Help Provide help text (to be shown in the Help area) for a data element

«Help(Amount,Enter the amount of the loan)»

{**Help(Address,\Enter the address, each address line on a separate line)»

HideEmptyInterview Specify whether or not an empty interview should be hidden

«HideEmptyInterview(Yes)»

«HideEmptyInterview(No)»

HideFromPreview Prevent the document generated from being inlcuded in a preview

«HideFromPreview(Yes)»

«HideFromPreview(X > 1)»

HideInsideIV Hides a data element inside the interview for the template

«HideInsideIV(DebtorTypeOption)»

«HideInsideIV(DebtorTypeOption,CreditorTypeOption,AgentTypeOption)»

Hyperlink Attach a hyperlink to a heading or footing

«Hyperlink(Description,Heading,www.xpressdox.com)»

«Hyperlink(Description,Heading,www.xpressdox.com/

HzGroup Group data elements together horizontally on the interview

«HzGroup(Title,FirstNames,LastName)»

«HzGroup(Title,FirstNames,LastName,10,EmptyAllCaptions)»

«HzGroup(Title:4,FirstNames,LastName,20)»

InhibitAutomaticRuleOnNumberFunctions Inhibit the automatic Rule commands that are generated for functions taking numeric values as input.

«InhibitAutomaticRuleOnNumberFunctions(Yes)»

InterviewFont Specify the font for the entire interview

«InterviewFont(Microsoft Sans Serif/8.25)»

«InterviewFont(Times New Roman/9)»

InterviewIsWizard Specify whether the interview should be in Wizard form or not

«InterviewIsWizard(Yes)»

«InterviewIsWizard(Strict)»

«InterviewIsWizard(No)»

InterviewLogo Provide the name of an image file to use in the interview

«InterviewLogo(images:InterviewLogo.jpg)»

InterviewRelevance Provide a condition governing the relevance of the data element in the interview

«InterviewRelevance(Name,Name = '')»

«InterviewRelevance(Children,count(Children) > 0)»

InterviewTheme The theme of the Desktop Interview

«InterviewTitle(Classic)»

«InterviewTitle(White)»

InterviewTitle Set the title which will show on the Interview screen for this template

«InterviewTitle(Custom Title for Interview Screen)»

MaximumRepeats Set the maximum number of repeats

«MaximumRepeats(Child,2)»

«MaximumRepeats(Child,IIf((ParentName = ''),0,2))»

OnEnterSet Set values when focus enters a data element’s control

«OnEnterSet(Gender,Gender,Value,(Substring(IDNumber,7,1) > '4'),'Male','Female')»

«OnEnterSet(RefNumber,RefNumber,Caption,(PartyType = 'Individual'),'ID Number','Company Number')»

«OnEnterSet(ReminderDate,ReminderDate,Value,,IncrementDate(DateOpened,7,'d'),,EvenWhenNotEmpty)»

OnExitSet Set values when focus leaves a data element’s control

«OnExitSet(IDNumber,Gender,Value,(Substring(IDNumber,7,1) > '4'),'Male','Female')»

«OnExitSet(PartyType,RefNumber,Caption,(PartyType = 'Individual'),'ID Number','Company Number')»

«OnExitSet(DateOpened,ReminderDate,Value,,IncrementDate(DateOpened,7,'d'),,EvenWhenNotEmpty)»

OptimizeParsing Optimize parsing of the template

«OptimizeParsing(Off)»

«OptimizeParsing(On)»

PlaceHolder A placeholder in the interview to which text can be attached


«PlaceHolder(DummyName)»


«PlaceHolder(DummyName,Title)»

ReadOnly Set the control for a data element on the interview to Read Only

«ReadOnly(Description)»

«ReadOnly(Description,Size,Location)»

«ReadOnly(Description,Size,Location,(UserIsPrivileged = 'Yes'))»

RepeaterCaption Set the caption for a group of repeating data elements on the interview screen

«RepeaterCaption(Child,Children)»

«RepeaterCaption(Child,^bu^@Navy@Children)»

Required Mark one or more data elements as required – i.e. must have a non-empty value

«Required(AccountNumber,Decimal)»

«Required(AccountNumber)»

«Required(AccountNumber,Surname,IDNumber)»

Rule Applies a custom made validation rule to the data element in the interview process

«Rule(Cost,hard,IsNumber,110.00,12000.00,The Cost must be greater than 109 and less than or equal to 12000.)»

«Rule(SellingPrice,hard,(Area > 1000 and SellingPrice > 500000) or (Area < 1001 and SellingPrice < 50001),'The SellingPrice must be greater than 500000 when the Area is more than 1000.')»

«Rule(IDNumber,hard,IsDigits,The IDNumber must consist only of digits)»«Rule(IDNumber,hard,string-length(IDNumber) = 13,the IDNumber must be exactly 13 digits long.)»

«Rule(IDNumber,hard,IsZAIDNumber,The IDNumber failed the test for a valid South African ID Number.)»

«Rule(Email,hard,IsEmailAddress,'The field must be a valid email address')»«Rule(Email,hard,(not(contains(Email,',')) and not(contains(Email,';'))),'not a list of addresses.')»

«Rule(Postal_Code,hard,IsUKPostalCode,'Please enter a valid UK Postal Code')»

«Rule(Price,hard,IsRegionalNumber,'EU','The value must be a number in the format 9.999,99')»

«Rule(IDNumber,soft,1 = 1,'do you want to accept the value anyway?')»

RunAsHugeTemplate Instruct XpressDox Word Addin to run the template in a separate process

«RunAsHugeTemplate(yes)»

SetInitialValue Sets the initial value for a data element that is to be captured

«SetInitialValue(PostalCode,7890)»

«SetInitialValue(Customer/State,Washington)»

SetInterviewDataOnly Set the option that a template is destined only for data capture

«SetInterviewDataOnly(Yes)»

«SetInterviewDataOnly(No)»

SetRepeaterQualifier Set the string which must appear in the interview against repeating elements

«SetRepeaterQualifier(Child,,

ShowHidden Show hidden fields on the interview

«ShowHidden(Name,Address)»

«ShowHidden(Child/Name,Child/DataOfBirth)»

«ShowHidden()»

Tab Add a tab to the main panel of the interview screen

«Tab(Financial Information,Capital,InterestRate,InterestDate,AmountPaid)»

TabOrientation Specify whether Tabs appear Horizontally or Vertically

«TabOrientation(Vertical)»

Width Set the width of the control in the interview to a fixed value

«Width(Price,6)»

Data Sources Commands and Functions    Data Sources Commands and Functions

Command or Function Name Description and Examples
ChooseFromDataSource Choose a row from a data source

«ChooseFromDataSource(Contacts,Choose a Contact)»

«ChooseFromDataSource(Contacts,Type in the Contact's ID,RefreshSave,,DisallowSearch)»

«ChooseFromDataSource(Contacts,Choose the contacts that apply,Refresh,Range=PostalCode = 7405,AllowSearch,Contacts)»

ChooseFromFile Choose data from a text or XML file

«ChooseFromFile(Lookups:Contacts.xdtxt,Choose a contact,NoRefresh,Surname)»

«ChooseFromFile(Lookups:Contacts.xdtxt,Choose the Borrower,NoRefresh,BorrowerSurname,Borrower)»

GetDataSet Get a string representation of the data set

«GetDataSet()»

«SetDataSourceData('StagingTable',Guid(),'XMLBlob',GetDataSet(),'Description',Name)»

GetDataSourceData Get the data from a data source during assembly

«SetV('ProductXML',GetDataSourceData('Products',ProductID))»

«GetDataSourceData('Products',ProductID,'ProductName')»

«GetXMLElementValue(GetDataSourceData('Products',ProductID),'ProductName')»

GetXmlElementValue Get the value of an XML element in an XML document

«GetXmlElementValue(GetV('ProductXML'),'ProductName')»

«GetXmlElementValue(GetDataSourceData('Products',ProductID),'ProductName')»

GetXPathValue Get values from XML using XPATH expressions

«GetXPathValue(GetV('ProductXML'),'count(/root/Product)')»

«GetXPathValue(GetDataSourceData('Products','Range=ProductID > 1'),'count(//Product)')»

«GetXPathValue(GetDataSourceData('Products','Range=ProductID > 1'),'sum(//Product/CostPrice)')»

IncludeDataSourceData Include data from a data source

«IncludeDataSourceData(Contacts,RefreshSave,range=PostalCode > 8000,Customers)»

IncludeFileData Include data from a text or XML file

«IncludeFileData(Contacts.xml)»

«IncludeFileData(lookups:Contacts.xml,Refresh,Customers)»

LinkToDataSource Link the control for any data element in the interview to a data source

«LinkToDataSource(MatterNumber,Cases)»

«LinkToDataSource(MatterNumber,Cases,RefreshSave,'id=,',LookupMatter = 'Y',UserClass='High')»

LinkToDataSourceOnEnter When entering a control in the interview, link it to a data source

«LinkToDataSourceOnEnter(MatterNumber,Cases)»

«LinkToDataSourceOnEnter(MatterNumber,CasesDataSource,AllowInsert,id=0,MatterNumber = '')»

«LinkToDataSourceOnEnter(MatterNumber,CasesDataSource,RefreshSave,,(MatterNumber != ''),(UserCanSave = 'Yes'))»

LinkToOtherData Links the control in the interview for this data element to a saved dataset

«LinkToOtherData(AccountNumber)»

«LinkToOtherData(AccountNumber,_

SetDataSourceData Set the value of a field in a data source

«SetDataSourceData('Products',ProductID,'UnitPrice',100)»

Formatting Dates Commands and Functions    Formatting Dates Commands and Functions

Command or Function Name Description and Examples
DateAsNumber Get a date in numeric format for numeric operations

«DateAsNumber(StartDate)»

DateTimeAsNumber Render a date/time as a number for numeric operations

«DateTimeAsNumber(StartDateTime)»

DaysBetween Gets the number of working days between two dates

«DaysBetween(EndDate,StartDate)»

«FormatNumber(((DaysBetween(Today(),DateOfBirth) div 365) - 0.5), '0')»

«DaysBetween(EndDate,StartDate,'w','2016-12-16,2016-12-26,2016-12-27,2017-01-01,2017-01-02')»

«DaysBetween(EndDate,StartDate,'wi','2016-12-16,2016-12-26,2016-12-27,2017-01-01,2017-01-02')»

«DaysBetween(EndDate,StartDate,'wi')»

FormatDate Format a field as date and/or time

«FormatDate(DateOfBirth,'yyyy/MM/dd','en')»

«FormatDate(SignatureDate,'o MMMM yyyy')»

FormatSeconds Format a number of seconds into hours, minutes and seconds

«FormatSeconds(Seconds,'HH:mm:ss')»

«FormatSeconds(Seconds,'HH')» hours, «FormatSeconds(Seconds,'mm')» minutes and «FormatSeconds(Seconds,'ss')» seconds

FormatTime Format a field as a time

«FormatTime(AppointmentTime,'hh:mm tt')»

«FormatTime(AppointmentTime,'hh:mm tt','fr')»

«FormatTime(AppointmentTime,'HH:mm:ss')»

IncrementDate Increment a date

«IncrementDate(DateOfBirth,1,'y')»

«IncrementDate(Today(),5,'d')»

«IncrementDate(Today(),5,'w')»

LastDayInMonth Get the last day in a month

«FormatDate(LastDayInMonth(Today()),'dd MMMM yyyy')»

MonthsBetween Gets the number of months between two dates

«MonthsBetween(Today(),FirstOfJan)»

Now Insert the current date (i.e. today) and/or time into the document

«Now('yyyy/MM/dd')»

«Now('MMMM o yyyy')»

«Now('d MMMM yyyy HH:mm:ss','de')»

«Now()»

SecondsBetween Gets the number of seconds between two date/times

«SecondsBetween('13:00:00','12:00:00')»

«SecondsBetween(EndTime,StartTime)»

Today Insert the current date into the document

«Today('yyyy/MM/dd')»

«Today('MMMM o yyyy')»

«Today()»

YearsBetween Gets the number of years between two dates

«Round(YearsBetween(Today(),DateOfBirth) – 0.5)»

YearsMonthsDaysBetween Gets the number of years, months and days between two dates

«YearsMonthsDaysBetween(EndDate,StartDate)»

«YearsMonthsDaysBetween(EndDate,StartDate,'M')»

Formatting Numbers Commands and Functions    Formatting Numbers Commands and Functions

Command or Function Name Description and Examples
ceiling Round a value up to the nearest integer

«ceiling(RegionToX(YearsBetween(Today(),DateOfBirth)))»

CentsToCurrency Convert value in cents to currency and format it

«CentsToCurrency(CentsValue,'#,0.00')»

CurrencySymbol Insert the currency symbol as defined in the Regional Settings

«CurrencySymbol()»

CurrencyToCents Multiplies a currency value by 100 with minimal rounding

«CurrencyToCents(Price)»

Dolares Render a numeric amount as a number of Dollars, in Spanish words

«Dolares(Price)»

«Dolares(Price,'ToUpper')»

Dollars Render a numeric amount as a number of Dollars, in words

«Dollars(Price)»

«Dollars(Price,'ToUpper')»

DollarsFrancaise Render a numeric amount as a number of Dollars, in French words

«DollarsFrancaise(Price)»

«DollarsFrancaise(Price,'ToLower')»

EuroDeutsch Render a numeric amount as a number of Euros, in German words

«EuroDeutsch(Price)»

«EuroDeutsch(Price,'ToLower')»

EurosEspanol Render a numeric amount as a number of Euros, in Spanish words

«EurosEspanol(Price)»

«EurosEspanol(Price,'ToUpper')»

EurosFrancaise Render a numeric amount as a number of Euros, in French words

«EurosFrancaise(Price)»

«EurosFrancaise(Price,'ToLower')»

floor Round a value down to the nearest integer

«floor(RegionToX(YearsBetween(Today(),DateOfBirth)))»

FormatNumber Format Number

«FormatNumber(Amount)»

«FormatNumber(Amount,'#,0.00;(#,0.00)')»

«FormatNumber(Amount,'#,0.00;(#,0.00)','FR')»

GetListItem Extract a value from a delimited list

«GetListItem(ListItem,'First,Second,Third',',')»

«GetListItem(4,IP_Address,'.')»

«GetListItem(GetV('element number'),PeriodicTable,',')»

Max Gets the higher of two values

«Max(HourlyRate * Hours, 1000)»

«Max(Age,CutoffAge)»

Min Gets the lower of two values

«Min(HourlyRate * Hours, 1000)»

«Min(Age,CutoffAge)»

Mod Gets remainder after dividing one number by another

«Mod(LineNumber, 2)»

NumberPhrase Format a number as words

«NumberPhrase(Price)»

«NumberPhrase(Price - 100,'en-us','ToUpper')»

NumberToCurrency Render a number as currency, in words

«NumberToCurrency(Price, "Dollar", "Dollars", "cent", "cents", "", "en-uk", "Leave")»

OrdinalSuffix Gets the suffix st, nd, rd, etc. of the ordinal of a number

«OrdinalSuffix(Today('d'))»

«OrdinalSuffix(Today('d'),'af')»

«OrdinalSuffix(Today('d'),'st,nd,rd,th,th,th,th,th,th,th,th,th,th,th,th,th,th,th,th,th,st,nd,rd,th,th,th,th,th,th')»

Pesos Render a numeric amount as a number of Pesos, in Spanish words

«Pesos(Price)»

«Pesos(Price,'ToUpper')»

Pounds Render a numeric amount as a number of Pounds, in words, UK English

«Pounds(Price)»

«Pounds(Price,'ToUpper')»

RaiseToPower Raise a number to a power

«RaiseToPower(SideOfSquare,2)»

Rand Render a numeric amount as a number of Rand in words, in English

«Rand(Price)»

«Rand(Price,'ToUpper')»

RandAfrikaans Render a numeric amount as a number of Rand in words, Afrikaans

«RandAfrikaans(Price)»

«RandAfrikaans(Price,'ToUpper')»

RegionToX Convert a number in regional format to XpressDox calculation-compliant format

«(RegionToX(UnitPrice) * RegionToX(Qty))»

Round Round a value to the nearest integer

«FormatNumber(Round(Price,2))»

«Round(InterestRate,3)»

sum Calculate the sum of values

«FormatNumber(sum(InvoiceLine/Amount))»

TableLookup Calculate a value from a table

«TableLookup(CapitalAmount,'3001;56;0,5001;187;0,9999999;277;0')»

«TableLookup(AnnualIncome,'122500;0;18,195000;21960;25,270000;40210;30,999999999;143010;40')»

ToNumber Renders a string already in numeric form into a number

«ToNumber(GetV('Pos'))»

XToRegion Convert a number in calculation-compliant format to regional settings format

«FormatNumber(XToRegion(RegionToX(UnitPrice) * RegionToX(Qty)),'','EU')»

Formatting Strings Commands and Functions    Formatting Strings Commands and Functions

Command or Function Name Description and Examples
Chr Get a character value from its integer representation

«OnExitSet(AddressLine2,AddressBlock,Value,,concat(AddressLine1,Chr(13),AddressLine2),,EvenWhenNotEmpty)»

CommasAndList Gets a natural language list from a delimited list.

«CommasAndList(GetV('JoinedValues'),'/',', ',' and ')»

«CommasAndList(GetV('JoinedValues'),'/',', ',' en ')»

concat Concat

«SetV('FullName',concat(FirstNames,' ',Surname))»

«SetV('Possessive',concat(Noun,'!'s'))»

CountOf Get the number of occurrences of one string inside another

«CountOf('.',Name)»

«If(CountOf('.',Name) = 0)»The name contains no initials.«End()»

CultureName Get the active culture name

«CultureName('Input')»

«CultureName('Output')»

EscapeForXml Escape a string for use in XML

«EscapeForXml(Text)»

ExtractInitials Extract Initials from name

«ExtractInitials(Fullnames,'.')»

«ExtractInitials(Fullnames,'')»

Format Format a string according to a pattern

«CreateDataElement(Format('Child[{0}]/Name',position()),GetV('Name'))»

Gender Return a value depending on a party’s gender


«ChooseFromRDBList(PartyGender,Male,Female)»
«Gender(PartyGender,1,'he,she')» took «Gender(PartyGender,1,'his,her')» bag with «Gender(PartyGender,1,'him,her')»


«ChooseFromRDBList(PartyGender,,Y~~Male,X~~Female)»«Comment(Y and X are accepted as gender codes from genetics)»
«Gender(PartyGender,1,'he,she,it')» took «Gender(PartyGender,1,'his,her,its')» bag with «Gender(PartyGender,1,'him,her,it')»


«ForEach(Party)»«ChooseFromRDBList(PartyGender,Male,Female,Neuter)»«End(ForEach party)»
«Gender(Party/PartyGender,count(Party),'he,she,it,they')» took «Gender(Party/PartyGender,count(Party),'his,her,its,their')» bag«Plural(count(Party),'','s')» with «Gender(Party/PartyGender,count(Party),'him,her,it,them')»


«ChooseUsingCheckBox(OnlyOneParty,Y,N,N)»
«Gender(PartyGender,(OnlyOneParty = 'Y'),'he,she,it,they')» took «Gender(PartyGender,(OnlyOneParty = 'Y'),'his,her,its,their')» bag«Plural((OnlyOneParty = 'Y'),'','s')» with «Gender(PartyGender,(OnlyOneParty = 'Y'),'him,her,it,them')»


«ForEach(Party)»«ChooseFromRDBList(PartyGender,M,V,D)»«End(ForEach party)»
«Gender(Party/PartyGender,count(Party),'hy,sy,die ding,hulle','M,V,D')» het «Gender(Party/PartyGender,count(Party),'sy,haar,sy,hulle','M,V,D')» sak«Plural(count(Party),'','ke')» saam met «Gender(Party/PartyGender,count(Party),'hom,haar,hom,hulle','M,V,D')» gevat.

GetRegistryValue Get a value from the registry

«GetRegistryValue('HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Accounting\Options\ScratchFolder')»

«GetRegistryValue(concat('HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Accounting\UserOptions\',WindowsLogonUser()))»

GetValidFileName Get a string which only has valid file name characters

«GetValidFileName(AccountNumber)»

«GetValidFileName(AccountNumber,'-')»

«CreateDataElement('TargetFileName',GetValidFileName(AccountNumber,'-'))»

GetValidXmlElementName Converts the passed string to a valid XML element name

«GetValidXmlElementName(Name,'_and_')»

Guid Get a GUID (Globally Unique Identifier)

«SetV('Id',Guid())»

«OnExitSet(Name,Id,Value,,Guid(),,OnlyWhenEmpty)»

HardSpace Convert normal spaces to non-breaking spaces

«HardSpace(Phrase)»

«HardSpace(Pounds(Price))»

InsertFormattedText Insert text captured as long text

«InsertFormattedText(Address)»

«InsertFormattedText(Address,Paragraph)»

«InsertFormattedText(Address,Destination)»

InsertInto Insert a string inside a value

«InsertInto(Name,3,'X.')»

InsertUnformattedLongText Inserts text captured as “long” text but with no line breaks or formatting

«InsertUnformattedLongText(Address,', ')»

Left Extract the left-most a portion of a string

«Left(Name,5)»

List Produce a delimited list (e.g. commas and ‘and’) from repeating data

«List(Party,Firstname Surname,!, , and )»

«List(Child[Age < 10],Firstname Surname,', ',' and ')»

ListDelimiter Inserts a delimiter between parts of a list, typically a comma and “and”

«ListDelimiter(position(),last()-1,'; ',' and also ')»

«ListDelimiter(position(),last()-1)»

«ListDelimiter(GetVn('counter'),GetVn('sizeMinus1'))»

Lookup Look up the value of a key in a name/value list

«Lookup(Language,'en-gb:colour;en-us:color')»

Plural Get the singular or plural depending on the number.

«Plural(count(Child),'child','children')»

«Plural(count(Child),'child!'s','children!'s')»

«ChooseUsingCheckBox(OnlyOne,Y,N,N)»«Plural((OnlyOne = 'Y'),'child','children')»

PrefixWith Insert a prefix if the value is not empty

«PrefixWith(AddressLine2,' ')»

RenderAsNumeric Force a string to be a valid numeric value

«FormatNumber(RenderAsNumeric(Amount) * 1.10)»

Replace Replace all occurrences of a specified string with another

«Replace(EnglishSentence,'grey','gray')»

«Replace(Replace(Replace(EnglishSentence,'grey','gray'),'colour','color'),'favourite','favorite')»

Right Extract the right-most a portion of a string

«Right(Name,5)»

SetEmptyMarker Set the value of the Empty Marker

«SetEmptyMarker('{^}')»

«SetEmptyMarker('{^}',LastName,FirstNames,IDNumber)»

«SetEmptyMarker('',LastName,FirstNames,IDNumber)»

«SetEmptyMarker('{~cyan~^~}')»

«SetEmptyMarker('{~red~^~}',LastName,FirstNames,IDNumber)»

substring Extract a portion of a string

«substring(Name,5)»

«substring(GetV('description'),1,string-length(GetV('name')))»

SubstringAfter Extract the substring after a given string

«SubstringAfter(Surname,'-')»

SubstringAfterLast Get the last substring using a delimiter

«SubstringAfterLast('C:\Documents\XpressDox\WordFile.docx','\')»

SubstringBefore Extract the substring before a given string

«SubstringBefore(Initials,'.')»

SubstringBeforeLast Get the substring before the last delimiter

«SubstringBeforeLast('C:\Documents\XpressDox\WordFile.docx','\')»

SuffixWith Insert a suffix if the value is not empty

«SuffixWith(FirstNames,' ')»

ToHtml Wrap string in HTML tags

«ToHtml(Description)»

ToLower Convert to lower case

«ToLower(Name)»

«ToLower(Name,1)»

«ToLower(Name,2,0)»

«ToLower(Name,3,2)»

ToSentence Convert to Sentence case

«ToSentence(Surname)»

ToTitle Convert to Title Case

«ToTitle(BookTitle)»

«ToTitle(Names,'short')»

ToUpper Convert to UPPER case

«ToUpper(Name)»

«ToUpper(Name,1,1)»

«ToUpper(Name,2,0)»

«ToUpper(Name,3,2)»

Trim Removes white space or other characters from either side of a string

«FormatNumber(Trim(Amount))»

«Trim(List,',;')»

WindowsLogonUser Returns the user name with which the current user logged on to Windows

«WindowsLogonUser()»

«SetSavedDocumentFolder(Docs

Miscellaneous Commands and Functions    Miscellaneous Commands and Functions

Command or Function Name Description and Examples
ApplyRulesToDataset Apply Rules to the Dataset in the absence of an interview

«ApplyRulesToDataset(Yes)»

«ApplyRulesToDataset(IgnoreSoftRules)»

Debug Debug missing or superfluous ‘end’ and ‘else’ issues

«Debug()»

ExcludeFromDataSet Exclude elements from the saved dataset

«ExcludeFromDataSet(DataElements,UserID,UserName,UserEmail,Child/Address)»

«ExcludeFromDataSet(DataSources,Users,Accounts)»

InsertHyperlink Insert a hyperlink into the document

«InsertHyperlink('Our Company Web Site','www.abccompany.com.xy')»

«InsertHyperlink(concat(DirectorName, ' profile'),DirectorProfileWebSite)»

Log Log a message

«Log(concat('At this point in the template, and the value of Name is ',Name))»

LogDataElements Log a list of data elements with a message

«LogDataElements(The name and address are,Name,Address)»

LogVariables Log a list of XpressDox variable values with a message

«LogVariables(At the middle of the template,Total,TotalTax)»

MakeNoise Make one of the system sounds

«MakeNoise()»

«MakeNoise('Asterisk')»

PaintInsertedText Paint Text Inserted by Fillpoints

«PaintInsertedText(Yes,Blue)»

«PaintInsertedText(Yes,Blue,Paint='Yes')»

«PaintInsertedText(No)»

«PaintInsertedText(No,Red)»

PdfUserPassword Set a User Password when saving as PDF

«PdfUserPassword('MySecretPassword')»

«PdfUserPassword(FormatDate(DateOfBirth,'yyyyMMdd'))»

PreviewHighlight Set the color to use for highlighting inserted text for the preview

«PreviewHighlight(Blue)»

RequiredVersion Allows the template author to prevent a template running if the installed version of XpressDox is too low.

«RequiredVersion(3.1.1)»

RestrictToLicenses Supply licence serial numbers for this template

«RestrictToLicenses(123,124,300)»

RunTemplates Specify a number of templates to be run when this template is run.

«RunTemplates(CoveringLetter,Contract,Invoice,DebitOrder)»

SaveAsHtml Specify whether or not to save the merged document in HTML format.
SaveAsRtf Specify whether or not to save the merged document in RTF format.
SaveAsText Specify whether or not to save the merged document in plain text format.

«SaveAsText(Yes)»

SetMultipleDocumentFilter Sets a filter applying to the Document Per Repeated Item feature

«SetMultipleDocumentFilter(ChildAge > 12)»

«SetMultipleDocumentFilter(ChildAge > ../AgeFilterValue)»

UpdateTableFormattingForPdf Request that table formatting is performed when saving to PDF

«UpdateTableFormattingForPdf((Amount != 0))»

«UpdateTableFormattingForPdf('Yes')»

WriteTimeStampToDataSet Specify whether or not to write a time stamp into the dataset

«WriteTimeStampToDataSet(Yes)»

Object Execution Commands and Functions    Object Execution Commands and Functions

Command or Function Name Description and Examples
CreateObject Create a reference to a COM or .NET object

«CreateObject('Excel','Excel.Application')»

«CreateObject('Account','o2Smart.PracticeManagement.Account, o2Smart.PracticeManagement','ctor',AccountNumber)»

GetObjectValue Get the value of a property or method call on a COM or .NET object

«GetObjectValue('msword:Version')»

«GetObjectValue('msword:PointsToInches',72)»

GetProperty Get the value of a property of a COM or .NET object

«GetProperty('MyObject:MyPropertyName')»

«GetProperty('msword:ActiveDocument.Name')»

InvokeMethod Invoke a method on a COM or .NET object

«InvokeMethod('Excel.Application:Quit')»

«InvokeMethod('msword:ChangeFileOpenDirectory',concat('C:\Users\',WindowsLogonUser(),'\Documents\XpressDox'))»

SetProperty Set the value of a property of a COM or .NET object

«SetProperty('Excel.Application:ActiveCell.FormulaR1C1',Today('yyyy-MM-dd'))»

Post Merge Commands and Functions    Post Merge Commands and Functions

Command or Function Name Description and Examples
RunWordMacro Run a Word macro after the template has been merged.

«RunWordMacro(MacroName)»

«RunWordMacro(FirstMacro,SecondMacro)»

SaveAsPdf Specify whether or not to save the merged document in PDF format.
SaveDataset Specify whether or not to save the dataset.

«SaveDataset(No)»

SetCustomDocumentProperty Sets a custom document property in the merged document.

«SetCustomDocumentProperty(MadeByXpressDox,Y)»

«SetCustomDocumentProperty(XDFsProf-custom1,CUSTOM1VALUE1)»

SetDocumentName Set the document name (referenced as ).

«SetDocumentName(CoveringLetter)»

SetSavedDataFileName Set the file name of the data that was captured in an interview for the template.

«SetSavedDataFileName(Data

«SetSavedDataFileName(concat('Data ',GetValidFileName(AccountNumber)))»

SetSavedDataFolder Sets the folder where the data captured in the interview will be saved.

«SetSavedDataFolder(Data

«SetSavedDataFolder(concat('Data ',WindowsLogonUser()))»

SetSavedDocumentFileName Set the file name of the merged document.

«SetSavedDocumentFileName(

«SetSavedDocumentFileName(concat('Document for ',GetValidFileName(AccountNumber)))»

SetSavedDocumentFolder Set the folder where the merged document will be saved.

«SetSavedDocumentFolder(Docs

«SetSavedDocumentFolder(concat('Docs ',WindowsLogonUser()))»

SetSavedDocumentNameVersioning Set the option governing the versioning of the merged document file name (default is ON)

«SetSavedDocumentNameVersioning(Off)»

UpdateFields Indicate that the Table of Contents and Word fields must be updated

«UpdateFields(Yes)»

Repeating Commands and Functions    Repeating Commands and Functions

Command or Function Name Description and Examples
ForEach Repeat for a number of repeating data elements

«ForEach(Party)» «End()»

«ForEach(Party,Surname,ascending,text)» «End(for each)»

«ForEach(Child[Age < 12]) selects children whose age is less than 12» «End()»

last Used in a ForEach to test whether the last repeating item is being referenced.

«last()»

«If((position() > 1) and (position() < last()-1))», «End()»«If((position() > 1) and (position() = last()-1))» and «End()»

Ordinal Ordinal (i.e. First, Second,…) inside ForEach

«Ordinal()»

«Ordinal(,Eerste,Tweede,Derde,Vierde,Fyfde,Sesde,Sewende,Agste en verdere)»

position Get the position within a ForEach

«When(position() > 1, and )»

«ForEach(Party)»«PartyFullNames»«If(last() > 1)»«When(position() < last()-1,!, )»«When(position() = last()-1, and )»«End(party > 1)»«End(for each)»

RepeatWhile Repeat while a condition is true

«SetV('This','XXThat')»«RepeatWhile(GetV('This') != 'That')»Variable 'This' is «GetV('This')» «SetV('This',substring(GetV('This'),2))»«End()»

Templates Commands and Functions    Templates Commands and Functions

Command or Function Name Description and Examples
AppendPDF Append a PDF file to the assembled (PDF) document

«AppendPDF(PDFFileName)»

«AppendPDF('Survey Agreement.pdf')»

«AppendPDF('Survey Agreement.pdf|Non-disclosure Agreement.pdf')»

BaseTemplate Base (or overlay) this template on another template

«BaseTemplate(LetterHead)»

«BaseTemplate(headings:LetterHead,Destination)»

ComeHereAfterRun Place a marker in the template where the cursor should be after the template has run.

«ComeHereAfterRun()»

DocumentBody Insert the body of the originating template into the Base Template

«DocumentBody»

IncludeCodeTemplate Include only those paragraphs which contain XpressDox merge fields

«IncludeCodeTemplate(utils:Help,Text)»

IncludePicture Include a picture

«IncludePicture(images:Logo.jpg,0.8in,0.8in)»

IncludeSpreadsheet Include a spreadsheet in the final document

«IncludeSpreadsheet(HourlyRates.xslt)»

IncludeTemplate Include a template as part of this template

«IncludeTemplate(utils:Clauses,Destination,ExcludeHeaders)»

«IncludeTemplate(utils:Clauses,Destination,PreserveHeaders)»

«IncludeTemplate(utils:Help,Text)»

InsertPicture Insert a picture

«InsertPicture(concat('images:Personnel\',Signatory,'.jpg'),0.8in,0.8in)»

InsertSpreadsheet Insert a spreadsheet in the final document

«InsertSpreadsheet(concat('HourlyRatesFor',DirectorCode,'.xslt'))»

InsertTemplate Insert a template whose name appears in a data element which is chosen by the user.

«InsertTemplate(Clause,Destination)»

«InsertTemplate(concat('Clauses:',ChosenClauseName,PartyType),Destination)»

«InsertTemplate('Party Underage Clause',Destination)»

«InsertTemplate('letters:Covering Letter',Destination,PreserveHeaders)»

MergeDataSheetTemplate Merge this template’s Data Sheet Template

«MergeDataSheetTemplate()»

MergePDFForm Merge a PDF from after the currently running template

«MergePDFForm('Agreement')»

«MergePDFForm(concat('Agreement -',PartyType),'Agreement')»

«MergePDFForm(concat('Agreement -',PartyType),'Agreement','R')»

MergeTemplate Merge another template after the currently running template

«MergeTemplate('Agreement')»

«MergeTemplate(concat('Agreement -',PartyType))»

Paragraph Split the containing paragraph into two at this point.

«Paragraph()»

«Paragraph('Letter Body')»

ReplaceField Replace a Merge Field in the Base Template

«ReplaceField(Addressee)»«ClientName»«ReplaceFieldEnd()»

«ReplaceField(ToUpper(Addressee))»«ToSentence(ClientName)»«ReplaceFieldEnd()»

Script Define a chunk of document for re-use

«Script(ProductDescription)»chunk of text«ScriptEnd()»

«Script(ProductDescription,UpperOrTitle)»«&UpperOrTitle&(chunk of text)»«ScriptEnd()»

ScriptIf Conditionally include text in a script

«ScriptIf(&Required& = 'Y')»«Required(&Name&)»«ScriptIfEnd()»

SetCoreFileProperty Sets a core file property in the merged document

«SetCoreFileProperty('Author',WindowsLogonUser())»

«SetCoreFileProperty('Subject',What_this_is_About)»

TemplateName Get the file name of the running template

«TemplateName()»

«TemplateName('true','true')»

UseScript Insert the contents of a script defined in another part of the template.

«UseScript(ProductDescription)»

Value Returns the value of what is passed (specifically needed for Scripts)

«Value(&ParameterName&)»

Variables Commands and Functions    Variables Commands and Functions

Command or Function Name Description and Examples
AppendVr Append values to the end of a variable

«AppendVr('List',',')»

«AppendVr('List',',',PartyName)»

ArrayAppendVr Append a value to the value of an array element

«ArrayAppendVr('contacts','FullName',' ',Surname)»

ArrayClear Removes all entries from an array

«ArrayClear('Transactions')»

ArrayConcat Concatenate one array into another

«ArrayConcat('AllContacts','ForeignContacts')»

ArrayCount Get the number of elements in an array

«ArrayCount('A')»

ArrayDelete Delete an array element

«ArrayDelete('contacts','dependants')»

ArrayGetV Get the value of an array element

«ArrayGetV('contacts','dependants')»

«ArrayGetV('contacts',3)»

ArrayGetVn Get the value of an array element as numeric where the context requires it

«ArrayGetVn('contacts','dependants')»

ArrayIncrementV Increment the value of an array element

«ArrayIncrementV('contacts','dependants')»

«ArrayIncrementV('contacts','dependants',count(Child))»

ArrayIncrementVr Increment the value of an array element, and remove the paragraph

«ArrayIncrementVr('contacts','dependants')»

«ArrayIncrementVr('contacts','dependants',count(Child))»

ArrayKeys Get one of the keys of the elements in the array

«ArrayKeys('A',1)»

«ArrayKeys('A',ArrayCount('A'))»

«SetVr('Ix',1)»
«RepeatWhile(GetV('Ix') <= ArrayCount('A'))»
«ArrayKeys('A',GetV('Ix'))» = «ArrayValues('A',GetV('Ix'))»
«IncrementVr('Ix')»
«End()»

ArrayRemoveDuplicates Removes duplicate (and empty) elements from an array

«ArrayRemoveDuplicates('foodList')»

ArraySetFromString Create an array from a delimited string

«ArraySetFromString('names','Fred,John,Mary,Jack',',')»

ArraySetV Initialise or change the value of an array element

«ArraySetV('contact','N',FirstNames)»

«ArraySetV('contact',3,FirstNames)»

ArraySetVr Initialise or change the value of an array element, and remove the paragraph

«ArraySetVr('contact','N',FirstNames)»

ArraySortByIndex Sorts the elements of an array by the index values

«ArraySortByIndex('Transactions')»

«ArraySortByIndex('Transactions','Numeric')»

ArraySortByValue Sorts the elements of an array by value

«ArraySortByValue('Transactions')»

ArrayValues Get one of the values of the elements in the array

«ArrayValues('A',1)»

«ArrayValues('A',ArrayCount('A'))»

«SetVr('Ix',1)»
«RepeatWhile(GetV('Ix') <= ArrayCount('A'))»
«ArrayValues('A',GetV('Ix'))»
«IncrementVr('Ix')»
«End()»

CreateDataElement Create a data element in the template’s data set.

«CreateDataElement('ThisDataElement',GetV('ThisVariable')»

«CreateDataElement('ThisFileName'),GetValidFileName(AccountNumber)»

Execute Execute a number of functions

«Execute(SetV('X',12),GetV('X'))»

«Execute(SetV('X',12),IncrementV('X'),GetV('X'))»

GetV Get the value of a variable

«GetV('Balance')»

GetVn Get the value of a variable used as numeric

«Party[GetVn('Counter')]/Name»

GetVOrDefault Get the value of a variable if it has been defined otherwise a default value

«GetVOrDefault('NumberOfLines',1)»

IncrementV Increment a variable value

«IncrementV('Counter')»

«IncrementV('Total',RenderAsNumeric(Amount))»

IncrementVr Increment a variable by a given amount and remove the paragraph

«IncrementVr('Total',RenderAsNumeric(Amount))»

«IncrementVr('Counter')»

PrependVr Prefix values at the front of a variable

«PrependVr('List',',')»

«PrependVr('List',PartyName,',')»

RemoveParagraph Remove the paragraph after the template has merged.

«RemoveParagraph()»

SetV Set a variable value

«SetV('Balance',0)»

«SetV('Balance',GetV('Balance') + RenderAsNumeric(Amount))»

«IncrementV('Balance', RenderAsNumeric(Amount))»

«ChooseFromRDBList(Gender,Male,Female)»«If(Gender = "Male")»«SetV("PronounHe","he")»«Setv("PronounHim","him")»«SetV("PronounHis","his")»«Else()»«SetV("PronounHe","she")»«SetV("PronounHim","her")»«SetV("PronounHis","her")»«End()»«RemoveParagraph()»
«GetV('PronounHe')» took «GetV('PronounHis')» bag with «GetV('PronounHim')»


«ChooseFromRDBList(PartyGender,Male,Female)»
«Gender(PartyGender,1,'he,she')» took «Gender(PartyGender,1,'his,her')» bag with «Gender(PartyGender,1,'him,her')»

SetVR Set a variable value and remove the paragraph

«SetVR('Balance',0)»

«SetVr('Balance',GetV('Balance') + RenderAsNumeric(Amount))»

«ChooseFromRDBList(Gender,Male,Female)»«If(Gender = "Male")»«SetVr("PronounHe","he")»«Setv("PronounHim","him")»«SetV("PronounHis","his")»«Else()»«SetVR("PronounHe","she")»«SetV("PronounHim","her")»«SetV("PronounHis","her")»«End()»
«GetV('PronounHe')» took «GetV('PronounHis')» bag with «GetV('PronounHim')»

Web Commands and Functions    Web Commands and Functions

Command or Function Name Description and Examples
EnableWebLocalSave Enable Save Local on the Web

«EnableWebLocalSave(Yes)»

EnableWebPreview Enable the Preview option on Integrated Web interview

«EnableWebPreview(Yes)»

«EnableWebPreview(No)»

SendWebEmail Set all the properties to send an email from a Web based template

«SendWebEmail(ToAddress,'','','noreply@email.com','Documents attached for your info','emailbody.html','false','true','false')»

SetWebButtonText Sets the text to be shown in the “Assemble Document” button on the web interview

«SetWebButtonText(Submit)»

SetWebCustomButton Sets custom text to be implemented in the interview by the web designer

«SetWebCustomButton('Do Something')»

SetWebInterimSaveButton Sets the text to be shown in the “InterimSave” button on the web interview, and the URL

«SetWebInterimSaveButton(Save data and Exit,http://www.mydomain.com/SaveInterviewData.php?interviewID=76575&type=privateCompany)»

SetWebInterviewMinimumHeight Set the minimum height of the Web Interview

«SetWebInterviewMinimumHeight(200)»

SetWebInterviewSize Set the Web Interview Size

«SetWebInterviewSize(Medium)»

SetWebReturnURL Set the return URL for a web-based template

«SetWebReturnURL('www.MyLawFirm.com/DocumentCompleted.aspx')»

«SetWebReturnURL('www.MyLawFirm.com/DocumentCompleted.php?userID=131234&activity=LoanApplication')»

«SetWebReturnURL('www.MyLawFirm.com/DocumentCompleted.php?userID=&activity=LoanApplication')»

Back to top »