# XML Schema Validation and Autocomplete The PDF-TEI Editor supports comprehensive XML schema validation and intelligent autocomplete features for TEI documents, supporting both XSD and RelaxNG schemas. ## Overview The application supports two types of XML schema validation: 1. **XSD (XML Schema Definition)** - For validation only 2. **RelaxNG (Regular Language for XML Next Generation)** - For validation and intelligent autocomplete The validation approach is automatically detected based on how the schema is declared in your XML documents. ## XSD Validation For XSD-based validation, use the standard `xsi:schemaLocation` attribute in your root element: ```xml ``` ### XSD Features - ✅ Full validation against XSD schemas - ❌ No autocomplete support (XSD schemas are not compatible with the autocomplete generator) ## RelaxNG Validation For RelaxNG-based validation, use the `xml-model` processing instruction: ```xml ``` ### RelaxNG Features - ✅ Full validation against RelaxNG schemas - ✅ **Intelligent autocomplete** with TEI documentation extracted directly from the schema - ✅ Context-aware suggestions for elements, attributes, and attribute values - ✅ Documentation popups with detailed explanations from the TEI schema ## Intelligent Autocomplete System The autocomplete system provides an enhanced editing experience when using RelaxNG schemas: ### Features **Context-Aware Suggestions**: - Element suggestions based on current location in document structure - Attribute suggestions specific to the current element - Attribute value suggestions from schema-defined enumerations - Only valid options are shown at each position **TEI Documentation Integration**: - Real-time documentation popups extracted from TEI schema comments - Detailed explanations of elements, attributes, and their usage - Examples and best practices embedded in the editor **Performance Optimization**: - Schema parsing is cached for fast subsequent access - Suggestions are generated dynamically without pre-computation - Minimal impact on editor performance ### How It Works 1. **Schema Detection**: The system reads the `xml-model` processing instruction 2. **Schema Download**: RelaxNG schema is downloaded and cached automatically 3. **Documentation Extraction**: TEI documentation is parsed from schema annotations 4. **Context Analysis**: Current cursor position determines valid suggestions 5. **Real-Time Suggestions**: Autocomplete shows contextually appropriate options ## Schema Caching Both XSD and RelaxNG schemas are downloaded and cached automatically when first encountered. ### Cache Location - **Cache Directory**: `schema/cache` - **Automatic Download**: Schemas are fetched on first use - **Persistence**: Cached schemas persist across application restarts ### Cache Management ```bash # Refresh cached schemas (delete cache directory) rm -rf schema/cache ``` The cache will be automatically rebuilt when documents are opened that reference external schemas. ## Best Practices ### Schema Selection **For Validation Only**: - Use XSD schemas with `xsi:schemaLocation` - Suitable when you only need document validation - Standard XML toolchain compatibility **For Enhanced Editing Experience**: - Use RelaxNG schemas with `xml-model` processing instructions - Provides full validation plus intelligent autocomplete - Recommended for interactive document creation and editing ### TEI Projects For TEI document projects, **RelaxNG is strongly recommended** because: 1. **Full Editing Experience**: Intelligent autocomplete with contextual suggestions 2. **Documentation Integration**: Built-in TEI guidelines and examples 3. **Schema Flexibility**: RelaxNG provides more expressive validation rules 4. **Community Standard**: TEI Guidelines are authored in RelaxNG ### Example TEI Document Setup ```xml My TEI Document

Publication information

Information about the source

Document content goes here

``` ## Custom Schemas The system supports both standard TEI schemas and custom schemas: ### Custom XSD Schemas ```xml ``` ### Custom RelaxNG Schemas ```xml ``` ## Validation Performance The validation system is optimized for performance: - **Incremental Validation**: Only validates changed portions of large documents - **Background Processing**: Validation runs asynchronously to avoid blocking the editor - **Caching**: Schema compilation results are cached for repeated use - **Timeout Protection**: Long-running validations are automatically cancelled ## Troubleshooting ### Common Issues **Schema Not Found**: - Verify the schema URL is accessible - Check network connectivity for remote schemas - Ensure local schema files are in the correct path **No Autocomplete Suggestions**: - Confirm you're using RelaxNG with `xml-model` processing instruction - Verify the schema URL points to a valid RelaxNG file - Check that the schema has been successfully downloaded and cached **Validation Errors**: - Review the document structure against the schema requirements - Check for missing required elements or attributes - Verify namespace declarations match the schema expectations **Performance Issues**: - Large schemas may take time to process initially - Check the browser console for validation timeout warnings - Consider using simpler schemas for better performance ### Cache Issues If you encounter schema caching problems: 1. **Clear the cache**: Delete the `schema/cache` directory 2. **Restart the application**: Ensure clean schema reloading 3. **Check file permissions**: Verify the cache directory is writable 4. **Network issues**: Confirm external schema URLs are accessible ## Related Documentation - [Development Guide](development.md) - Technical implementation details - [Installation Guide](installation.md) - Setting up the validation system - [Interface Overview](interface-overview.md) - Using the XML editor with validation