2.3.8.2 Reconciliation
When loading a file, each CT_NsvFilter (section 2.6.212) needs to be matched with a specific AutoFilter. And beyond that each columnFilter and sortRule within the nsvfilter needs to be matched with specific columns within that AutoFilter.
After all parts are loaded this reconciliation is done as sequence of checks in priority order. The match with the highest priority SHOULD be taken. If all checks are exhausted with no match being found the nsvfilter SHOULD be dropped. Similarly, if a specific columnFilter or sortRule element cannot match to a specific column then those elements SHOULD be dropped.
To connect a CT_NsvFilter (section 2.6.212) with to a specific AutoFilter the priority sequence of checks is as follows
A match exists between the filterId attribute on the CT_NsvFilter (section 2.6.212) and a uid (section 2.5.10) attribute stored on a CT_AutoFilter ([ISO/IEC29500-1:2016] section A.2).
The tableId attribute on the CT_NsvFilter (section 2.6.212) is not equal to 0 AND there is a table owned AutoFilter (as explained in section 2.3.8.1) such that the tableId attribute matches the id attribute on that CT_Table ([ISO/IEC29500-1:2016] section A.2)
The tableId attribute on the CT_NsvFilter (section 2.6.212) is 0 AND there is a worksheet owned AutoFilter (as explained in section 2.3.8.1)
To map each columnFilter element within CT_NsvFilter (section 2.6.212) to a specific column the sequence of checks is as follows
The matched AutoFilter is table owned (as explained in section section 2.3.8.1) and the CT_Table ([ISO/IEC29500-1:2016] section A.2) describing that table contains a tableColumn element which specifies uid (section 2.5.8) attribute that matches id attribute on CT_ColumnFilter (section 2.6.209). In this case id attribute on the matching CT_TableColumn ([ISO/IEC29500-1:2016] section A.2) identifies the column this columnFilter element applies to.
The ref attribute on the CT_AutoFilter ([ISO/IEC29500-1:2016] section A.2) that describes the matched AutoFilter specifies a range large enough for the colId attribute on CT_ColumnFilter (section 2.6.209) to be a column within that range. In this case the colId identifies the column this columnFilter element applies to.
To map each sortRule element within CT_SortRules (section 2.6.214) to a specific column the sequence of checks is as follows
The matched AutoFilter is table owned (as explained in section section 2.3.8.1) and the CT_Table ([ISO/IEC29500-1:2016] section A.2) describing that table contains a tableColumn element which specifies uid (section 2.5.8) attribute that matches id attribute on CT_SortRule (section 2.6.213). In this case id attribute on the matching CT_TableColumn ([ISO/IEC29500-1:2016] section A.2) identifies the column this sortRule element applies to.
The ref attribute on the CT_AutoFilter ([ISO/IEC29500-1:2016] section A.2) that describes the matched AutoFilter specifies a range large enough for the colId attribute on CT_ SortRule (section 2.6.213) to be a column within that range. In this case the colId identifies the column this sortRule element applies to.