/// <summary> /// получить тему по идентификатору /// </summary> /// <param name="idTheme">идентификатор темы private ItemThemeForXSLT GetTheme(Guid _id) { if (_id == null) { throw new ArgumentNullException(); } ItemThemeForXSLT theme = (ItemThemeForXSLT)itemsAdapter.GetCourseItem(_id); if (theme == null) { throw new Exception("Не найдена тема с идентификатором: " + _id); } return(theme); }
/// <summary> /// выполнить конвертацию тем /// </summary> public void Do() { try { SendMessage("\n- Конвертация тестов"); XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(convParams.TestShemePath); foreach (XElement tt in tests) { usedIdentifers = new List <string>(); Guid idTest = Guid.Parse(tt.Element(NodeNames.IDENTIFER).Value); ItemTestForXSLT test = (ItemTestForXSLT)itemsAdapter.GetCourseItem(idTest); if (test == null) { throw new Exception("Не найден тест с идентификатором: " + idTest); } XDocument testDoc = XDocument.Load(test.XMLFilePath); if (testDoc == null) { throw new Exception("Не удается загрузить тест " + idTest + ": " + test.XMLFilePath); } CorrectTest(testDoc); string outFile = Path.Combine(convParams.OutItemsPath, test.FileName + ".html"); string testFilesNewPath = Path.Combine(convParams.OutMediaFiles.AsPath(), test.FileName).AsPath(); DirectoryHelper.CreateDirectory(testFilesNewPath, false); ///SAXON Processor proc = new Processor(); XdmNode input = proc.NewDocumentBuilder().Build(testDoc.Root.CreateReader()); XsltTransformer transformer = proc.NewXsltCompiler().Compile(new Uri(convParams.TestShemePath)).Load(); transformer.InitialContextNode = input; transformer.SetParameter(new QName("", "", "mediaFolderName"), new XdmAtomicValue(convParams.CourseDataFolderName)); transformer.SetParameter(new QName("", "", "currentFolderName"), new XdmAtomicValue(test.FileName)); ///задать адрес директории для xsl:result-document transformer.BaseOutputUri = new Uri(testFilesNewPath); Serializer serializer = new Serializer(); serializer.SetOutputFile(outFile); transformer.Run(serializer); CopyTestFiles(test, testFilesNewPath); } } catch (Exception ex) { throw new Exception("Исключение при конвертации теста курса: " + ex.Message); } }