public XElement GenerateElement() { var tocElement = new XElement(EPubNamespaces.OpfNameSpace + "item"); tocElement.Add(new XAttribute("id", ID)); tocElement.Add(new XAttribute("href", HRef)); tocElement.Add(new XAttribute("media-type", MediaType.GetAsSerializableString())); if (!string.IsNullOrEmpty(Fallback)) { tocElement.Add(new XAttribute("fallback", Fallback)); } List <string> properties; BuildPropertiesList(out properties); if (properties.Count > 0) { var sb = new StringBuilder(); bool first = true; foreach (var property in properties) { if (!first) { sb.AppendFormat(" {0}", property); } else { sb.AppendFormat("{0}", property); first = false; } } tocElement.Add(new XAttribute("properties", sb.ToString())); } if (!string.IsNullOrEmpty(MediaOverlay)) { tocElement.Add(new XAttribute("media-overlay", MediaOverlay)); } return(tocElement); }