Ok, suppose your main data source was structured like this:
myFields
L attendees
L attendee (repeating)
L name (string)
L attended (boolean)
And let's call the field where the semicolon delimited names are "nameList"
When you want to populate the list, you send this command to qRules:
concat("Insert /parent=/my:myFields/my:attendees /child=my:attendee /count=', string-length(nameList) - string-length(translate(nameList, ';', '')) + 1)
This string-length(nameList) - string-length(translate(nameList, ';', '')) + 1 part here is a trick to count the number of semicolon-separated segments in the field value.
Then on the attendee field, you add the following rules:
Rule1 - condition: nameList contains ;
Set name to substring-before(nameList, ';')
Set nameList to substring-after(nameList, ';')
Rule 2 - condition: nameList does not contain ;
Set name to nameList
As rows are added to the table, rule 1 will slowly chip away at nameList, removing the first part, and leaving the remaining part. Then when there is only one remaining part and the final row is added, rule 2 kicks in to assign the remainder to the name field.
Could you give that a try?