public XElement ToXElement() { var locale = LOCALE; var elements = new List <XElement>() { new XElement( XMLNS_NAMESPACE + "id", new XAttribute("advice", "ignore"), new XAttribute("type", "internal"), Id ), new XElement( XMLNS_NAMESPACE + "title", new XAttribute("locale", LOCALE), Title ), }; if (Prefix != "") { elements.Add( new XElement( XMLNS_NAMESPACE + "Prefix", new XAttribute("locale", LOCALE), Prefix ) ); } if (Abstract != "") { elements.Add( new XElement( XMLNS_NAMESPACE + "abstract", new XAttribute("locale", LOCALE), Abstract ) ); } if (LicenseURL != "") { elements.Add( new XElement( XMLNS_NAMESPACE + "licenseUrl", LicenseURL ) ); } var xmlnsnamespace = XMLNS_NAMESPACE; if (Keywords.Length != 0) { elements.Add( new XElement( XMLNS_NAMESPACE + "keywords", new XAttribute("locale", LOCALE), Keywords.Select(el => new XElement( xmlnsnamespace + "keyword", el )).ToArray() ) ); } var xNameSpace = XMLNS_NAMESPACE; if (Authors.Count() != 0) { elements.Add( new XElement( XMLNS_NAMESPACE + "authors", SCHEMA_LOCATION_ATTRIBUTE, XMLNS_XSI_ATTRIBUTE, Authors.Select(el => el.ToXElement(locale, xNameSpace)).ToArray() ) ); } elements.Add( Galley.ToXElement(locale, XMLNS_NAMESPACE, SCHEMA_LOCATION_ATTRIBUTE, XMLNS_XSI_ATTRIBUTE, Stage == "published") ); elements.Add( Identifiaction.ToXElement(XMLNS_NAMESPACE) ); elements.Add( new XElement(XMLNS_NAMESPACE + "pages", Pages) ); return(new XElement( XMLNS_NAMESPACE + "article", SCHEMA_LOCATION_ATTRIBUTE, new XAttribute("access_status", AccessStatus), new XAttribute("seq", Seq), new XAttribute("section_ref", SectionRef), new XAttribute("date_published", DatePublished), new XAttribute("stage", Stage), new XAttribute("date_submitted", DateSubmitted), new XAttribute("locale", locale), XMLNS_XSI_ATTRIBUTE, elements.ToArray() )); }