|
1 | | -# Sequence maxOccurs="unbounded" Test |
| 1 | +## Sequence maxOccurs="unbounded" Test |
2 | 2 |
|
3 | | -This test documents a known EXIP limitation with `<sequence maxOccurs="unbounded">` patterns. |
| 3 | +Attempted reproducer for a grammar collision issue found in CCSDS NDM/XML 4.0 schemas. |
4 | 4 |
|
5 | | -## Issue |
| 5 | +### Real-World Issue |
6 | 6 |
|
7 | | -EXIP currently triggers an assertion at `src/grammarGen/src/genUtils.c:268` when processing schemas containing: |
| 7 | +CCSDS NDM/XML 4.0 schemas trigger a grammar collision error during schema generation: |
8 | 8 |
|
9 | | -```xml |
10 | | -<xsd:sequence maxOccurs="unbounded"> |
11 | | - <xsd:element .../> |
12 | | - <xsd:element .../> |
13 | | -</xsd:sequence> |
| 9 | +``` |
| 10 | +> Grammar collision: duplicate adjacent elements in sequence not implemented yet at genUtils.c, line 269 |
14 | 11 | ``` |
15 | 12 |
|
16 | | -This pattern is valid W3C XML Schema but EXIP's collision detection is too strict. |
17 | | - |
18 | | -## Test Files |
19 | | - |
20 | | -- `test.xsd` - Minimal schema demonstrating the pattern |
21 | | -- `test.xml` - Sample data exercising the schema |
22 | | -- `check_sequence_unbounded.c` - Test code (in `tests/` directory) |
23 | | - |
24 | | -## Pattern |
25 | | - |
26 | | -The schema represents: `(item? value?)*` |
27 | | - |
28 | | -This allows: |
29 | | -- Zero or more sequence iterations |
30 | | -- Each iteration can have 0-1 item and 0-1 value |
31 | | -- Items can appear after values across sequence boundaries |
32 | | - |
33 | | -## Expected Behavior |
34 | | - |
35 | | -**Current:** Assertion failure at genUtils.c:268 |
36 | | - |
37 | | -**Once fixed:** Grammar generation should succeed (EXIP_OK) |
38 | | - |
39 | | -## Why This Matters |
| 13 | +The schemas return `EXIP_NOT_IMPLEMENTED_YET` (error code 1) and cannot be loaded. |
40 | 14 |
|
41 | | -1. CCSDS NDM/XML 4.0 specification uses this pattern |
42 | | -2. Pattern is memory-efficient (loop-back edges, no rule explosion) |
43 | | -3. Infrastructure already exists (same as element-level maxOccurs="unbounded") |
44 | | -4. Fix is likely relaxing overly-strict validation |
| 15 | +### Reproducer Status |
45 | 16 |
|
46 | | -## Running the Test |
| 17 | +Incomplete - the minimal schema here does **not** trigger the collision. The `test_sequence_unbounded` test in `check_strict_grammar` currently passes (schema loads successfully with `EXIP_OK`). |
47 | 18 |
|
48 | | -```bash |
49 | | -cd build/vs2022/Debug # or Release |
50 | | -./check_sequence_unbounded.exe ../../tests/test-set |
51 | | -``` |
| 19 | +### Test Files |
52 | 20 |
|
53 | | -Expected: Currently fails with assertion. Once fixed, should pass. |
| 21 | +- `test.xsd` - Minimal schema attempting to reproduce the pattern |
| 22 | +- `test.xsd.exi` - EXI-encoded schema |
| 23 | +- `test.xml` - Sample data |
| 24 | +- `test.xml.exi` - EXI-encoded data |
0 commit comments