/** * Construct a {@link NSContext} instance for the supplied element. * @param el the <code>Element</code> to gather the namespace context for * @return the <code>NSContext</code> */ public static NSContext getMyNSContext(Element el) { NSContext ns = new NSContext(); ns.register(getParentNamespaces(el)); ns.register(getMyNamespaces(el)); return ns; }
/** * Initialize object's namespace context (recursively). * * @param el * object's associated element. */ private void initNSContext(Element el) { if (el.getParentNode() != null && el.getParentNode().getNodeType() == Node.ELEMENT_NODE) initNSContext((Element) el.getParentNode()); NamedNodeMap attrs = el.getAttributes(); for (int i = 0; i < attrs.getLength(); ++i) { Attr attr = (Attr) attrs.item(i); if (!attr.getName().startsWith("xmlns:")) continue; String prefix = attr.getLocalName(); String uri = attr.getValue(); _nsContext.register(prefix, uri); } Attr dflt = el.getAttributeNode("xmlns"); if (dflt != null) { _nsContext.register("", dflt.getTextContent()); } }
/** * <p> * Convert the current stack of contexts into a single <code>NSContext</code>. * </p> * @return the <code>NSContext</code> instance */ public NSContext toNSContext() { NSContext n = new NSContext(); for (Frame f = _current;f != null; f=f._parent) { if (f._bindings == null) continue; for (Iterator it = f._bindings.keySet().iterator();it.hasNext();) { String pfx = (String) it.next(); if (n.getNamespaceURI(pfx) == null) { n.register(pfx, f._bindings.get(pfx)); } } } return n; }
@SuppressWarnings("unchecked") private static void buildNScontext(NSContext nscontext, OMElement element) { if (element == null) return; if (element.getParent() instanceof OMElement) buildNScontext(nscontext, (OMElement) element.getParent()); if (element.getAllDeclaredNamespaces() != null) for (Iterator<OMNamespace> i=element.getAllDeclaredNamespaces(); i.hasNext(); ){ OMNamespace omn = i.next(); nscontext.register(omn.getPrefix(), omn.getNamespaceURI()); } if (element.getDefaultNamespace() != null) nscontext.register("", element.getDefaultNamespace().getNamespaceURI()); }
Set<String> prefixes = nsContext.getPrefixes(); if (!nsContext.getUriSet().contains(Namespaces.ODE_EXTENSION_NS)) { nsContext.register("ode", Namespaces.ODE_EXTENSION_NS);