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();
        }
 public static void WriteAttributesSection(this MamlWriter writer, Context context, AttributeEntries attributeEntries)
 {
     writer.StartSection("Attributes", "attributes");
     writer.WriteAttributeTable(context, attributeEntries);
     writer.EndSection();
 }