private static void WriteName(this MamlWriter writer, ChildEntry entry, TopicManager topicManager)
        {
            switch (entry.ChildType)
            {
            case ChildType.Element:
            case ChildType.ElementExtension:
                var element     = (XmlSchemaElement)entry.Particle;
                var isExtension = (entry.ChildType == ChildType.ElementExtension);
                writer.WriteElementLink(topicManager, element, isExtension);
                break;

            case ChildType.Any:
                writer.WriteHtmlArtItemWithText(ArtItem.AnyElement, "Any");
                break;

            case ChildType.All:
                writer.WriteHtmlArtItemWithText(ArtItem.All, "All");
                break;

            case ChildType.Choice:
                writer.WriteHtmlArtItemWithText(ArtItem.Choice, "Choice");
                break;

            case ChildType.Sequence:
                writer.WriteHtmlArtItemWithText(ArtItem.Sequence, "Sequence");
                break;

            default:
                throw ExceptionBuilder.UnhandledCaseLabel(entry.ChildType);
            }
        }
        private static void WriteFacet(this MamlWriter writer, int level, SimpleTypeStructureNode node, string facetType)
        {
            var facetValue = ((XmlSchemaFacet)node.Node).Value;

            writer.StartTableRowEntry();
            writer.WriteHtmlIndent(level);
            writer.WriteHtmlArtItemWithText(ArtItem.Facet, facetType);
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString(facetValue);
            writer.EndTableRowEntry();
        }
        private static void WriteImageWithTopicLink(this MamlWriter writer, TopicManager topicManager, ArtItem artItem, XmlSchemaType type)
        {
            var topic = topicManager.GetTopic(type);

            if (topic != null)
            {
                writer.WriteHtmlArtItemWithTopicLink(artItem, topic);
            }
            else
            {
                writer.WriteHtmlArtItemWithText(artItem, type.QualifiedName.Name);
            }
        }
        private static void WriteElementLink(this MamlWriter writer, TopicManager topicManager, XmlSchemaElement element, bool isExtension)
        {
            var artItem = element.RefName.IsEmpty && !isExtension
                            ? ArtItem.Element
                            : ArtItem.ElementRef;
            var topic = topicManager.GetTopic(element);

            if (topic != null)
            {
                writer.WriteHtmlArtItemWithTopicLink(artItem, topic);
            }
            else
            {
                writer.WriteHtmlArtItemWithText(artItem, element.QualifiedName.Name);
            }
        }
        private static void WriteAttributeTopicLink(this MamlWriter writer, TopicManager topicManager, XmlSchemaAttribute attribute, bool isExtension)
        {
            var artItem = attribute.RefName.IsEmpty && !isExtension
                            ? ArtItem.Attribute
                            : ArtItem.AttributeRef;

            var topic = topicManager.GetTopic(attribute);

            if (topic != null)
            {
                writer.WriteHtmlArtItemWithTopicLink(artItem, topic);
            }
            else
            {
                writer.WriteHtmlArtItemWithText(artItem, attribute.QualifiedName.Name);
            }
        }
 protected override void Visit(XmlSchemaSimpleType type)
 {
     if (type.QualifiedName.IsEmpty)
     {
         Traverse(type.Content);
     }
     else
     {
         var topic = _context.TopicManager.GetTopic(type);
         if (topic != null)
         {
             _writer.WriteHtmlArtItemWithTopicLink(ArtItem.SimpleType, topic);
         }
         else
         {
             _writer.WriteHtmlArtItemWithText(ArtItem.SimpleType, type.QualifiedName.Name);
         }
     }
 }
        public static void WriteAttributeTable(this MamlWriter writer, Context context, AttributeEntries attributeEntries)
        {
            if (attributeEntries.Attributes.Count == 0 && attributeEntries.AnyAttribute == null)
            {
                return;
            }

            writer.StartTable();
            writer.StartTableHeader();
            writer.StartTableRow();

            writer.StartTableRowEntry();
            writer.WriteString("Name");
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString("Type");
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString("Required");
            writer.EndTableRowEntry();

            writer.StartTableRowEntry();
            writer.WriteString("Description");
            writer.EndTableRowEntry();

            writer.EndTableRow();
            writer.EndTableHeader();

            var sortedAttributes = from a in attributeEntries.Attributes
                                   orderby a.QualifiedName.Name
                                   select a;

            foreach (var attribute in sortedAttributes)
            {
                writer.StartTableRow();

                writer.StartTableRowEntry();
                writer.WriteAttributeTopicLink(context.TopicManager, attribute, false);
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteType(context, attribute.AttributeSchemaType);
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteRequiredText(attribute.Use);
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteSummaryForObject(context, attribute);
                writer.EndTableRowEntry();

                writer.EndTableRow();
            }

            if (attributeEntries.AnyAttribute != null)
            {
                writer.StartTableRow();

                writer.StartTableRowEntry();
                writer.WriteHtmlArtItemWithText(ArtItem.AnyAttribute, "Any");
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteSummaryForObject(context, attributeEntries.AnyAttribute);
                writer.EndTableRowEntry();

                writer.EndTableRow();
            }

            var sortedExtensionAttributes = from a in attributeEntries.ExtensionAttributes
                                            orderby a.QualifiedName.Name
                                            select a;

            foreach (var attribute in sortedExtensionAttributes)
            {
                writer.StartTableRow();

                writer.StartTableRowEntry();
                writer.WriteHtmlIndent(1);
                writer.WriteAttributeTopicLink(context.TopicManager, attribute, true);
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteType(context, attribute.AttributeSchemaType);
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteRequiredText(attribute.Use);
                writer.EndTableRowEntry();

                writer.StartTableRowEntry();
                writer.WriteSummaryForObject(context, attribute);
                writer.EndTableRowEntry();

                writer.EndTableRow();
            }

            writer.EndTable();
        }