Как проверить XML на соответствие XSD с помощью Saxon Home Edition (HE) 9.4

Как я могу использовать Saxon Home Edition (HE) 9.4 для проверки XML на соответствие XSD?

Нужна ли мне версия Enterprise для выполнения этой основной задачи, о чем свидетельствует сообщение об ошибке? Вот код, который я использую.

private void btnSaxonTest3_Click(object sender, EventArgs e)
 // validate xml against xsd and show multiple errors
{
  try
  {
    SetGlobalVariables();
    Saxon.Api.Processor proc = new Processor(true);
    //this is the property to set for multiple errors
    //proc.SetProperty("net.sf.saxon.lib.FeatureKeys.VALIDATION_WARNINGS", "true");  //Enterprise function only?

    SchemaManager schemaManager = proc.SchemaManager;

    FileStream xsdFs = new FileStream(GvXSDFullPath, FileMode.Open);

    schemaManager.Compile(XmlReader.Create(xsdFs));
    SchemaValidator validator = schemaManager.NewSchemaValidator();

    FileStream xmlFs = new FileStream(GvXMLFullPath, FileMode.Open);

    validator.SetSource(XmlReader.Create(xmlFs));
    validator.ErrorList = new ArrayList();
    try
    {
      validator.Run();
    }
    catch (Exception)
    {
      AddMsg("Instance validation failed with " + validator.ErrorList.Count + " errors");
      foreach (StaticError error in validator.ErrorList)
      {
        AddMsg("At line " + error.LineNumber + ": " + error.Message);
      }
      txtResults.Text = GvResults;
      return;
    } // try catch
  }
  catch (Exception ex)
  {
    AddMsg(ex.ToString());
  }
  AddMsg("Process completed");
  txtResults.Text = GvResults;
}

person user610064    schedule 13.03.2012    source источник


Ответы (1)


Вам нужна ЕЕ версия. Вы можете узнать больше о каждой версии Saxon здесь:

http://www.saxonica.com/products/products.xml

person David Carlisle    schedule 13.03.2012
comment
Спасибо, я надеялся, что это не так. Мне понравилось, как реализация .NET Schematron позволила мне добавить разметку в файл XSD и выполнить проверку основных бизнес-правил. Похоже, мне придется потратить деньги, чтобы сделать это с Саксоном. - person user610064; 13.03.2012