/** * DOM Level 3: Check a node to determine if it contains unbound namespace prefixes. * * @param node The node to check for unbound namespace prefices */ protected void checkUnboundNamespacePrefixedNode(Node node) throws IOException { if (fNamespaces) { if (DEBUG) { System.out.println( "==>serializeNode(" + node.getNodeName() + ") [Entity Reference - Namespaces on]"); System.out.println("==>Declared Prefix Count: " + fNSBinder.getDeclaredPrefixCount()); System.out.println("==>Node Name: " + node.getNodeName()); System.out.println("==>First Child Node Name: " + node.getFirstChild().getNodeName()); System.out.println("==>First Child Node Prefix: " + node.getFirstChild().getPrefix()); System.out.println( "==>First Child Node NamespaceURI: " + node.getFirstChild().getNamespaceURI()); } Node child, next; for (child = node.getFirstChild(); child != null; child = next) { next = child.getNextSibling(); if (DEBUG) { System.out.println("==>serializeNode(" + child.getNodeName() + ") [Child Node]"); System.out.println("==>serializeNode(" + child.getPrefix() + ") [Child Node Prefix]"); } // If a NamespaceURI is not declared for the current // node's prefix, raise a fatal error. String prefix = child.getPrefix(); prefix = (prefix == null || prefix.length() == 0) ? XMLSymbols.EMPTY_STRING : fSymbolTable.addSymbol(prefix); if (fNSBinder.getURI(prefix) == null && prefix != null) { fatalError( "The replacement text of the entity node '" + node.getNodeName() + "' contains an element node '" + child.getNodeName() + "' with an undeclared prefix '" + prefix + "'."); } if (child.getNodeType() == Node.ELEMENT_NODE) { NamedNodeMap attrs = child.getAttributes(); for (int i = 0; i < attrs.getLength(); i++) { String attrPrefix = attrs.item(i).getPrefix(); attrPrefix = (attrPrefix == null || attrPrefix.length() == 0) ? XMLSymbols.EMPTY_STRING : fSymbolTable.addSymbol(attrPrefix); if (fNSBinder.getURI(attrPrefix) == null && attrPrefix != null) { fatalError( "The replacement text of the entity node '" + node.getNodeName() + "' contains an element node '" + child.getNodeName() + "' with an attribute '" + attrs.item(i).getNodeName() + "' an undeclared prefix '" + attrPrefix + "'."); } } } if (child.hasChildNodes()) { checkUnboundNamespacePrefixedNode(child); } } } }