private static Epub3NavAnchor ReadEpub3NavAnchor(XElement epub3NavAnchorNode)
        {
            Epub3NavAnchor epub3NavAnchor = new Epub3NavAnchor();

            foreach (XAttribute navAnchorNodeAttribute in epub3NavAnchorNode.Attributes())
            {
                string attributeValue = navAnchorNodeAttribute.Value;
                switch (navAnchorNodeAttribute.GetLowerCaseLocalName())
                {
                case "href":
                    epub3NavAnchor.Href = attributeValue;
                    break;

                case "title":
                    epub3NavAnchor.Title = attributeValue;
                    break;

                case "alt":
                    epub3NavAnchor.Alt = attributeValue;
                    break;

                case "type":
                    epub3NavAnchor.Type = StructuralSemanticsPropertyParser.Parse(attributeValue);
                    break;
                }
            }
            epub3NavAnchor.Text = epub3NavAnchorNode.Value.Trim();
            return(epub3NavAnchor);
        }
        private static Epub3Nav ReadEpub3Nav(XElement navNode)
        {
            Epub3Nav epub3Nav = new Epub3Nav();

            foreach (XAttribute navNodeAttribute in navNode.Attributes())
            {
                string attributeValue = navNodeAttribute.Value;
                switch (navNodeAttribute.GetLowerCaseLocalName())
                {
                case "type":
                    epub3Nav.Type = StructuralSemanticsPropertyParser.Parse(attributeValue);
                    break;

                case "hidden":
                    epub3Nav.IsHidden = true;
                    break;
                }
            }
            foreach (XElement navChildNode in navNode.Elements())
            {
                switch (navChildNode.GetLowerCaseLocalName())
                {
                case "h1":
                case "h2":
                case "h3":
                case "h4":
                case "h5":
                case "h6":
                    epub3Nav.Head = navChildNode.Value.Trim();
                    break;

                case "ol":
                    Epub3NavOl epub3NavOl = ReadEpub3NavOl(navChildNode);
                    epub3Nav.Ol = epub3NavOl;
                    break;
                }
            }
            return(epub3Nav);
        }