SubtitleEdit/subtitleedit · error · Exception
{e.Message}
Error message
{e.Message} What it means
Thrown by DCinemaSmpte2014.ValidationCallBack during ToText export when the generated DCinema XML fails validation against SMPTE-428-7-2014-DCST.xsd. Identical mechanism to the 2007/2010 variants: a ValidationEventArgs message is re-thrown as a bare Exception. The 2014 schema adds further constraints on top of 2010.
Source
Thrown at src/libse/SubtitleFormats/DCinemaSmpte2014.cs:604
xmld.LoadXml(result);
using (var xr = XmlReader.Create(zip))
{
xmld.Schemas.Add(null, xr);
xmld.Validate(ValidationCallBack);
}
}
catch (Exception exception)
{
Errors = "Error validating xml via SMPTE-428-7-2014-DCST.xsd: " + exception.Message;
}
}
return DCinemaSmpte2010.FixDcsTextSameLine(result);
}
private void ValidationCallBack(object sender, ValidationEventArgs e)
{
throw new Exception(e.Message);
}
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
{
_errorCount = 0;
var sb = new StringBuilder();
lines.ForEach(line => sb.AppendLine(line));
var xml = new XmlDocument { XmlResolver = null };
xml.LoadXml(sb.ToString().Replace("<dcst:", "<").Replace("</dcst:", "</").Replace("xmlns=\"http://www.smpte-ra.org/schemas/428-7/2014/DCST\"", string.Empty)); // tags might be prefixed with namespace (or not)... so we just remove them
var ss = Configuration.Settings.SubtitleSettings;
try
{
ss.InitializeDCinemaSettings(true);
XmlNode node = xml.DocumentElement.SelectSingleNode("Id");
if (node != null)
{
ss.CurrentDCinemaSubtitleId = node.InnerText;View on GitHub (pinned to 17a9f07487)
Solutions
- Read e.Message in the exception to identify the precise schema rule and element.
- Add the missing 2014-specific attributes/elements (language, Region, etc.).
- If 2014 features are not needed, export using the 2010 or 2007 profile.
- Cross-check with an external SMPTE 428-7-2014 XSD validator.
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-validate against SMPTE-428-7-2014-DCST.xsd with a collecting handler
var schemas = new XmlSchemaSet();
schemas.Add(null, "SMPTE-428-7-2014-DCST.xsd");
var settings = new XmlReaderSettings { ValidationType = ValidationType.Schema, Schemas = schemas };
var errors = new List<string>();
settings.ValidationEventHandler += (s, e) => errors.Add(e.Message); Try / catch
try
{
var text = format.ToText(subtitle, title);
}
catch (Exception ex) when (ex.Message.Contains("validation"))
{
logger.Error(ex, "DCinema 2014 validation failed");
} Prevention
- Supply all 2014-mandated attributes (Region, language, etc.).
- Pre-validate output with a collecting XSD handler before returning to the user.
- Export as 2010/2007 if 2014 features are not required.
When it happens
Trigger: Exporting to DCinema 2014 XML whose content violates the 2014 schema — additional required attributes, stricter time code or language rules, or Font/Region constraints not present in earlier versions.
Common situations: Subtitles without the newer required metadata (e.g. Region dimensions, language tags); content targeting the 2010 or 2007 profile that does not satisfy 2014 additions.
Related errors
- {e.Message}
- {e.Message}
- MXF KLV packet - stream does not have 16 bytes available for
- NameList: Unable to read name list file: {fileNameOrUrl}
- Invalid ASSA time code: {time}
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/1b03ab3ec881e46c.
Report an issue: GitHub.