<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwiz.co.uk/rss_namespace/">
 <channel>
  <title>DevForce Community Forum : Abstract Classes</title>
  <link>http://www.ideablade.com/forum/</link>
  <description>This is an XML content feed of; DevForce Community Forum : DevForce 2010 : Abstract Classes</description>
  <pubDate>Tue, 21 Apr 2026 10:40:12 -700</pubDate>
  <lastBuildDate>Mon, 17 May 2010 11:26:56 -700</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.69</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>www.ideablade.com/forum/RSS_post_feed.asp?TID=1769</WebWizForums:feedURL>
  <image>
   <title>DevForce Community Forum</title>
   <url>http://www.ideablade.com/forum/forum_images/IdeaBlade_logo_tm.png</url>
   <link>http://www.ideablade.com/forum/</link>
  </image>
  <item>
   <title>Abstract Classes : Tx. Got it working using the description...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6906#6906</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=136" rel="nofollow">orcities</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 17-May-2010 at 11:26am<br /><br />Tx. Got it working using the description as you example.]]>
   </description>
   <pubDate>Mon, 17 May 2010 11:26:56 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6906#6906</guid>
  </item> 
  <item>
   <title>Abstract Classes : You have to use a T4 template...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6756#6756</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=543" rel="nofollow">pk55</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 03-May-2010 at 9:15am<br /><br />You have to use a T4 template to do this (<a href="http://www.ideablade.com/forum/forum_posts.asp?TID=1721&amp;PID=6755#6755" target="_blank">http://www.ideablade.com/forum/forum_posts.asp?TID=1721&amp;PID=6755#6755</A><DIV>).</DIV><DIV>&nbsp;</DIV><DIV>Since I wrote that sample on switching parents (where I used the EDMX Summary attribute on the entity&nbsp;to specify the parent to use), I've changed to just make a call to another T4 template that takes the Entity name and looks up the parent to use.</DIV><DIV>&nbsp;</DIV><DIV>Create a new T4 file, in this example, it's called "GetEntityParent.tt" and add it to your solution.&nbsp; After adding it, remove the Custom Tool name from the file properties in the solution explorer since we don't need this t4 to actually do anything.&nbsp; It's just an "include" file.&nbsp; Any entity that you don't want to switch will return an empty string (you could also just default it to whatever your common injected base type is) and the main routine will not change its parent.&nbsp; Obviously you could use an XML file to hold these relationships as well.&nbsp; To me, putting them in a code file is just as easy and (in our case) is checked into source control along with the models.</DIV><DIV>&nbsp;</DIV><DIV>&lt;#@ template&nbsp; language="C#" debug="true" hostSpecific="true" #&gt;<BR>&lt;#@ Assembly Name="System.Core.dll" #&gt;<BR>&lt;#@ Assembly Name="System.Data.Entity.dll" #&gt;<BR>&lt;#@ Assembly Name="Microsoft.VisualStudio.TextTemplating.10.0" #&gt;<BR>&lt;#@ import namespace="System" #&gt;<BR>&lt;#@ import namespace="System.Reflection" #&gt;<BR>&lt;#@ import namespace="System.Data.Entity" #&gt;<BR>&lt;#+ <BR>&nbsp;/// &lt;summary&gt;<BR>&nbsp;/// Code Generation Function to get the parent entity for inheritence in the models<BR>&nbsp;/// &lt;/summary&gt;<BR>&nbsp;public class GetEntityParentTemplate<BR>&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;public string GetEntityParent(string childEntity)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;if (childEntity == "Table1") <BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;return "BaseEntity";<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if (childEntity == "Table2") <BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;return "AuditEntity";<BR>&nbsp;&nbsp;&nbsp;}</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;&nbsp;&nbsp;return string.Empty;<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>#&gt;<BR></DIV><DIV>&nbsp;</DIV><DIV>Change the other T4 (the one that is &lt;modelname&gt;.edmx.tt) with these bolded changes: </DIV><DIV>&nbsp;</DIV><DIV>&lt;#@ template&nbsp; language="C#" debug="true" hostSpecific="true" #&gt;<BR>&lt;#@ output extension=".ReadMe" #&gt;<BR>&lt;#@ Assembly Name="System.Core.dll" #&gt;<BR>&lt;#@ Assembly Name="Microsoft.VisualStudio.TextTemplating.10.0" #&gt;<BR>&lt;#@ Assembly Name="IdeaBlade.Core" #&gt;<BR>&lt;#@ Assembly Name="IdeaBlade.VisualStudio.DTE.dll" #&gt;<BR>&lt;#@ Assembly Name="IdeaBlade.VisualStudio.OM.CodeGenerator.dll" #&gt;<BR>&lt;#@ Assembly Name="IdeaBlade.EntityModel.Edm.Metadata.dll" #&gt;<BR>&lt;#@ import namespace="System" #&gt;<BR>&lt;#@ import namespace="System.Reflection" #&gt;<BR>&lt;#@ import namespace="IdeaBlade.VisualStudio.DTE" #&gt;<BR>&lt;#@ import namespace="IdeaBlade.VisualStudio.OM.CodeGenerator" #&gt;<BR>&lt;#@ import namespace="IdeaBlade.EntityModel.Edm.Metadata" #&gt;<BR><strong>&lt;#@ include file="GetEntityParent.tt" #&gt;</strong><BR>&lt;#<BR>&nbsp;// Model1.edmx&nbsp; &lt;--- This is needed so that "Transform Related Text Templates On Save" works correctly.<BR>&nbsp;var template = new MyTestTemplate(this);<BR>&nbsp;template.Generate();<BR>#&gt;<BR>&lt;#+ <BR>&nbsp;public class MyTestTemplate : DomainModelTemplate {<BR>&nbsp; public MyTestTemplate(Microsoft.VisualStudio.TextTemplating.TextTransformation textTransformation)<BR>&nbsp;&nbsp; :base(textTransformation) {}<BR>&nbsp;&nbsp;&nbsp; <BR><strong>&nbsp; GetEntityParentTemplate _getEntityParentTemplate = new GetEntityParentTemplate();</strong></DIV><DIV>&nbsp;</DIV><DIV>&nbsp;protected override ClassDef GetEntityClassDef(EntityOrComplexTypeWrapper wrapper)<BR>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<BR><strong>&nbsp;&nbsp;var _parentEntity = _getEntityParentTemplate.GetEntityParent (wrapper.Name);<BR></strong>&nbsp;&nbsp;&nbsp;&nbsp;<BR><strong>&nbsp;&nbsp;if (_parentEntity != null &amp;&amp; _parentEntity != String.Empty)<BR></strong>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;// generate the current ClassDef from the passed argument<BR>&nbsp;&nbsp;&nbsp;ClassDef _classDef;<BR>&nbsp;&nbsp;&nbsp;_classDef = base.GetEntityClassDef(wrapper);</DIV><DIV>&nbsp;&nbsp;&nbsp;// create a new class def instance as we're overridding it with a different base type<BR>&nbsp;&nbsp;&nbsp;// and ClassDef.BaseTypeName has a private Setter so we use the ClassDef public<BR>&nbsp;&nbsp;&nbsp;// constructor that takes Name, BaseTypeName and AccessType and then set the other properties<BR>&nbsp;&nbsp;&nbsp;ClassDef _newClassDef = new ClassDef (_classDef.Name, <strong>_parentEntity</strong>, _classDef.AccessType);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;// setup the remaining properties<BR>&nbsp;&nbsp;&nbsp;_newClassDef.SetAbstract (_classDef.IsAbstract);<BR>&nbsp;&nbsp;&nbsp;_newClassDef.SetNew (_classDef.IsNew);<BR>&nbsp;&nbsp;&nbsp;_newClassDef.SetPartial (_classDef.IsPartial);<BR>&nbsp;&nbsp;&nbsp;_newClassDef.SetStatic (_classDef.IsStatic);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;// since we're overriding the base type to be a class, I'm setting this to false<BR>&nbsp;&nbsp;&nbsp;// as I know it won't be an interface<BR>&nbsp;&nbsp;&nbsp;_newClassDef.BaseTypeIsInterface = false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;// write a comment that we generated something different (useful for debugging as well)<BR>&nbsp;&nbsp;&nbsp;WriteComment("");<BR>&nbsp;&nbsp;&nbsp;WriteComment("Changed BaseTypeName to be: " + _newClassDef.BaseTypeName);<BR>&nbsp;&nbsp;&nbsp;WriteComment("");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;// return the new ClassDef<BR>&nbsp;&nbsp;&nbsp;return (_newClassDef);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;// DEFAULT<BR>&nbsp;&nbsp;// just generate and return the normal ClassDef so all entities that just inherit directly<BR>&nbsp;&nbsp;// from the base injected type remain the same<BR>&nbsp;&nbsp;return (base.GetEntityClassDef(wrapper));</DIV><DIV>&nbsp;}<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;}<BR>#&gt;<BR></DIV><DIV>&nbsp;</DIV>]]>
   </description>
   <pubDate>Mon, 03 May 2010 09:15:16 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6756#6756</guid>
  </item> 
  <item>
   <title>Abstract Classes : Ok I have them all inheriting...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6754#6754</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=136" rel="nofollow">orcities</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 03-May-2010 at 7:50am<br /><br />Ok I have them all inheriting from one injected type. Is there a way to do choose the injected type on an entity basis. For example. Table1 : BaseEntity, Table2 : AuditEntity?<DIV>&nbsp;</DIV><DIV>&nbsp;</DIV>]]>
   </description>
   <pubDate>Mon, 03 May 2010 07:50:29 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6754#6754</guid>
  </item> 
  <item>
   <title>Abstract Classes :  Originally posted by pk55 if...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6743#6743</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=4" rel="nofollow">GregD</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 30-Apr-2010 at 11:55am<br /><br /><table width="99%"><tr><td class="BBquote"><strong><em>Originally posted by pk55</strong></em><br /><br /><br>&nbsp;if you have "Generate Developer Classes" set to true, you'll also have another partial class created as a separate file (MyBaseEntity.cs in the example Greg gave).&nbsp; <br></td></tr></table><br><br>Although that is indeed what should happen, when I tested that yesterday, DevForce didn't create the developer partial class for the base type. I entered that into our bug base to be fixed.<br><br>Thanks for contributing the additional detail!]]>
   </description>
   <pubDate>Fri, 30 Apr 2010 11:55:16 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6743#6743</guid>
  </item> 
  <item>
   <title>Abstract Classes : If you use a name that isn&amp;#039;t...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6735#6735</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=543" rel="nofollow">pk55</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 29-Apr-2010 at 6:18pm<br /><br />If you use a name that isn't qualified (with a "." in the name like Namespace.BaseEntity), then DevForce creates this injected base type in the &lt;model&gt;.IB.Designer.cs file for you as a partial class and if you have "Generate Developer Classes" set to true, you'll also have another partial class created as a separate file (MyBaseEntity.cs in the example Greg gave).&nbsp; If you don't let DevForce generate the developer classes, then you need to create your own partial class.<DIV>&nbsp;</DIV><DIV>And the forum link that Greg pointed you to does work.&nbsp; I've got 6 data models (from separate databases) with up to 2 levels of inherited base entities.&nbsp; I only tell DevForce (via the EDMX) about the base entity that inherits directly from "Entity" and since I used a fully qualified name because I want to share the&nbsp;base type across data models &nbsp;(like "MyNamespace.MyBaseEntity"), DevForce didn't generate the partial classes for that class in the designer nor as a developer class so I had to create a separate base entity class (one for each level of my inheritence) and also add the DataContract attributes so it would serialize.&nbsp; Of course to do this with multiple levels of base types, you have to be willing to have some T4 fun.</DIV><DIV>&nbsp;</DIV><DIV>From the MyBaseEntity.cs:</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;&nbsp;&nbsp; &#091;DataContract&#093;<BR>&nbsp;&nbsp;&nbsp; &#091;KnownType(typeof(MyBaseEntity))&#093;<BR>&nbsp;&nbsp;&nbsp; public abstract partial class MyBaseEntity : Entity</DIV><DIV>{</DIV><DIV>... stuff</DIV><DIV>}<BR></DIV><DIV>From the ChildBaseEntity.cs:</DIV><DIV>&nbsp;</DIV><DIV>&#091;DataContract&#093;<BR>&nbsp;&nbsp;&nbsp; &#091;KnownType(typeof(ChildBaseEntity))&#093;<BR>&nbsp;&nbsp;&nbsp; public abstract partial class&nbsp;ChildBaseEntity : MyBaseEntity</DIV><DIV>{</DIV><DIV>...more stuff</DIV><DIV>}</DIV><DIV>&nbsp;</DIV><DIV>Then in the T4 template I switch the data entity to inherit from ChildBaseEntity.</DIV><DIV>&nbsp;</DIV><DIV>If you have any properties added to the base entities, make sure you mark them as &#091;DataMember&#093;.&nbsp; The release notes mentioned this and it is true for base entity fields (page 14):</DIV><OL><FONT size=2><LI>A custom field intializer that you added to your entity (e.g., private int foo = 42;) may not always be set for every new instance. Our client-side "entity materialization" logic can by-pass field initializations. To ensure that "foo" is initialized, either set it lazily or mark "foo" as a WCF </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>DataMember</FONT></FONT><FONT size=2>. </LI></OL><P>&nbsp;</P></FONT>]]>
   </description>
   <pubDate>Thu, 29 Apr 2010 18:18:13 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6735#6735</guid>
  </item> 
  <item>
   <title>Abstract Classes :   Originally posted by orcitiesCan...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6730#6730</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=4" rel="nofollow">GregD</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 29-Apr-2010 at 5:35pm<br /><br /><table width="99%"><tr><td class="BBquote"><strong><em>Originally posted by orcities</strong></em><br /><br /><br>Can you point me to the corect documentation having the code generation automatically have my base class?<br></td></tr></table><br><br>While viewing the Entity Data Model in the designer, click in white space to see the properties of the ConceptualEntityModel; then just type the name of the desired class as the value for the <i>Injected base type </i>property.<br><br>Here's a pic:<br><br><img src="uploads/4/_temp2.jpg" height="406" width="936" border="0" /><br>]]>
   </description>
   <pubDate>Thu, 29 Apr 2010 17:35:34 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6730#6730</guid>
  </item> 
  <item>
   <title>Abstract Classes : Can you point me to the corect...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6721#6721</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=136" rel="nofollow">orcities</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 29-Apr-2010 at 12:37pm<br /><br />Can you point me to the corect documentation having the code generation automatically have my base class?]]>
   </description>
   <pubDate>Thu, 29 Apr 2010 12:37:55 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6721#6721</guid>
  </item> 
  <item>
   <title>Abstract Classes :   Originally posted by orcitiesHow...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6720#6720</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=4" rel="nofollow">GregD</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 29-Apr-2010 at 12:34pm<br /><br /><table width="99%"><tr><td class="BBquote"><strong><em>Originally posted by orcities</strong></em><br /><br /><br>How do I get it to show up in the BaseType dropdown. I created a class called BaseEntity : Entity then compiled but it didn't show up. Basically do I have to create an entity and not provide a key?<br></td></tr></table><br><br>You don't. The EF doesn't support types not mapped to a backing store, so our BaseEntity exists outside of the EDM. Once you declare it in the DevForce Code Generation section of the EDM properties, all entities in the code generated by DevForce will then inherit from it.<br><br>Note that you will need to create (or have DevForce create) the developer partial class for your injected base type in order to do anything useful with it.<br>]]>
   </description>
   <pubDate>Thu, 29 Apr 2010 12:34:36 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6720#6720</guid>
  </item> 
  <item>
   <title>Abstract Classes : By the way that throws an error....</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6699#6699</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=136" rel="nofollow">orcities</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 28-Apr-2010 at 2:30pm<br /><br />By the way that throws an error.]]>
   </description>
   <pubDate>Wed, 28 Apr 2010 14:30:35 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6699#6699</guid>
  </item> 
  <item>
   <title>Abstract Classes : How do I get it to show up in...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6698#6698</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=136" rel="nofollow">orcities</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 28-Apr-2010 at 2:29pm<br /><br />How do I get it to show up in the BaseType dropdown. I created a class called BaseEntity : Entity then compiled but it didn't show up. <DIV></DIV><DIV></DIV><DIV></DIV>Basically do I have to create an entity and not provide a key?]]>
   </description>
   <pubDate>Wed, 28 Apr 2010 14:29:22 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6698#6698</guid>
  </item> 
  <item>
   <title>Abstract Classes : Have you looked at this post? ...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6697#6697</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=23" rel="nofollow">davidklitzke</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 28-Apr-2010 at 2:19pm<br /><br /><P>Have you looked at this post?</P><DIV><a href="http://www.ideablade.com/forum/forum_posts.asp?TID=1721" target="_blank">http://www.ideablade.com/forum/forum_posts.asp?TID=1721</A></DIV><DIV>&nbsp;</DIV><DIV>&nbsp;</DIV>]]>
   </description>
   <pubDate>Wed, 28 Apr 2010 14:19:14 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6697#6697</guid>
  </item> 
  <item>
   <title>Abstract Classes : How do we do abstract classes...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6695#6695</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=136" rel="nofollow">orcities</a><br /><strong>Subject:</strong> 1769<br /><strong>Posted:</strong> 28-Apr-2010 at 1:46pm<br /><br />How do we do abstract classes with 2010?<DIV></DIV>For example if I want to base some entites of an an AuditEntity or BaseEntity with additional features?]]>
   </description>
   <pubDate>Wed, 28 Apr 2010 13:46:11 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=1769&amp;PID=6695#6695</guid>
  </item> 
 </channel>
</rss>