public void TranslateAIXMLDocument()
{
if (_content != null && IsParsible())
{
try
{
//---------------------------------//
//--- Setup XML reader settings ---//
//---------------------------------//
ValidationEventHandler validationHandler = (s, ee) => LogManager.SourceError(ATMLTranslator.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();
xslArg.AddParam( "documentName", "", ProjectManager.ProjectName + ".1671.4.xml" );
// Add an object to calculate the new book price.
var obj = new TranslationLibrary();
//TODO: Figure out all the functionality required for translation
xslArg.AddExtensionObject( "urn:utrs.atml-translator-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(ATMLTranslator.SOURCE, "ATML Test Description translation Completed");
try
{
string xmlOut = stringBuilder.ToString();
FileManager.WriteFile( Encoding.UTF8.GetBytes( xmlOut ) );
}
catch (Exception e)
{
LogManager.SourceError(ATMLTranslator.SOURCE,
"An error has occurred attempting to marshall the translated document into an ATML Test Configuration object.",
e );
}
//OnTranslatedInputDocument(stringBuilder.ToString(), _testConfiguration);
}
}
}
}
}
catch (Exception ee)
{
LogManager.SourceError(ATMLTranslator.SOURCE, ee, "An error has occurred attempting to process the input document.");
}
}
}