Exemple #1
0
        public List <ClassParameter> Parse(IEnumerable <XNode> inputNodes)
        {
            var paramaters = new List <ClassParameter>();

            if (inputNodes == null)
            {
                return(paramaters);
            }

            foreach (var inputNode in inputNodes)
            {
                var element = (XElement)inputNode;
                if (!Regex.IsMatch(element.Name.NamespaceName, XmlnsConstant.xslNameSpace))
                {
                    string returnType = XslBuilder.DefineReturnType(null, element);
                    if (XslBuilder.IsBasicReturnType(returnType))
                    {
                        paramaters.Add(new ClassParameter {
                            Type = returnType, Name = element.Name.LocalName
                        });
                    }
                    else
                    {
                        paramaters.Add(new ClassParameter {
                            Type = returnType, Name = element.Name.LocalName, ChildProperties = this.Parse(element.Nodes())
                        });
                    }
                }
                else
                {
                    if (element.Name.LocalName == "value-of")
                    {
                    }
                    else if (element.Name.LocalName == "if")
                    {
                        return(this.Parse(element.Nodes()));
                    }
                    else if (element.Name.LocalName == "choose")
                    {
                        return(this.Parse(element.Nodes()));
                    }
                    else if (element.Name.LocalName == "when")
                    {
                        return(this.Parse(element.Nodes()));
                    }
                    else if (element.Name.LocalName == "otherwise")
                    {
                        return(this.Parse(element.Nodes()));
                    }
                    else if (element.Name.LocalName == "for-each")
                    {
                        return(this.Parse(element.Nodes()));
                    }
                }
            }
            return(paramaters);
        }