예제 #1
0
        /**
         *
         */
        public void TranslateInputDocument()
        {
            if (_content != null && IsParsible())
            {
                try
                {
                    //---------------------------------//
                    //--- Setup XML reader settings ---//
                    //---------------------------------//
                    ValidationEventHandler validationHandler = (s, ee) => LogManager.SourceError(SOURCE, ee.Exception);
                    var settings = new XmlReaderSettings();
                    settings.ValidationType = ValidationType.None;
                    settings.ValidationFlags = XmlSchemaValidationFlags.None;
                    settings.ValidationEventHandler += validationHandler;

                    string content = Encoding.UTF8.GetString(_content);
                    if (string.IsNullOrWhiteSpace(content))
                        return;
                    using (var sr = new StringReader(content))
                    {
                        using (XmlReader xrXml = new XmlTextReader(sr))
                        {

                            var doc = new XPathDocument(xrXml);

                            string xsdName = SchemaManager.GetSchemaName(Encoding.UTF8.GetString(_content));
                            string xslName = xsdName.Replace(".xsd", ".xsl");

                            StringReader xslReader = GetXSLReader(xslName);
                            var xr = new XmlTextReader(xslReader);
                            var xslt = new XslCompiledTransform();
                            xslt.Load(xr);

                            //--------------------------------------------------------------------------//
                            //--- Create an XsltArgumentList for custom transformation functionality ---//
                            //--------------------------------------------------------------------------//
                            var xslArg = new XsltArgumentList();
                            var fileName = ProjectManager.ProjectName + ATMLContext.ATML_CONFIG_FILENAME_SUFFIX;
                            xslArg.AddParam("documentName", "", fileName );

                            // Add an object to calculate the new book price.
                            var obj = new ReaderTools();
                            //TODO: Figure out all the functionality required for translation
                            xslArg.AddExtensionObject("urn:utrs.atml-reader-tools", obj);

                            //---------------------------//
                            //--- Transform the file. ---//
                            //---------------------------//
                            using (var w = new StringWriter())
                            {
                                var stringBuilder = new StringBuilder();
                                var xws = new XmlWriterSettings();
                                xws.OmitXmlDeclaration = true;
                                xws.Indent = true;
                                xws.NewLineOnAttributes = false;
                                xws.NamespaceHandling = NamespaceHandling.OmitDuplicates;
                                using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xws))
                                {
                                    xslt.Transform(doc, xslArg, xmlWriter);
                                    LogManager.SourceTrace(SOURCE, "ATML translation Completed");
                                    try
                                    {
                                        Console.Write(stringBuilder.ToString());
                                        _testConfiguration = TestConfiguration15.Deserialize(stringBuilder.ToString());
                                    }
                                    catch (Exception e)
                                    {
                                        LogManager.SourceError(SOURCE,
                                            "An error has occurred attempting to marshall the translated document into an ATML Test Configuration object.",
                                            e);
                                    }
                                    OnTranslatedInputDocument(_testConfiguration);
                                }
                            }
                        }
                    }
                }
                catch (Exception ee)
                {
                    LogManager.SourceError(SOURCE, ee, "An error has occurred attempting to process the input document.");
                }
            }
        }
예제 #2
0
        /**
         *
         */

        public void TranslateInputDocument()
        {
            if (_content != null && IsParsible())
            {
                try
                {
                    //---------------------------------//
                    //--- Setup XML reader settings ---//
                    //---------------------------------//
                    ValidationEventHandler validationHandler = (s, ee) => LogManager.SourceError(SOURCE, ee.Exception);
                    var settings = new XmlReaderSettings();
                    settings.ValidationType          = ValidationType.None;
                    settings.ValidationFlags         = XmlSchemaValidationFlags.None;
                    settings.ValidationEventHandler += validationHandler;

                    string content = Encoding.UTF8.GetString(_content);
                    if (string.IsNullOrWhiteSpace(content))
                    {
                        return;
                    }
                    using (var sr = new StringReader(content))
                    {
                        using (XmlReader xrXml = new XmlTextReader(sr))
                        {
                            var doc = new XPathDocument(xrXml);

                            string xsdName = SchemaManager.GetSchemaName(Encoding.UTF8.GetString(_content));
                            string xslName = xsdName.Replace(".xsd", ".xsl");

                            StringReader xslReader = GetXSLReader(xslName);
                            var          xr        = new XmlTextReader(xslReader);
                            var          xslt      = new XslCompiledTransform();
                            xslt.Load(xr);

                            //--------------------------------------------------------------------------//
                            //--- Create an XsltArgumentList for custom transformation functionality ---//
                            //--------------------------------------------------------------------------//
                            var xslArg   = new XsltArgumentList();
                            var fileName = ProjectManager.ProjectName + ATMLContext.ATML_CONFIG_FILENAME_SUFFIX;
                            xslArg.AddParam("documentName", "", fileName);

                            // Add an object to calculate the new book price.
                            var obj = new ReaderTools();
                            //TODO: Figure out all the functionality required for translation
                            xslArg.AddExtensionObject("urn:utrs.atml-reader-tools", obj);

                            //---------------------------//
                            //--- Transform the file. ---//
                            //---------------------------//
                            using (var w = new StringWriter())
                            {
                                var stringBuilder = new StringBuilder();
                                var xws           = new XmlWriterSettings();
                                xws.OmitXmlDeclaration  = true;
                                xws.Indent              = true;
                                xws.NewLineOnAttributes = false;
                                xws.NamespaceHandling   = NamespaceHandling.OmitDuplicates;
                                using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xws))
                                {
                                    xslt.Transform(doc, xslArg, xmlWriter);
                                    LogManager.SourceTrace(SOURCE, "ATML translation Completed");
                                    try
                                    {
                                        Console.Write(stringBuilder.ToString());
                                        _testConfiguration = TestConfiguration15.Deserialize(stringBuilder.ToString());
                                    }
                                    catch (Exception e)
                                    {
                                        LogManager.SourceError(SOURCE,
                                                               "An error has occurred attempting to marshall the translated document into an ATML Test Configuration object.",
                                                               e);
                                    }
                                    OnTranslatedInputDocument(_testConfiguration);
                                }
                            }
                        }
                    }
                }
                catch (Exception ee)
                {
                    LogManager.SourceError(SOURCE, ee, "An error has occurred attempting to process the input document.");
                }
            }
        }