/// <summary>
        /// инициализирует дочерние элементы
        /// </summary>
        /// <param name="_item">корневой элемент</param>
        /// <param name="_factory">фабрика элементов курса</param>
        /// <exception cref="ArgumentNullException">Нулевой дочерний элемент</exception>
        /// <exception cref="AppException">Не удалось идентифицировать дочерний элемент</exception>
        void InitChild(LearningSection _item, XSLTItemsFactory _factory)
        {
            IItemModelForXSLT ch = null;
            bool validCreating   = false;

            foreach (AbstractLearningItem li in _item.childs)
            {
                try
                {
                    ch = _factory.Create(li, out validCreating);
                    if (!validCreating)
                    {
                        throw new Exception(item.identifier + ": неопределенный тип элемента курса: " + item.GetType());
                    }

                    if (ch != null)
                    {
                        Items.Add(ch);
                    }
                }
                catch (ArgumentNullException)
                {
                    throw new Exception("Один из дочерних элементов нулевой: " + _item.identifier);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
        }
        /// <summary>
        /// получить объект элемента курса
        /// IItemModelForXSLT
        /// </summary>
        /// <param name="_item">объект элемента курса IItemModel</param>
        /// <param name="_isValid">выходная переменная для подтверждения корректности опреации
        /// создания элемента</param>
        /// <returns>объект элемента курса IItemModelForXSLT
        /// null - объект не идентифицирован</returns>
        /// <exception cref="ArgumentNullException"></exception>
        /// <remarks>выходная переменная внесена для предотвращения исключений
        /// с возвратом нулевого элемента заведомо учтенных данных (входной, выходной тесты)</remarks>
        public IItemModelForXSLT Create(AbstractLearningItem _item, out bool _isValid)
        {
            if (_item == null)
            {
                throw new ArgumentNullException();
            }

            IItemModelForXSLT im = null;

            _isValid = false;

            ItemType iType = _item.GetItemType();



            switch (iType)
            {
            case ItemType.Section:
                im = new ItemSectionForXSLT((LearningSection)_item, this);
                break;

            case ItemType.Theme:
                im = new ItemThemeForXSLT((LearningItem)_item, tlFactory);
                break;

            case ItemType.Test:
                im = new ItemTestForXSLT((ContentLib.Core.Content.Testing.Test)_item);
                break;

            case ItemType.InTest:
            case ItemType.OutTest:
                _isValid = true;
                break;
            }

            if (im != null)
            {
                _isValid = true;
            }

            return(im);
        }