예제 #1
0
        //private static void WriteNamespaceLink(this MamlWriter writer, Context context, string namespaceUri)
        //{
        //    var topic = context.TopicManager.GetNamespaceTopic(namespaceUri);
        //    if (topic == null)
        //        writer.WriteString(namespaceUri ?? "Empty");
        //    else
        //        writer.WriteLink(topic.Id, topic.LinkTitle);
        //        //writer.WriteHtmlTopicLink(topic);
        //}

        private static void WriteSchemaLink(this MamlWriter writer, Context context, XmlSchemaObject obj)
        {
            var topic = context.TopicManager.GetTopic(obj.GetSchema());

            if (topic == null)
            {
                writer.WriteString(obj.GetSchemaName());
            }
            else
            {
                writer.WriteLink(topic.Id, topic.LinkTitle);
            }
            //writer.WriteHtmlTopicLink(topic);
        }
예제 #2
0
        private static string GetTopicLinkIdUri(TopicType type, XmlSchemaObject obj)
        {
            if (type == TopicType.Namespace ||
                type == TopicType.Schema)
            {
                return(null);
            }

            var annotated = (XmlSchemaAnnotated)obj;

            if (String.IsNullOrEmpty(annotated.Id))
            {
                return(null);
            }

            var targetNamespace = obj.GetSchema().TargetNamespace;
            var schemaName      = obj.GetSchemaName();

            return(String.Format("{0}#{1}#{2}", targetNamespace, schemaName, annotated.Id));
        }
예제 #3
0
        private string GetTopicLinkUri(TopicType type, string objNamespace, XmlSchemaObject obj)
        {
            if (type == TopicType.Namespace)
            {
                return(objNamespace ?? String.Empty);
            }

            var isGlobal = obj.Parent is XmlSchema;
            var parent   = _topicUriStack.Peek();

            switch (type)
            {
            case TopicType.Schema:
                return(parent + "#" + obj.GetSchemaName());

            case TopicType.Element:
                return(isGlobal
                            ? parent + "#E/" + ((XmlSchemaElement)obj).QualifiedName.Name
                            : parent + "/" + ((XmlSchemaElement)obj).QualifiedName.Name);

            case TopicType.Attribute:
                return(isGlobal
                            ? parent + "#A/" + ((XmlSchemaAttribute)obj).QualifiedName.Name
                            : parent + "/@" + ((XmlSchemaAttribute)obj).QualifiedName.Name);

            case TopicType.AttributeGroup:
                return(parent + "#AG/" + ((XmlSchemaAttributeGroup)obj).QualifiedName.Name);

            case TopicType.Group:
                return(parent + "#G/" + ((XmlSchemaGroup)obj).QualifiedName.Name);

            case TopicType.SimpleType:
            case TopicType.ComplexType:
                return(parent + "#T/" + ((XmlSchemaType)obj).QualifiedName.Name);

            default:
                throw ExceptionBuilder.UnhandledCaseLabel(type);
            }
        }