NodeListModel filterByName(String name) throws TemplateModelException { NodeListModel result = new NodeListModel(contextNode); int size = size(); if (size == 0) { return result; } Environment env = Environment.getCurrentEnvironment(); for (int i = 0; i < size; i++) { NodeModel nm = (NodeModel) get(i); if (nm instanceof ElementModel) { if (((ElementModel) nm).matchesName(name, env)) { result.add(nm); } } } return result; }
public TemplateModel get(String key) throws TemplateModelException { int size = size(); if (size == 1) { NodeModel nm = (NodeModel) get(0); return nm.get(key); StringBuilder result = new StringBuilder(); for (int i = 0; i < size; i++) { NodeModel nm = (NodeModel) get(i); TemplateScalarModel textModel = (TemplateScalarModel) nm.get(key); result.append(textModel.getAsString()); && (DomStringUtil.isXMLNameLike(key, 1) || key.equals("@@") || key.equals("@*")))) || key.equals("*") || key.equals("**")) { NodeListModel result = new NodeListModel(contextNode); for (int i = 0; i < size; i++) { NodeModel nm = (NodeModel) get(i); if (nm instanceof ElementModel) { TemplateSequenceModel tsm = (TemplateSequenceModel) ((ElementModel) nm).get(key); int tsmSize = tsm.size(); for (int j = 0; j < tsmSize; j++) { result.add(tsm.get(j)); if (result.size() == 1) { return result.get(0); XPathSupport xps = getXPathSupport(); if (xps != null) { Object context = (size == 0) ? null : rawNodeList();
public Object[] explainTypeError(Class[] expectedClasses) { for (int i = 0; i < expectedClasses.length; i++) { Class expectedClass = expectedClasses[i]; if (TemplateScalarModel.class.isAssignableFrom(expectedClass) || TemplateDateModel.class.isAssignableFrom(expectedClass) || TemplateNumberModel.class.isAssignableFrom(expectedClass) || TemplateBooleanModel.class.isAssignableFrom(expectedClass)) { return newTypeErrorExplanation("string"); } else if (TemplateNodeModel.class.isAssignableFrom(expectedClass)) { return newTypeErrorExplanation("node"); } } return null; }
public TemplateSequenceModel getChildNodes() { if (children == null) { children = new NodeListModel(node.getChildNodes(), this); } return children; }
public boolean isEmpty() { return size() == 0; }
@Override public TemplateModel get(String key) throws TemplateModelException { if (key.equals("*")) { return getRootElement(); } else if (key.equals("**")) { NodeList nl = ((Document) node).getElementsByTagName("*"); return new NodeListModel(nl, this); } else if (DomStringUtil.isXMLNameLike(key)) { ElementModel em = (ElementModel) NodeModel.wrap(((Document) node).getDocumentElement()); if (em.matchesName(key, Environment.getCurrentEnvironment())) { return em; } else { return new NodeListModel(this); } } return super.get(key); }
private Object[] newTypeErrorExplanation(String type) { int size = size(); return new Object[] { "This XML query result can't be used as ", type, " because for that it had to contain exactly " + "1 XML node, but it contains ", Integer.valueOf(size), " nodes. " + "That is, the constructing XML query has found ", size == 0 ? "no matches." : "multiple matches." }; }
public TemplateModel get(String key) throws TemplateModelException { if (key.equals("*")) { NodeListModel ns = new NodeListModel(this); TemplateSequenceModel children = getChildNodes(); int size = children.size(); NodeModel child = (NodeModel) children.get(i); if (child.node.getNodeType() == Node.ELEMENT_NODE) { ns.add(child); return new NodeListModel(((Element) node).getElementsByTagName("*"), this); } else if (key.startsWith("@")) { if (key.startsWith("@@")) { if (key.equals(AtAtKey.ATTRIBUTES.getKey())) { return new NodeListModel(node.getAttributes(), this); } else if (key.equals(AtAtKey.START_TAG.getKey())) { NodeOutputter nodeOutputter = new NodeOutputter(node); ? wrap(previousSibling) : new NodeListModel(Collections.emptyList(), null); } else if (key.equals(AtAtKey.NEXT_SIBLING_ELEMENT.getKey())) { Node nextSibling = node.getNextSibling(); ? wrap(nextSibling) : new NodeListModel(Collections.emptyList(), null); } else { Attr att = getAttribute(key.substring(1)); if (att == null) { return new NodeListModel(this);
public TemplateModel get(String key) throws TemplateModelException { if (size() ==1) { NodeModel nm = (NodeModel) get(0); return nm.get(key); for (int i=0; i<size(); i++) { NodeModel nm = (NodeModel) get(i); TemplateScalarModel textModel = (TemplateScalarModel) nm.get(key); result.append(textModel.getAsString()); NodeListModel result = new NodeListModel(contextNode); for (int i=0; i<size(); i++) { NodeModel nm = (NodeModel) get(i); if (nm instanceof ElementModel) { TemplateSequenceModel tsm = (TemplateSequenceModel) ((ElementModel) nm).get(key); int size = tsm == null ? 0 : tsm.size(); for (int j=0; j < size; j++) { result.add(tsm.get(j)); if (result.size() == 1) { return result.get(0); XPathSupport xps = getXPathSupport(); if (xps != null) { Object context = (size() == 0) ? null : rawNodeList(); return xps.executeQuery(context, key); + this.getClass().getName() + "). This node sequence contains " + size() + " node(s). " + "Some keys are valid only for node sequences of size 1. " + "If you use Xalan (instead of Jaxen), XPath expression keys work only with "
NodeListModel nlm = new NodeListModel(result, null); nlm.xpathSupport = this; return nlm;
public boolean isEmpty() { return size() == 0; }
public Object[] explainTypeError(Class[] expectedClasses) { for (int i = 0; i < expectedClasses.length; i++) { Class expectedClass = expectedClasses[i]; if (TemplateScalarModel.class.isAssignableFrom(expectedClass) || TemplateDateModel.class.isAssignableFrom(expectedClass) || TemplateNumberModel.class.isAssignableFrom(expectedClass) || TemplateBooleanModel.class.isAssignableFrom(expectedClass)) { return newTypeErrorExplanation("string"); } else if (TemplateNodeModel.class.isAssignableFrom(expectedClass)) { return newTypeErrorExplanation("node"); } } return null; }
XObject xresult = xpath.execute(xpathContext, ctxtNode, customPrefixResolver); if (xresult instanceof XNodeSet) { NodeListModel result = new NodeListModel(node); result.xpathSupport = this; NodeIterator nodeIterator = xresult.nodeset(); n = nodeIterator.nextNode(); if (n != null) { result.add(n); return result.size() == 1 ? result.get(0) : result;
public TemplateModel get(String key) throws TemplateModelException { int size = size(); if (size == 1) { NodeModel nm = (NodeModel) get(0); return nm.get(key); StringBuilder result = new StringBuilder(); for (int i = 0; i < size; i++) { NodeModel nm = (NodeModel) get(i); TemplateScalarModel textModel = (TemplateScalarModel) nm.get(key); result.append(textModel.getAsString()); && (DomStringUtil.isXMLNameLike(key, 1) || key.equals("@@") || key.equals("@*")))) || key.equals("*") || key.equals("**")) { NodeListModel result = new NodeListModel(contextNode); for (int i = 0; i < size; i++) { NodeModel nm = (NodeModel) get(i); if (nm instanceof ElementModel) { TemplateSequenceModel tsm = (TemplateSequenceModel) ((ElementModel) nm).get(key); int tsmSize = tsm.size(); for (int j = 0; j < tsmSize; j++) { result.add(tsm.get(j)); if (result.size() == 1) { return result.get(0); XPathSupport xps = getXPathSupport(); if (xps != null) { Object context = (size == 0) ? null : rawNodeList();
public TemplateSequenceModel getChildNodes() { if (children == null) { children = new NodeListModel(node.getChildNodes(), this); } return children; }
public boolean isEmpty() { return size() == 0; }