Ejemplo n.º 1
0
		/// ------------------------------------------------------------------------------------
		public string GetXmlForWork(Work work)
		{
			var bldr =  new StringBuilder();

			if (work != null)
			{
				bldr.Append(GetOlacRecordElement());

				foreach (var contributor in work.Contributions)
					bldr.Append(GetContributorElement(contributor.Role.Code, contributor.ContributorName));

				bldr.Append("</olac:olac>");
			}

			return bldr.ToString();

			/*            <dc:language xsi:type="olac:language" olac:code="adz"
				  view="Adzera"/>

			  <dc:subject xsi:type="olac:language" olac:code="adz"
				  view="Adzera"/>



	  <dc:title>Language</dc:title>
	  <dc:publisher>New York: Holt</dc:publisher>
			 */

		}
Ejemplo n.º 2
0
		public void TypicalEmbedInMyXmlDocument()
		{
			var system = new OlacSystem();
			var work = new Work();
			work.Licenses.Add(License.CreativeCommons_Attribution_ShareAlike);
			work.Contributions.Add(new Contribution("Charlie Brown", system.GetRoleByCodeOrThrow("author")));
			work.Contributions.Add(new Contribution("Linus", system.GetRoleByCodeOrThrow("editor")));

			string metaData = system.GetXmlForWork(work);

			//Embed that data in our own file
			using (var f = new TempFile(@"<doc>
				<metadata>" + metaData + @"</metadata>
				<ourDocumentContents>blah blah<ourDocumentContents/></doc>"))
			{
				//Then when it comes time to read the file, we can extract out the work again
				var dom = new XmlDocument();
				dom.Load(f.Path);

				var node = dom.SelectSingleNode("//metadata");
				var work2 = new Work();
				system.LoadWorkFromXml(work2, node.InnerXml);

				Assert.AreEqual(2,work2.Contributions.Count());
			}
		}
Ejemplo n.º 3
0
		/// ------------------------------------------------------------------------------------
		public void LoadWorkFromXml(Work work, string xml)
		{
			//TODO: parse the xml as olac. For a first pass, we can ignore anything we don't understand.
			//Eventually, we'll want to round-trip things we don't understand.

			Guard.AgainstNull(work, "Work");

			var doc = XDocument.Load(XmlReader.Create(new StringReader(xml)));

			foreach (var contributor in doc.Descendants((new XElement(s_nsDc + "contributor")).Name))
			{
				Role role = GetRoles().ElementAt(0);
				var roleCode = contributor.Attributes().Single(a => a.Name == s_nsOlac + "code").Value;
				TryGetRoleByCode(roleCode, out role);
				work.Contributions.Add(new Contribution(contributor.Value, role));
			}
		}