private void InitializeObsoleteDocumentationInfo(DocumentationInfo documentationInfo, XmlNode schemaDocElement, XmlNamespaceManager namespaceManager)
        {
            var obsoleteNode = schemaDocElement.SelectSingleNode("xsd:obsolete", namespaceManager);

            if (obsoleteNode == null)
            {
                return;
            }

            documentationInfo.IsObsolete = true;

            var uriAttribute = obsoleteNode.Attributes["uri"];

            if (uriAttribute == null)
            {
                return;
            }

            var uri = uriAttribute.Value;
            var nonObsoleteTopic = Context.TopicManager.GetTopicByUri(uri);

            if (nonObsoleteTopic == null)
            {
                Context.ProblemReporter.InvalidObsoleteUri(uri);
            }
            else
            {
                documentationInfo.NonObsoleteAlternative = nonObsoleteTopic.SchemaObject;
            }
        }
        private DocumentationInfo GetOrCreateDocumentationInfo(object key)
        {
            DocumentationInfo documentationInfo;

            if (!_documentationInfos.TryGetValue(key, out documentationInfo))
            {
                documentationInfo = new DocumentationInfo();
                _documentationInfos.Add(key, documentationInfo);
            }
            return(documentationInfo);
        }
        private static void WriteObsoleteInfo(this MamlWriter writer, Context context, DocumentationInfo documentationInfo)
        {
            if (!documentationInfo.IsObsolete)
                return;

            if (documentationInfo.NonObsoleteAlternative == null)
            {
                writer.WriteObsoleteInfo();
                return;
            }

            var topic = context.TopicManager.GetTopic(documentationInfo.NonObsoleteAlternative);
            if (topic == null)
            {
                writer.WriteObsoleteInfo();
                return;
            }

            writer.WriteObsoleteInfo(topic);
        }
        private void InitializeDocumentationInfo(XmlSchemaObject documentatbleObject, DocumentationInfo documentationInfo, XmlNode schemaDocElement, XmlNamespaceManager namespaceManager)
        {
            documentationInfo.SummaryNode       = schemaDocElement.SelectSingleNode("ddue:summary", namespaceManager) ?? documentationInfo.SummaryNode;
            documentationInfo.RemarksNode       = schemaDocElement.SelectSingleNode("ddue:remarks", namespaceManager) ?? documentationInfo.RemarksNode;
            documentationInfo.ExamplesNode      = schemaDocElement.SelectSingleNode("xsd:examples", namespaceManager) ?? documentationInfo.ExamplesNode;
            documentationInfo.RelatedTopicsNode = schemaDocElement.SelectSingleNode("ddue:relatedTopics", namespaceManager) ?? documentationInfo.RelatedTopicsNode;

            // schemaset and namespaces do not have an XmlSchemaObject counterpart.
            if (documentatbleObject == null)
            {
                return;
            }

            InitializeObsoleteDocumentationInfo(documentationInfo, schemaDocElement, namespaceManager);
            InitializeParentDocumentationInfo(schemaDocElement, namespaceManager, documentatbleObject);
        }
 public static void WriteSummary(this MamlWriter writer, DocumentationInfo documentationInfo)
 {
     if (documentationInfo != null && documentationInfo.SummaryNode != null)
         writer.WriteRawContent(documentationInfo.SummaryNode);
 }
        private void InitializeObsoleteDocumentationInfo(DocumentationInfo documentationInfo, XmlNode schemaDocElement, XmlNamespaceManager namespaceManager)
        {
            var obsoleteNode = schemaDocElement.SelectSingleNode("xsd:obsolete", namespaceManager);
            if (obsoleteNode == null)
                return;

            documentationInfo.IsObsolete = true;

            var uriAttribute = obsoleteNode.Attributes["uri"];
            if (uriAttribute == null)
                return;

            var uri = uriAttribute.Value;
            var nonObsoleteTopic = Context.TopicManager.GetTopicByUri(uri);

            if (nonObsoleteTopic == null)
                Context.ProblemReporter.InvalidObsoleteUri(uri);
            else
                documentationInfo.NonObsoleteAlternative = nonObsoleteTopic.SchemaObject;
        }
        private void InitializeDocumentationInfo(XmlSchemaObject documentatbleObject, DocumentationInfo documentationInfo, XmlNode schemaDocElement, XmlNamespaceManager namespaceManager)
        {
            documentationInfo.SummaryNode = schemaDocElement.SelectSingleNode("ddue:summary", namespaceManager) ?? documentationInfo.SummaryNode;
            documentationInfo.RemarksNode = schemaDocElement.SelectSingleNode("ddue:remarks", namespaceManager) ?? documentationInfo.RemarksNode;
            documentationInfo.ExamplesNode = schemaDocElement.SelectSingleNode("xsd:examples", namespaceManager) ?? documentationInfo.ExamplesNode;
            documentationInfo.RelatedTopicsNode = schemaDocElement.SelectSingleNode("ddue:relatedTopics", namespaceManager) ?? documentationInfo.RelatedTopicsNode;

            // schemaset and namespaces do not have an XmlSchemaObject counterpart.
            if (documentatbleObject == null)
                return;

            InitializeObsoleteDocumentationInfo(documentationInfo, schemaDocElement, namespaceManager);
            InitializeParentDocumentationInfo(schemaDocElement, namespaceManager, documentatbleObject);
        }
 private DocumentationInfo GetOrCreateDocumentationInfo(object key)
 {
     DocumentationInfo documentationInfo;
     if (!_documentationInfos.TryGetValue(key, out documentationInfo))
     {
         documentationInfo = new DocumentationInfo();
         _documentationInfos.Add(key, documentationInfo);
     }
     return documentationInfo;
 }
        private static void WriteRemarksSection(this MamlWriter writer, DocumentationInfo documentationInfo)
        {
            if (documentationInfo == null || documentationInfo.RemarksNode == null)
                return;

            writer.WriteSection("Remarks", "remarks", documentationInfo.RemarksNode);
        }
        private static void WriteExamplesSection(this MamlWriter writer, DocumentationInfo documentationInfo)
        {
            if (documentationInfo == null || documentationInfo.ExamplesNode == null)
                return;

            writer.WriteSection("Examples", "examples", documentationInfo.ExamplesNode);
        }