def write_namespace_axis(node, visible)
doc = node.document()
has_empty_namespace = false
list = Array.new()
cur = node
namespaces = cur.node_namespaces()
namespaces.each{|prefix|
next if ((prefix == "xmlns") && (node.namespace(prefix) == ""))
namespace = cur.namespace(prefix)
next if (is_namespace_node(namespace))
next if (node.namespace(prefix) != cur.namespace(prefix))
next if (prefix == "xml" && namespace == "http://www.w3.org/XML/1998/namespace")
next if (!is_node_visible(cur))
rendered = is_namespace_rendered(prefix, namespace)
@visibleNamespaces.push(NamespaceNode.new("xmlns:"+prefix,namespace)) if (visible)
if ((!rendered) && !list.include?(prefix))
list.push(prefix)
end
has_empty_namespace = true if (prefix == nil)
}
if (visible && !has_empty_namespace && !is_namespace_rendered(nil, nil))
@res = @res + ' xmlns=""'
end
if ((@prefix_list) && (node.to_s() == node.parent().to_s()))
@inclusive_namespaces.each{|ns|
prefix = ns.prefix().split(":")[1]
list.push(prefix) if (!list.include?(prefix) && (!node.attributes.prefixes.include?(prefix)))
}
@prefix_list = nil
end
list.sort!()
list.each{|prefix|
next if (prefix == "")
next if (@rendered_prefixes.include?(prefix))
@rendered_prefixes.push(prefix)
ns = node.namespace(prefix)
ns = @preserve_element.namespace(prefix) if (ns == nil)
@res = @res + normalize_string(" " + prefix + '="' + ns + '"', NODE_TYPE_TEXT) if (prefix == "xmlns")
@res = @res + normalize_string(" xmlns:" + prefix + '="' + ns + '"', NODE_TYPE_TEXT) if (prefix != nil && prefix != "xmlns")
}
if (visible)
@prevVisibleNamespacesStart = @prevVisibleNamespacesEnd
@prevVisibleNamespacesEnd = @visibleNamespaces.size()
end
end