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); } }
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); }