List of usage examples for org.dom4j DocumentFactory createXPath
public XPath createXPath(String xpathExpression) throws InvalidXPathException
createXPath
parses an XPath expression and creates a new XPath XPath
instance.
From source file:com.liferay.alloy.tools.builder.taglib.TagBuilder.java
License:Open Source License
protected Document mergeTlds(Document sourceDoc, Document targetDoc) { Element targetRoot = targetDoc.getRootElement(); DocumentFactory factory = SAXReaderUtil.getDocumentFactory(); XPath xpathTags = factory.createXPath("//tld:tag"); Map<String, String> namespaceContextMap = new HashMap<String, String>(); namespaceContextMap.put(_TLD_XPATH_PREFIX, _TLD_XPATH_URI); NamespaceContext namespaceContext = new AlloyGeneratorNamespaceContext(namespaceContextMap); xpathTags.setNamespaceContext(namespaceContext); List<Node> sources = xpathTags.selectNodes(sourceDoc); for (Node source : sources) { Element sourceElement = (Element) source; String sourceName = sourceElement.elementText("name"); String xpathTagValue = "//tld:tag[tld:name='" + sourceName + "']"; XPath xpathTag = factory.createXPath(xpathTagValue); xpathTag.setNamespaceContext(namespaceContext); List<Node> targets = xpathTag.selectNodes(targetDoc); if (targets.size() > 0) { Element targetElement = (Element) targets.get(0); XPath xpathAttributes = factory.createXPath(xpathTagValue + "//tld:attribute"); Map<String, String> namespaces = new HashMap<String, String>(); namespaces.put("tld", StringPool.EMPTY); xpathAttributes.setNamespaceURIs(namespaces); List<Node> sourceAttributes = xpathAttributes.selectNodes(source); for (Node sourceAttribute : sourceAttributes) { Element sourceAttributeElement = (Element) sourceAttribute; String attributeName = sourceAttributeElement.elementText("name"); String xpathAttributeValue = "//tld:attribute[tld:name='" + attributeName + "']"; XPath xpathAttribute = factory.createXPath(xpathTagValue + xpathAttributeValue); xpathAttribute.setNamespaceContext(namespaceContext); Node targetAttribute = xpathAttribute.selectSingleNode(targetElement); if (targetAttribute != null) { targetAttribute.detach(); }//from www . j a va 2 s . c om targetElement.add(sourceAttributeElement.createCopy()); } Element dynamicAttrElement = targetElement.element("dynamic-attributes"); if (dynamicAttrElement != null) { targetElement.add(dynamicAttrElement.detach()); } } else { targetRoot.add(sourceElement.createCopy()); } } return targetDoc; }
From source file:org.orbeon.oxf.xml.dom4j.Dom4jUtils.java
License:Open Source License
public static XPath createXPath(final String expression) throws InvalidXPathException { final DocumentFactory factory = NonLazyUserDataDocumentFactory.getInstance(); return factory.createXPath(expression); }