public void AddRange(WixXmlAttributeCollection attributes)
 {
     foreach (WixXmlAttribute attribute in attributes)
     {
         Add(attribute);
     }
 }
		/// <summary>
		/// Gets the attributes for the specified element. Also adds any standard
		/// attributes for the element which are not set.
		/// </summary>
		public WixXmlAttributeCollection GetAttributes(XmlElement element)
		{
			WixXmlAttributeCollection attributes = new WixXmlAttributeCollection();
			string elementName = element.Name;
			foreach (XmlAttribute attribute in element.Attributes) {
				string attributeName = attribute.Name;
				WixXmlAttributeType type = GetWixAttributeType(elementName, attributeName);
				WixDocument document = GetWixDocument(element);
				string[] attributeValues = GetAttributeValues(elementName, attributeName);
				WixXmlAttribute wixAttribute = new WixXmlAttribute(attributeName, attribute.Value, type, attributeValues, document);
				attributes.Add(wixAttribute);
			}
			attributes.AddRange(GetMissingAttributes(element, attributes, GetAttributeNames(elementName)));
			return attributes;
		}
        /// <summary>
        /// Gets the attributes for the specified element. Also adds any standard
        /// attributes for the element which are not set.
        /// </summary>
        public WixXmlAttributeCollection GetAttributes(XmlElement element)
        {
            WixXmlAttributeCollection attributes = new WixXmlAttributeCollection();
            string elementName = element.Name;

            foreach (XmlAttribute attribute in element.Attributes)
            {
                string attributeName                = attribute.Name;
                WixXmlAttributeType type            = GetWixAttributeType(elementName, attributeName);
                WixDocument         document        = GetWixDocument(element);
                string[]            attributeValues = GetAttributeValues(elementName, attributeName);
                WixXmlAttribute     wixAttribute    = new WixXmlAttribute(attributeName, attribute.Value, type, attributeValues, document);
                attributes.Add(wixAttribute);
            }
            attributes.AddRange(GetMissingAttributes(element, attributes, GetAttributeNames(elementName)));
            return(attributes);
        }
        /// <summary>
        /// Gets the attributes that have not been added to the
        /// <paramref name="attributes"/>.
        /// </summary>
        WixXmlAttributeCollection GetMissingAttributes(XmlElement element, WixXmlAttributeCollection existingAttributes, string[] attributes)
        {
            WixXmlAttributeCollection missingAttributes = new WixXmlAttributeCollection();

            foreach (string name in attributes)
            {
                if (existingAttributes[name] == null)
                {
                    string elementName                  = element.Name;
                    WixXmlAttributeType type            = GetWixAttributeType(elementName, name);
                    string[]            attributeValues = GetAttributeValues(elementName, name);
                    WixDocument         document        = GetWixDocument(element);
                    missingAttributes.Add(new WixXmlAttribute(name, type, attributeValues, document));
                }
            }
            return(missingAttributes);
        }
		/// <summary>
		/// Gets the attributes that have not been added to the 
		/// <paramref name="attributes"/>.
		/// </summary>		
		WixXmlAttributeCollection GetMissingAttributes(XmlElement element, WixXmlAttributeCollection existingAttributes, string[] attributes)
		{
			WixXmlAttributeCollection missingAttributes = new WixXmlAttributeCollection();
			foreach (string name in attributes) {
				if (existingAttributes[name] == null) {
					string elementName = element.Name;
					WixXmlAttributeType type = GetWixAttributeType(elementName, name);
					string[] attributeValues = GetAttributeValues(elementName, name);
					WixDocument document = GetWixDocument(element);
					missingAttributes.Add(new WixXmlAttribute(name, type, attributeValues, document));
				}
			}
			return missingAttributes;
		}
		public void AddRange(WixXmlAttributeCollection attributes)
		{
			foreach (WixXmlAttribute attribute in attributes) {
				Add(attribute);
			}
		}