private static void MergeComplexStructure_Action(XmlNode childNode, XmlNode destinationNode)
        {
            if (childNode == null)
            {
                return;
            }

            MetadataDocumentManagement metaDataDocMgt = MetadataDocumentManagement.Instance;
            XmlNode actionIDNode = childNode.SelectSingleNode("./a:ID", metaDataDocMgt.XmlNamespaceMgt);

            if ((actionIDNode == null) || (String.IsNullOrEmpty(actionIDNode.InnerText)))
            {
                XmlNode captionMlNode = childNode.SelectSingleNode("./a:CaptionML", metaDataDocMgt.XmlNamespaceMgt);
                if (captionMlNode == null)
                {
                    captionMlNode = childNode.FirstChild;
                    string log = string.Format(CultureInfo.InvariantCulture, Resources.AddCaptionMl, childNode.InnerXml);
                    TransformationLog.GenericLogEntry(log, LogCategory.Warning, metaDataDocMgt.GetCurrentPageId);
                }

                String newID =
                    metaDataDocMgt.CalcId(GetProperty(captionMlNode.ParentNode, "NewID"),
                                          XmlUtility.GetCaption(captionMlNode.InnerText), captionMlNode.ParentNode.ParentNode.Name).ToString(CultureInfo.InvariantCulture);

                actionIDNode           = metaDataDocMgt.XmlDocument.CreateNode(XmlNodeType.Element, "ID", metaDataDocMgt.XmlNamespace);
                actionIDNode.InnerText = newID;

                XmlNode newNode = metaDataDocMgt.XmlDocument.ImportNode(childNode, true);
                newNode.PrependChild(actionIDNode);
                destinationNode.AppendChild(newNode);
            }
            else
            {
                XmlNode destinationActionNode = destinationNode.SelectSingleNode("./a:" + childNode.Name + "[./a:ID = " + actionIDNode.InnerText + "]", metaDataDocMgt.XmlNamespaceMgt);
                if (destinationActionNode != null)
                {
                    MergeSimpleSection(childNode, destinationActionNode);
                }
                else
                {
                    /* TODO  !!! TEMPORARY !!!  we should change TransformPages.xml instead! */
                    // Lets try to find it by ID:
                    XmlNodeList actionListById = childNode.SelectNodes(@".//a:ID", metaDataDocMgt.XmlNamespaceMgt);
                    if (actionListById.Count == 0)
                    {
                        /* Something is wrong in the transformation input file... */
                        string logStr = string.Format(
                            CultureInfo.InvariantCulture,
                            Resources.IDNotFound,
                            actionIDNode.InnerText);
                        TransformationLog.GenericLogEntry(logStr, LogCategory.CheckInputFile, metaDataDocMgt.GetCurrentPageId);

                        // break;
                        return;
                    }

                    foreach (XmlNode actionById in actionListById)
                    {
                        string  query = ".//a:Action[./a:ID = " + actionById.InnerText + "]";
                        XmlNode destinationActionNodeById = destinationNode.ParentNode.SelectSingleNode(query, metaDataDocMgt.XmlNamespaceMgt);
                        if (destinationActionNodeById != null)
                        {
                            MergeSimpleSection(actionById.ParentNode, destinationActionNodeById);
                        }
                        else
                        {
                            /* Something is wrong in the transformation input file... */
                            string logStr = string.Format(
                                CultureInfo.InvariantCulture,
                                Resources.IDNotFound,
                                actionById.InnerText);
                            string  tmpAddStr = string.Empty;
                            XmlNode tmp       = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:ID[../a:ID = " + actionById.InnerText + "]", metaDataDocMgt.XmlNamespaceMgt);
                            if (tmp != null)
                            {
                                tmpAddStr = tmp.ParentNode.ParentNode.InnerXml;
                            }
                            TransformationLog.GenericLogEntry(logStr, LogCategory.CheckInputFile, metaDataDocMgt.GetCurrentPageId, tmpAddStr);
                        }
                    }
                }
            }
        }