public static XElement Encode(Metadata dublinCore, string granularity) { // The DatetimeFormat for OAI-PMH is only valid when it is like this YYYY.MM.DD // but c# ist not understanding YYYY ->it must replaced with yyyy & DD -> dd granularity = granularity.Replace('Y', 'y'); granularity = granularity.Replace('D', 'd'); return(new XElement(MlNamespaces.oaiDc + "dc", new XAttribute(XNamespace.Xmlns + "oai_dc", MlNamespaces.oaiDc), new XAttribute(XNamespace.Xmlns + "dc", MlNamespaces.dcNs), new XAttribute(XNamespace.Xmlns + "xsi", MlNamespaces.dcXsi), new XAttribute(MlNamespaces.dcXsi + "schemaLocation", MlNamespaces.dcSchemaLocation), /* content */ MlEncode.Element(MlNamespaces.dcNs + "title", dublinCore.Title), MlEncode.Element(MlNamespaces.dcNs + "creator", dublinCore.Creator), MlEncode.Element(MlNamespaces.dcNs + "subject", dublinCore.Subject), MlEncode.Element(MlNamespaces.dcNs + "description", dublinCore.Description), MlEncode.Element(MlNamespaces.dcNs + "publisher", dublinCore.Publisher), MlEncode.Element(MlNamespaces.dcNs + "contributor", dublinCore.Contributor), !dublinCore.Date.HasValue ? null : new XElement(MlNamespaces.dcNs + "date", dublinCore.Date.Value.ToUniversalTime().ToString(granularity)), MlEncode.Element(MlNamespaces.dcNs + "type", dublinCore.Type), MlEncode.Element(MlNamespaces.dcNs + "format", dublinCore.Format), MlEncode.Element(MlNamespaces.dcNs + "identifier", dublinCore.Identifier), MlEncode.Element(MlNamespaces.dcNs + "source", dublinCore.Source), MlEncode.Element(MlNamespaces.dcNs + "language", dublinCore.Language), MlEncode.Element(MlNamespaces.dcNs + "relation", dublinCore.Relation), MlEncode.Element(MlNamespaces.dcNs + "coverage", dublinCore.Coverage), MlEncode.Element(MlNamespaces.dcNs + "rights", dublinCore.Rights) )); }
/* Xml / Metadata operations */ public static IEnumerable <string> ReverseNames(string value) { foreach (var xElName in MlEncode.Element("el", value)) { string normalName = string.Empty; string[] splitNames = xElName.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); for (int i = splitNames.Length - 1; i >= 0; i--) { normalName += splitNames[i].Trim() + (i == 0 ? "" : " "); } yield return(normalName); } }
private static XElement EncodeOne(Metadata provenance, string granularity) { return(new XElement("originDescription", new XAttribute("harvestDate", DateInGranularity(provenance.AdditionalDateTime1, provenance.AdditionalBool2, granularity)), new XAttribute("altered", !provenance.AdditionalBool1.HasValue ? bool.FalseString.ToLower() : provenance.AdditionalBool1.Value.ToString().ToLower()), MlEncode.Element("baseUrl", provenance.Source), MlEncode.Element("identifier", provenance.Identifier), new XAttribute("datestamp", DateInGranularity(provenance.Date, provenance.AdditionalBool3, granularity)), MlEncode.Element("metadataNamespace", provenance.Format) )); }
public static XElement Encode(Metadata panSimple, string granularity) { // The DatetimeFormat for OAI-PMH is only valid when it is like this YYYY.MM.DD // but c# ist not understanding YYYY ->it must replaced with yyyy & DD -> dd granularity = granularity.Replace('Y', 'y'); granularity = granularity.Replace('D', 'd'); XElement Element = new XElement(MlNamespaces.psNs + "dataset", /*Namespaces*/ new XAttribute(XNamespace.Xmlns + "dc", MlNamespaces.dcNs), new XAttribute(XNamespace.Xmlns + "xsi", MlNamespaces.psXsi), /* content */ /*Subject*/ MlEncode.Element(MlNamespaces.dcNs + "title", panSimple.Title), MlEncode.Element(MlNamespaces.dcNs + "creator", panSimple.Creator), MlEncode.Element(MlNamespaces.dcNs + "subject", panSimple.Subject), !panSimple.Date.HasValue ? null : new XElement(MlNamespaces.dcNs + "date", panSimple.Date.Value.ToUniversalTime().ToString(granularity)), MlEncode.Element(MlNamespaces.dcNs + "type", panSimple.Type), MlEncode.Element(MlNamespaces.dcNs + "format", panSimple.Format), MlEncode.Element(MlNamespaces.dcNs + "identifier", panSimple.Identifier), MlEncode.Element(MlNamespaces.dcNs + "source", panSimple.Source), MlEncode.Element(MlNamespaces.dcNs + "language", panSimple.Language), MlEncode.Element(MlNamespaces.dcNs + "coverage", panSimple.Coverage), MlEncode.Element(MlNamespaces.dcNs + "rights", panSimple.Rights), /*PanSimple Extentions*/ MlEncode.Element(MlNamespaces.psNs + "keyword", panSimple.Keyword), MlEncode.Element(MlNamespaces.psNs + "parameter", panSimple.Parameter), MlEncode.Element(MlNamespaces.psNs + "method", panSimple.Method), MlEncode.Element(MlNamespaces.psNs + "sensor", panSimple.Sensor), MlEncode.Element(MlNamespaces.psNs + "feature", panSimple.Feature), MlEncode.Element(MlNamespaces.psNs + "taxonomy", panSimple.Taxonomy), MlEncode.Element(MlNamespaces.psNs + "platform", panSimple.Platform), MlEncode.Element(MlNamespaces.psNs + "project", panSimple.Project), MlEncode.Element(MlNamespaces.psNs + "habitat", panSimple.Habitat), MlEncode.Element(MlNamespaces.psNs + "stratigraphy", panSimple.Stratigraphy), MlEncode.Element(MlNamespaces.psNs + "pangaea-tech-keyword", panSimple.PangaeaTechKeyword), /*Links*/ new XElement(MlNamespaces.psNs + "linkage", new XAttribute("type", "metadata"), new XAttribute("accessRestricted", "false"), panSimple.AddtionalData[Metadata.METADATA_URL].ToString()), new XElement(MlNamespaces.psNs + "linkage", new XAttribute("type", "data"), new XAttribute("accessRestricted", "false"), panSimple.AddtionalData[Metadata.DATA_URL].ToString()), /*relinks*/ MlEncode.Element(MlNamespaces.psNs + "parentIdentifer", panSimple.Relation), MlEncode.Element(MlNamespaces.psNs + "additionalContent", panSimple.Description), MlEncode.Element(MlNamespaces.psNs + "dataCenter", panSimple.Publisher), MlEncode.Element(MlNamespaces.psNs + "pricipalInvestigator", panSimple.Contributor), /*Converage*/ new XElement(MlNamespaces.psNs + "coverage", MlEncode.Element(MlNamespaces.psNs + "northBoundLatitude", panSimple.CoverageComplex.NorthBoundLatitude == 0 ? null : panSimple.CoverageComplex.NorthBoundLatitude.ToString()), MlEncode.Element(MlNamespaces.psNs + "westBoundLongitude", panSimple.CoverageComplex.WestBoundLongitude == 0 ? null : panSimple.CoverageComplex.WestBoundLongitude.ToString()), MlEncode.Element(MlNamespaces.psNs + "southhBoundLatitude", panSimple.CoverageComplex.SouthBoundLatitude == 0 ? null : panSimple.CoverageComplex.SouthBoundLatitude.ToString()), MlEncode.Element(MlNamespaces.psNs + "eastBoundLongitude", panSimple.CoverageComplex.EastBoundLongitude == 0 ? null : panSimple.CoverageComplex.EastBoundLongitude.ToString()), MlEncode.Element(MlNamespaces.psNs + "location", panSimple.CoverageComplex.Location), MlEncode.Element(MlNamespaces.psNs + "minEvelation", panSimple.CoverageComplex.MinElevation), MlEncode.Element(MlNamespaces.psNs + "maxEvelation", panSimple.CoverageComplex.MaxElevation), MlEncode.Element(MlNamespaces.psNs + "StartDate", panSimple.CoverageComplex.StartDate), MlEncode.Element(MlNamespaces.psNs + "EndData", panSimple.CoverageComplex.EndDate)) ); XAttribute attr = new XAttribute(XNamespace.Xmlns + "ps", MlNamespaces.psNs); Element.Add(attr); return(Element); }