/// <summary>
        /// Esegue il task i cui dati sono accessibili dal documento xml di origine specificato
        /// e salva i risultati ottenuti dall'esecuzione del task sul documento xml specificato
        /// come destinazione.
        /// </summary>
        /// <param name="sourceData">documento xml da cui leggere i dati del task da eseguire</param>
        /// <param name="targetData">documento xml su cui scrivere i risultati del task eseguito</param>
        internal static void Execute(XmlDocument sourceData, ref XmlDocument targetData)
        {
            XmlElement root = sourceData.DocumentElement;

            XmlNodeList nodeList     = root.SelectNodes("/task/function[@functionName]/@functionName");
            string      functionName = (nodeList.Count == 1 ? nodeList.Item(0).Value : string.Empty);

            if (functionName == "WordsCount")
            {
                string dataToProcess = root.SelectSingleNode("/task/data").InnerText;

                List <WordCount> result = CalculateWordsCounts(dataToProcess);
                Serialize(result, ref targetData);
            }
            else if (functionName == "MeanStdDev")
            {
                string dataToProcess = root.SelectSingleNode("/task/data").InnerText;

                MeanStdDevResult results = CalculateMeanStdDev(dataToProcess);
                Serialize(results, ref targetData);
            }
            else
            {
                throw new TaskProcessingException(string.Format("Funzione non trovata: {0}.", functionName));
            }
        }
        /// <summary>
        /// Permette di scrivere il risultato specificato all'interno del documento xml specificato.
        /// </summary>
        /// <param name="result">risultato da scrivere</param>
        /// <param name="document">documento xml di destinazione</param>
        private static void Serialize(MeanStdDevResult results, ref XmlDocument document)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MeanStdDevResult));

            using (XmlWriter writer = document.CreateNavigator().AppendChild())
            {
                serializer.Serialize(writer, results);
            }
        }
 /// <summary>
 /// Permette di scrivere il risultato specificato all'interno del documento xml specificato.
 /// </summary>
 /// <param name="result">risultato da scrivere</param>
 /// <param name="document">documento xml di destinazione</param>
 private static void Serialize(MeanStdDevResult results, ref XmlDocument document)
 {
     XmlSerializer serializer = new XmlSerializer(typeof(MeanStdDevResult));
     using (XmlWriter writer = document.CreateNavigator().AppendChild())
     {
         serializer.Serialize(writer, results);
     }
 }