/** * Bind an Element that represents a property. * * <p>The exact behavior depends on the element's attributes. If it has a <code>name</code> or * <code>ID</code> attribute, it is associated with that name in a Namespace binding, which in * turn is associated with the Element's tagname. Otherwise, it is simply associated with the * Element's tagname, just like a NamedNodeMap. * * @param binding the element to store. * @see org.w3c.dom.NamedNodeMap */ public void setPropertyBinding(ActiveElement binding) { String name = binding.getAttribute("name"); if (name == null) name = binding.getAttribute("ID"); if (name == null) { setBinding(binding.getTagName(), binding); } else { setNamedBinding(binding.getTagName(), name, binding); } }
/** * Process the current node by expanding entities in its attributes, but blindly copying its * children (content). */ public final void expandCurrentAttrs() { ActiveNode node = input.getActive(); if (input.hasActiveAttributes()) { ActiveElement oe = node.asElement(); ActiveElement e = new TreeElement(oe, expandAttrs(oe.getAttrList())); output.startNode(e); if (input.hasChildren()) { copyChildren(); } output.endElement(e.isEmptyElement() || e.implicitEnd()); } else if (input.hasChildren() && !node.hasChildNodes()) { copyCurrentNode(node); } else { output.putNode(node); } }
/** * Process the current node in the default manner, expanding entities in its attributes and * processing its children re-entrantly. */ public final void expandCurrentNode() { ActiveNode node = input.getActive(); if (node == null) return; // Crock for PI comments: if (node.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE && node.getNodeName().equals("--")) return; // No need to check for an entity; active ones use EntityHandler. if (input.hasActiveAttributes()) { ActiveElement oe = node.asElement(); ActiveElement e = oe.editedCopy(expandAttrs(oe.getAttrList()), null); output.startNode(e); if (input.hasChildren()) { processChildren(); } output.endElement(e.isEmptyElement() || e.implicitEnd()); } else if (input.hasChildren()) { output.startNode(node); if (input.hasChildren()) processChildren(); output.endNode(); } else { output.putNode(node); } }
/** Expand entities in the value of a given attribute. */ public void expandAttribute(ActiveAttr att, ActiveElement e) { e.setAttributeValue(att.getName(), expandNodes(att.getValueNodes(null))); }