internal string GetNamespace(string name)
{
//we are checking the namespace nodes backwards comparing its normal order in DOM tree
if (name == "xml")
return StrReservedXml;
if (name == "xmlns")
return StrReservedXmlns;
if (name != null && name.Length == 0)
name = "xmlns";
RealFoliate();
XmlNode node = _node;
XmlNodeType nt = node.NodeType;
string retVal = null;
while (node != null)
{
//first identify an element node in the ancestor + itself
while (node != null && ((nt = node.NodeType) != XmlNodeType.Element))
{
if (nt == XmlNodeType.Attribute)
node = ((XmlAttribute)node).OwnerElement;
else
node = node.ParentNode;
}
//found one -- inside if
if (node != null)
{
//must be element node
retVal = GetNamespace((XmlBoundElement)node, name);
if (retVal != null)
return retVal;
//didn't find it, try the next parentnode
node = node.ParentNode;
}
}
//nothing happens, then return string.empty.
return string.Empty;
}