/// <summary>
        /// Reconstructs an image formatting rule from the specified XML image.
        /// </summary>
        /// <param name="node">The node containing the image formatting rule XML.</param>
        /// <returns>The image formatting rule.</returns>
        private static ImageFormattingRule ReadImageFormattingRuleXml(XmlNode node)
        {
            var formattingRule = new ImageFormattingRule();

            if (XmlHelper.EvaluateSingleNode(node, "imageFormattingRule"))
            {
                XmlNode imageFormattingRuleNode = XmlHelper.SelectSingleNode(node, "imageFormattingRule");
                if (imageFormattingRuleNode != null)
                {
                    XmlNode scaleIdNode = imageFormattingRuleNode.SelectSingleNode("thumbnailScaleId");
                    if (scaleIdNode != null &&
                        !string.IsNullOrEmpty(scaleIdNode.InnerText))
                    {
                        formattingRule.ThumbnailScaleId = EntityRef.FromXmlString(scaleIdNode.InnerText);
                    }

                    XmlNode sizeIdNode = imageFormattingRuleNode.SelectSingleNode("thumbnailSizeId");
                    if (sizeIdNode != null &&
                        !string.IsNullOrEmpty(sizeIdNode.InnerText))
                    {
                        formattingRule.ThumbnailSizeId = EntityRef.FromXmlString(sizeIdNode.InnerText);
                    }
                }
            }

            return(formattingRule);
        }
        /// <summary>
        /// Compares the image formatting rules.
        /// </summary>
        /// <param name="index">The index.</param>
        /// <param name="ifr1">The ifr1.</param>
        /// <param name="ifr2">The ifr2.</param>
        private static void CompareImageFormattingRules(int index, ImageFormattingRule ifr1, ImageFormattingRule ifr2)
        {
            Assert.IsNotNull(ifr1, "Format Index:{0} ImageFormattingRule 1 should not be null.", index.ToString(CultureInfo.InvariantCulture));
            Assert.IsNotNull(ifr2, "Format Index:{0} ImageFormattingRule 2 should not be null.", index.ToString(CultureInfo.InvariantCulture));

            Assert.AreEqual(ifr1.ThumbnailScaleId.XmlSerializationText, ifr2.ThumbnailScaleId.XmlSerializationText, "Format Index:{0} ThumbnailScaleId is invalid", index.ToString(CultureInfo.InvariantCulture));
            Assert.AreEqual(ifr1.ThumbnailSizeId.XmlSerializationText, ifr2.ThumbnailSizeId.XmlSerializationText, "Format Index:{0} ThumbnailSizeId is invalid", index.ToString(CultureInfo.InvariantCulture));
        }
        /// <summary>
        /// Writes the image formatting rule XML.
        /// </summary>
        /// <param name="imageFormattingRule">The image formatting rule.</param>
        /// <param name="xmlWriter">The XML writer.</param>
        private static void WriteImageFormattingRuleXml(ImageFormattingRule imageFormattingRule, XmlWriter xmlWriter)
        {
            xmlWriter.WriteStartElement("imageFormattingRule");

            if (imageFormattingRule.ThumbnailScaleId != null)
            {
                xmlWriter.WriteStartElement("thumbnailScaleId");
                xmlWriter.WriteAttributeString("entityRef", "true");
                xmlWriter.WriteString(imageFormattingRule.ThumbnailScaleId.XmlSerializationText);
                xmlWriter.WriteEndElement(); // thumbnailScaleId
            }

            if (imageFormattingRule.ThumbnailSizeId != null)
            {
                xmlWriter.WriteStartElement("thumbnailSizeId");
                xmlWriter.WriteAttributeString("entityRef", "true");
                xmlWriter.WriteString(imageFormattingRule.ThumbnailSizeId.XmlSerializationText);
                xmlWriter.WriteEndElement(); // thumbnailSizeId
            }

            xmlWriter.WriteEndElement(); // imageFormattingRule
        }