title: Is it possible to make this custom configuration?
body: <p>Here is my xml structure:</p>
  
  <pre><code>&lt;reco&gt;
      &lt;styleSheets&gt;
        &lt;group&gt;
          &lt;asset source="~/Script/file1.css"/&gt;
          &lt;asset source="~/Script/file2.css"/&gt;
          &lt;asset source="~/Script/file3.css"/&gt;
      &lt;/group&gt;
    &lt;/styleSheets&gt;
    &lt;scripts&gt;
      &lt;group&gt;
          &lt;asset source="~/Content/file1.js"/&gt;
          &lt;asset source="~/Content/file1.js"/&gt;
          &lt;asset source="~/Content/file1.js"/&gt;
      &lt;/group&gt;
    &lt;/scripts&gt;
  </code></pre>
  
  <p></p>
  
  <p>Here is my code:</p>
  
  <pre><code>public class AssetConfigurationElement : ConfigurationElement
  {
  
      /// &lt;summary&gt;
      /// Gets or sets the source.
      /// &lt;/summary&gt;
      /// &lt;value&gt;The source.&lt;/value&gt;
      [ConfigurationProperty("source", IsRequired = true, IsKey = true)]
      public string Source
      {
          get
          {
              return (string)this["source"];
          }
  
          set
          {
              this["source"] = value;
          }
      }
  }
  
  public class GroupConfigurationElementCollection : ConfigurationElementCollection
  {
      public GroupConfigurationElementCollection()
      {
          AddElementName = "asset";
      }
  
      /// &lt;summary&gt;
      /// Gets or sets the name.
      /// &lt;/summary&gt;
      /// &lt;value&gt;The name.&lt;/value&gt;
      [ConfigurationProperty("name", IsRequired = true, IsKey = true, IsDefaultCollection = true)]
      public string Name
      {
          get
          {
              return (string)this["name"];
          }
  
          set
          {
              this["name"] = value;
          }
      }
  
      /// &lt;summary&gt;
      /// Gets or sets a value indicating whether this &lt;see cref="WebAssetGroupConfigurationElement"/&gt; is enabled.
      /// &lt;/summary&gt;
      /// &lt;value&gt;&lt;c&gt;true&lt;/c&gt; if enabled; otherwise, &lt;c&gt;false&lt;/c&gt;.&lt;/value&gt;
      [ConfigurationProperty("enabled", DefaultValue = true)]
      public bool Enabled
      {
          get
          {
              return (bool)this["enabled"];
          }
  
          set
          {
              this["enabled"] = value;
          }
      }
  
      /// &lt;summary&gt;
      /// Gets or sets the version.
      /// &lt;/summary&gt;
      /// &lt;value&gt;The version.&lt;/value&gt;
      [ConfigurationProperty("version")]
      public string Version
      {
          get
          {
              return (string)this["version"];
          }
  
          set
          {
              this["version"] = value;
          }
      }
  
      /// &lt;summary&gt;
      /// Gets or sets a value indicating whether this &lt;see cref="WebAssetGroupConfigurationElement"/&gt; is compress.
      /// &lt;/summary&gt;
      /// &lt;value&gt;&lt;c&gt;true&lt;/c&gt; if compress; otherwise, &lt;c&gt;false&lt;/c&gt;.&lt;/value&gt;
      [ConfigurationProperty("compress", DefaultValue = true)]
      public bool Compress
      {
          get
          {
              return (bool)this["compress"];
          }
  
          set
          {
              this["compress"] = value;
          }
      }
  
      /// &lt;summary&gt;
      /// Gets or sets a value indicating whether this &lt;see cref="WebAssetGroupConfigurationElement"/&gt; is combined.
      /// &lt;/summary&gt;
      /// &lt;value&gt;&lt;c&gt;true&lt;/c&gt; if combined; otherwise, &lt;c&gt;false&lt;/c&gt;.&lt;/value&gt;
      [ConfigurationProperty("combined", DefaultValue = true)]
      public bool Combined
      {
          get
          {
              return (bool)this["combined"];
          }
  
          set
          {
              this["combined"] = value;
          }
      }
  
  
      protected override ConfigurationElement CreateNewElement()
      {
          return new AssetConfigurationElement();
      }
  
      protected override object GetElementKey(ConfigurationElement element)
      {
          return ((AssetConfigurationElement)element).Source;
      }
  
  }
  
  public class SharedGroupConfigurationSection : ConfigurationSection
  {
  
      /// &lt;summary&gt;
      /// Gets the style sheets.
      /// &lt;/summary&gt;
      /// &lt;value&gt;The style sheets.&lt;/value&gt;
      [ConfigurationProperty("styleSheets")]
      [ConfigurationCollection(typeof(GroupConfigurationElementCollection), AddItemName = "group")]
      public GroupConfigurationElementCollection StyleSheets
      {
          get
          {
              return (GroupConfigurationElementCollection)base["styleSheets"] ?? new GroupConfigurationElementCollection();
          }
      }
  
      /// &lt;summary&gt;
      /// Gets the style sheets.
      /// &lt;/summary&gt;
      /// &lt;value&gt;The style sheets.&lt;/value&gt;
      [ConfigurationProperty("scripts")]
      [ConfigurationCollection(typeof(GroupConfigurationElementCollection), AddItemName = "group")]
      public GroupConfigurationElementCollection Scripts
      {
          get
          {
              return (GroupConfigurationElementCollection)base["scripts"] ?? new GroupConfigurationElementCollection();
          }
      }
  }
  </code></pre>
  
  <p>Is this configuration even possible? If so, what am i doing wrong?</p>
  
  <p>I get this error message when i try to get the section with the configuration manager.</p>
  
  <blockquote>
    <p>Configuration Error
    Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.</p>
    
    <p>Parser Error Message: Unrecognized element 'asset'.</p>
    
    <p>Source Error:</p>
    
    <p>Line 96:     
    Line 97:       
    Line 98:         
    Line 99:         
    Line 100:        </p>
    
    <p>Source File: D:\ASP.NET Projects\Resource-Compiler\ResourceCompiler\Examples\web.config    Line: 98 </p>
  </blockquote>