error: Failed to parse Markdown content!
# Content Analysis: SPL Exam Question Files

## Summary

**Total questions: 510 (English) + matching French translation**

| Subject | File | EN Questions | Notes |
|---------|------|-------------|-------|
| 01 Air Law | 01 - Air Law.md | 50 | Source: QuizVDS.it EASA ECQB-SPL |
| 02 Aircraft General Knowledge | 02 - Aircraft General Knowledge.md | 50 | |
| 03 Communications | 03 - Communications.md | 50 | |
| 04 Flight Performance and Planning | 04 - Flight Performance and Planning.md | 30 | (shorter) |
| 05 Human Performance | 05 - Human Performance.md | 50 | |
| 06 Meteorology | 06 - Meteorology.md | 50 | |
| 07 Navigation | 07 - Navigation.md | 80 | Incl. Swiss SFVS exercises |
| 08 Operational Procedures | 08 - Operational Procedures.md | 50 | |
| 09 Principles of Flight | 09 - Principles of Flight.md | 50 | |

Note: SPL Exam Questions.md index page states the full bank has 981 questions total across all sources (QuizVDS, SFVS, BAZL mock exams). The files counted above represent the QuizVDS-sourced questions. Navigation has 141 total per index including Swiss exercises.

## Question Format (Markdown)

Each question follows this exact structure:

```markdown
### Q{N}: {Question text} ^q{N}
> *[FR](../SPL Exam Questions FR/01 - Droit aérien.md#^q{N})*
- A) {option}
- B) {option}
- C) {option}
- D) {option}
**Correct: {letter})**

> **Explanation:** {detailed explanation paragraph}
```

### Key structural observations:
- Questions use `### Q{N}:` headers with Obsidian block reference anchors `^q{N}`
- Each English question links directly to its French counterpart via relative path
- 4 answer options always labeled A, B, C, D
- Correct answer on its own line: `**Correct: X)**`
- Explanation in a blockquote immediately after
- Some questions embed images using Obsidian wiki-link syntax: `![[figures/filename.png]]`
- Some use standard markdown: `![Alt text](figures/filename.svg)`

## Image/Figure References

Two syntaxes in use:
1. **Obsidian wiki-link**: `![[figures/bazl_30_q08_ask21_speed_polar.png]]` - used in BAZL mock exam questions
2. **Standard markdown**: `![Earth Globe](figures/NAV-002-earth-globe.svg)` - used in custom-created figures

### Figures directory: 58 total files
- 8 SVG files (custom-drawn navigation diagrams)
- 50 PNG files (BAZL official exam images: speed polars, charts, maps, airport diagrams)

Images primarily appear in:
- Navigation (SVG diagrams)
- Flight Performance and Planning (BAZL speed polars, loading tables, approach charts, maps)
- Operational Procedures (ground signals)

## French Version

- Identical structure to English
- Same filenames (French titles): `01 - Droit aérien.md`, `06 - Météorologie.md`, etc.
- Same question count confirmed for files checked (50 Air Law, 50 Meteorology)
- Questions use `^q{N}` anchors matching English versions
- Links back to English: `> *[EN](../SPL Exam Questions/01 - Air Law.md#^q1)*`
- Shares the same `figures/` directory (images are language-neutral)

## Recommended JSON Format for App

```json
{
"version": "1.0.0",
"updated_at": "2026-03-15T00:00:00Z",
"subjects": [
{
"id": "air_law",
"code": "01",
"name": {
"en": "Air Law",
"fr": "Droit aérien"
},
"questions": [
{
"id": "air_law_q1",
"number": 1,
"text": {
"en": "The holder of an SPL license...",
"fr": "Le titulaire d'une licence SPL..."
},
"options": {
"en": {
"A": "Winch and bungee.",
"B": "Winch, bungee and aero-tow.",
"C": "Winch and aero-tow.",
"D": "Aero-tow and bungee."
},
"fr": {
"A": "Treuil et sandow.",
"B": "...",
"C": "...",
"D": "..."
}
},
"correct": "A",
"explanation": {
"en": "Under Part-SFCL...",
"fr": "Selon la Part-SFCL..."
},
"figures": []
},
{
"id": "pfp_q14",
"number": 14,
"text": { "en": "...", "fr": "..." },
"options": { "en": {...}, "fr": {...} },
"correct": "B",
"explanation": { "en": "...", "fr": "..." },
"figures": [
{
"filename": "bazl_30_q14_discus_loading_table.png",
"type": "png",
"alt": "Discus loading table"
}
]
}
]
}
]
}
```

### Key design decisions:
- Bilingual content embedded in single question object (not separate files)
- `figures` array per question (empty array if no figures)
- `id` format: `{subject_code}_{qN}` for stable cross-referencing
- `version` + `updated_at` at top level for update detection
- Correct answer stored as letter string "A"/"B"/"C"/"D"
- Subjects have both `id` (slug) and `code` (01-09 for ordering)