@NotNull public XmlTag[] findSubTags(final String name, final String namespace) { final XmlTag[] subTags = getSubTags(); final List<XmlTag> result = new ArrayList<XmlTag>(); for (final XmlTag subTag : subTags) { if (namespace == null) { if (name.equals(subTag.getName())) result.add(subTag); } else if (name.equals(subTag.getLocalName()) && namespace.equals(subTag.getNamespace())) { result.add(subTag); } } return ContainerUtil.toArray(result, new XmlTag[result.size()]); }
protected XPathType getTypeForTag(XmlTag tag, String attribute) { String tagName = tag.getLocalName(); if ("select".equals(attribute)) { if ("copy-of".equals(tagName) || "for-each".equals(tagName) || "apply-templates".equals(tagName)) { return XPathType.NODESET; } else if ("value-of".equals(tagName) || "sort".equals(tagName)) { return XPathType.STRING; } return XPathType.ANY; } else if ("test".equals(attribute)) { if ("if".equals(tagName) || "when".equals(tagName)) { return XPathType.BOOLEAN; } } else if ("number".equals(attribute)) { if ("value".equals(tagName)) { return XPathType.NUMBER; } } return XPathType.UNKNOWN; }