/** * 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))); }