Esempio n. 1
0
        private XElement BuildElementSchema(string elemName, NodeInfo nodeInfo, NodeInfo parentInfo)
        {
            XElement parent = (null == parentInfo) ? null : parentInfo.Schema;
            XElement seqElem = null;
            if (null != parent)
            {
                seqElem = parent.Element(xs + "sequence");

                if (null == seqElem && null != parent)
                    parent.AddFirst(seqElem = new XElement(xs + "sequence"));
            }
            else
            {
                seqElem = new XElement(xs + "sequence");
            }

            var elemNameInfo = elemName + "Info";

            var hasKids = null == nodeInfo || string.IsNullOrEmpty(nodeInfo.TypeGuess);

            var elem0 = new XElement(xs + "element",
                        new XAttribute("name", elemName),
                        new XAttribute("type", hasKids ? elemNameInfo : nodeInfo.TypeGuess));

            if (null != nodeInfo && nodeInfo.Repeats)
                elem0.Add(new XAttribute("maxOccurs", "unbounded"));

            seqElem.Add(elem0); // add the ref to the existing sequence

            nodeInfo.Schema = new XElement(xs + "complexType",
                    new XAttribute("name", elemNameInfo));

            return hasKids ? nodeInfo.Schema : null;
        }
Esempio n. 2
0
        private XElement BuildAttributeSchema(string attrName, NodeInfo nodeInfo, NodeInfo parentInfo)
        {
            XElement parent = parentInfo.Schema;
            var elem0 = new XElement(xs + "attribute",
                new XAttribute("name", attrName.TrimStart('@')),
                new XAttribute("type", nodeInfo.TypeGuess ?? "xs:string"));

            if (null != parent)
                parent.Add(elem0);

            nodeInfo.Schema = elem0;

            return null;
        }