Bloom.Book.HtmlDom.GetAttributeValue C# (CSharp) Method

GetAttributeValue() public static method

public static GetAttributeValue ( XmlElement elt, string name ) : string
elt System.Xml.XmlElement
name string
return string
        public static string GetAttributeValue(XmlElement elt, string name)
        {
            var attr = elt.Attributes[name];
            if(attr == null)
                return "";
            return attr.Value;
        }

Usage Example

        /// <summary>
        /// We stick various classes on editable things to control order and visibility
        /// </summary>
        public static void UpdateContentLanguageClasses(XmlNode elementOrDom, BookData bookData,
                                                        string language1IsoCode, string language2IsoCode, string language3IsoCode)
        {
            var multilingualClass = "bloom-monolingual";
            var contentLanguages  = new Dictionary <string, string>();

            contentLanguages.Add(language1IsoCode, "bloom-content1");

            if (!String.IsNullOrEmpty(language2IsoCode) && language1IsoCode != language2IsoCode)
            {
                multilingualClass = "bloom-bilingual";
                contentLanguages.Add(language2IsoCode, "bloom-content2");
            }
            if (!String.IsNullOrEmpty(language3IsoCode) && language1IsoCode != language3IsoCode &&
                language2IsoCode != language3IsoCode)
            {
                multilingualClass = "bloom-trilingual";
                contentLanguages.Add(language3IsoCode, "bloom-content3");
                Debug.Assert(!String.IsNullOrEmpty(language2IsoCode), "shouldn't have a content3 lang with no content2 lang");
            }

            //Stick a class in the page div telling the stylesheet how many languages we are displaying (only makes sense for content pages, in Jan 2012).
            foreach (
                XmlElement pageDiv in
                elementOrDom.SafeSelectNodes(
                    "descendant-or-self::div[contains(@class,'bloom-page') and not(contains(@class,'bloom-frontMatter')) and not(contains(@class,'bloom-backMatter'))]")
                )
            {
                HtmlDom.RemoveClassesBeginingWith(pageDiv, "bloom-monolingual");
                HtmlDom.RemoveClassesBeginingWith(pageDiv, "bloom-bilingual");
                HtmlDom.RemoveClassesBeginingWith(pageDiv, "bloom-trilingual");
                HtmlDom.AddClassIfMissing(pageDiv, multilingualClass);
            }


            // This is the "code" part of the visibility system: https://goo.gl/EgnSJo
            foreach (XmlElement group in GetTranslationGroups(elementOrDom))
            {
                var dataDefaultLanguages = HtmlDom.GetAttributeValue(@group, "data-default-languages").Split(new char[] { ',', ' ' },
                                                                                                             StringSplitOptions.RemoveEmptyEntries);

                //nb: we don't necessarily care that a div is editable or not
                foreach (XmlElement e in @group.SafeSelectNodes(".//textarea | .//div"))
                {
                    UpdateContentLanguageClassesOnElement(e, contentLanguages, bookData, language2IsoCode, language3IsoCode, dataDefaultLanguages);
                }
            }

            // Also correct bloom-contentX fields in the bloomDataDiv, which are not listed under translation groups
            foreach (XmlElement coverImageDescription in elementOrDom.SafeSelectNodes(".//*[@id='bloomDataDiv']/*[@data-book='coverImageDescription']"))
            {
                string[] dataDefaultLanguages = new string[] { " auto" };                       // bloomDataDiv contents don't have dataDefaultLanguages on them, so just go with "auto"
                //nb: we don't necessarily care that a div is editable or not
                foreach (XmlElement e in coverImageDescription.SafeSelectNodes(".//textarea | .//div"))
                {
                    UpdateContentLanguageClassesOnElement(e, contentLanguages, bookData, language2IsoCode, language3IsoCode, dataDefaultLanguages);
                }
            }
        }
All Usage Examples Of Bloom.Book.HtmlDom::GetAttributeValue