Exemplo n.º 1
0
        public static string GetPrefixOfNamespace(this XAttribute attribute, XNamespace ns)
        {
            string namespaceName = ns.NamespaceName;

            if (namespaceName.Length == 0)
            {
                return(string.Empty);
            }
            if (attribute.GetParent() != null)
            {
                return(((XElement)attribute.GetParent()).GetPrefixOfNamespace(ns));
            }
            if ((object)namespaceName == (object)XNodeNavigator.xmlPrefixNamespace)
            {
                return("xml");
            }
            if ((object)namespaceName == (object)XNodeNavigator.xmlnsPrefixNamespace)
            {
                return("xmlns");
            }
            return(null);
        }
Exemplo n.º 2
0
        private static bool HasNamespaceDeclarationInScope(XAttribute a, XElement e)
        {
            XName name = a.Name;

            while (e != null && e != a.GetParent())
            {
                if (e.Attribute(name) != null)
                {
                    return(true);
                }
                e = e.Parent;
            }
            return(false);
        }
Exemplo n.º 3
0
        public override bool MoveToNextNamespace(XPathNamespaceScope scope)
        {
            XAttribute a = _source as XAttribute;

            if (a != null && _parent != null && !IsXmlNamespaceDeclaration(a))
            {
                switch (scope)
                {
                case XPathNamespaceScope.Local:
                    if (a.GetParent() != _parent)
                    {
                        return(false);
                    }
                    a = GetNextNamespaceDeclarationLocal(a);
                    break;

                case XPathNamespaceScope.ExcludeXml:
                    do
                    {
                        a = GetNextNamespaceDeclarationGlobal(a);
                    } while (a != null &&
                             (a.Name.LocalName == "xml" ||
                              HasNamespaceDeclarationInScope(a, _parent)));
                    break;

                case XPathNamespaceScope.All:
                    do
                    {
                        a = GetNextNamespaceDeclarationGlobal(a);
                    } while (a != null &&
                             HasNamespaceDeclarationInScope(a, _parent));
                    if (a == null &&
                        !HasNamespaceDeclarationInScope(GetXmlNamespaceDeclaration(), _parent))
                    {
                        a = GetXmlNamespaceDeclaration();
                    }
                    break;
                }
                if (a != null)
                {
                    _source = a;
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 4
0
        static XAttribute GetNextNamespaceDeclarationLocal(XAttribute a)
        {
            XElement e = (XElement)a.GetParent();

            if (e == null)
            {
                return(null);
            }
            while (a != e.LastAttribute)
            {
                a = a.NextAttribute;
                if (a.IsNamespaceDeclaration)
                {
                    return(a);
                }
            }
            return(null);
        }
Exemplo n.º 5
0
        private static XAttribute?GetNextNamespaceDeclarationGlobal(XAttribute a)
        {
            XElement?e = (XElement?)a.GetParent();

            if (e == null)
            {
                return(null);
            }
            XAttribute?next = GetNextNamespaceDeclarationLocal(a);

            if (next != null)
            {
                return(next);
            }
            e = e.Parent;
            if (e == null)
            {
                return(null);
            }
            return(GetFirstNamespaceDeclarationGlobal(e));
        }
Exemplo n.º 6
0
        public override bool MoveToNextAttribute()
        {
            XAttribute currentAttribute = _source as XAttribute;

            if (currentAttribute != null && _parent == null)
            {
                XElement e = (XElement)currentAttribute.GetParent();
                if (e != null)
                {
                    for (XAttribute attribute = currentAttribute.NextAttribute; attribute != null; attribute = attribute.NextAttribute)
                    {
                        if (!attribute.IsNamespaceDeclaration)
                        {
                            _source = attribute;
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
Exemplo n.º 7
0
        public override bool MoveToNextAttribute()
        {
            XAttribute a = source as XAttribute;

            if (a != null && parent == null)
            {
                XElement e = (XElement)a.GetParent();
                if (e != null)
                {
                    while (a != e.LastAttribute)
                    {
                        a = a.NextAttribute;
                        if (!a.IsNamespaceDeclaration)
                        {
                            source = a;
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }