public Vector MoveTo(Structure structure) { Vector clone = this.Clone(); clone.Structure = structure; clone.Element = structure.Root; return clone; }
public void _linkElements(Structure structure) { foreach (Element e in profile.Elements) { _tryLinkToParent(structure, e); } }
public static Vector Create(Structure structure, XPathNavigator node, XmlNamespaceManager nsm) { Vector vector = new Vector(); vector.Structure = structure; vector.Element = (structure != null) ? structure.Root : null; vector.Node = node; vector.NSM = nsm; vector.Origin = vector; return vector; }
private bool _tryLinkToParent(Structure structure, Element element) { Element parent = profile.ParentOf(structure, element); if (parent != null) { parent.Children.Add(element); return true; } return false; }
public static void AddExtensionElement(Structure structure, Element parent = null) { parent = parent ?? structure.Root; string path = string.Format("{0}.extension", parent.Path); Element element = new Element(); element.Path = new Path(path); element.Name = "extension"; element.Cardinality = new Cardinality { Min = "0", Max = "*" }; element.TypeRefs.Add(new TypeRef { Code = "Extension" }); structure.Elements.Add(element); }
public static Structure Primitive(string name, string pattern, string nsprefix = FhirNamespaceManager.Fhir) { Structure structure = new Structure(); structure.Name = name; Element element = new Element(); element.Path = new Path(name); element.Name = name; element.IsPrimitive = true; element.PrimitivePattern = pattern; element.Cardinality = new Cardinality { Min = "1", Max = "1" }; element.NameSpacePrefix = nsprefix; structure.Elements.Add(element); AddExtensionElement(structure, element); return structure; }
public Structure ReadStructure(XPathNavigator node) { Structure structure = new Structure(); structure.Name = node.SelectSingleNode("f:type/@value", ns).Value; structure.NameSpacePrefix = FhirNamespaceManager.Fhir; ReadStructureElements(structure, node.Select("f:element", ns)); return structure; }
public void ReadStructureElements(Structure structure, XPathNodeIterator xElements) { foreach (XPathNavigator xElement in xElements) { structure.Elements.Add(ReadElement(xElement)); } }
public void ValidateStructure(Structure structure) { //if (structure.IsPrimitive) // return; // there is no more detail. foreach (Element element in structure.Elements) { ValidateElement(element); } ValidateElementRefs(structure); }
public void ValidateElementRefs(Structure structure) { foreach(Element element in structure.Elements) { if (element.ElementRefPath != null && element.ElementRef == null) { report.Add("Reference", Kind.Failed, "Element [{0}] Name reference to different element [{1}] is unresolved", element.Path, element.ElementRefPath); } } }
public Element GetElementByPath(Structure structure, string path) { return structure.Elements.FirstOrDefault(element => element.Path.ToString() == path); }
public Element ParentOf(Structure structure, Element element) { Path path = element.Path.Parent(); Element parent = structure.Elements.Find(e => e.Path.Equals(path)); return parent; }