Durante la creazione di record o campi facoltativi in uno schema di file flat, è importante comprendere il modo in cui i dati file flat vengono analizzati, in modo che sia possibile progettare il proprio schema di file flat senza ambiguità. Ad esempio, se viene creato uno schema di file flat con un nodo root delimitato e tre campi stringa child in cui field1 è obbligatorio, field2 è facoltativo e field3 è obbligatorio, la grammatica dello schema è ambigua, come illustrato quando, durante il runtime, vengono analizzati i seguenti dati:
A,C
Se viene specificato un campo obbligatorio dopo un campo facoltativo, viene definita una grammatica ambigua che non può essere correttamente analizzata. Anche specificando un record obbligatorio dopo un campo facoltativo viene definita una grammatica ambigua che non può essere correttamente analizzata.
Se questo schema di file flat viene nuovamente definito in modo da contenere tre campi stringa child in cui field1 è obbligatorio, field2 è facoltativo e field3 è facoltativo, il problema non viene risolto perché quando i dati file flat A,C vengono analizzati, field1 è uguale ad A e field2 è uguale a C. Anche in questo caso, la grammatica dello schema è ambigua perché questo non corrisponde al risultato desiderato. Il risultato desiderato era rappresentato dall'assegnazione del valore C a field3. Se viene specificato un record obbligatorio seguito da due record facoltativi, viene ancora una volta definita una grammatica ambigua.