# 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