diff -r b50e77d23d13 -r fd83cd102325 java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java --- a/java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java Wed Sep 17 21:06:56 2014 +0200 +++ b/java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java Wed Sep 17 21:31:18 2014 +0200 @@ -31,6 +31,7 @@ import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import javax.xml.xpath.XPathVariableResolver; +import org.w3c.dom.Node; /** * @@ -47,7 +48,6 @@ private final XPathFactory xpathFactory; private final XPath xpath; private final String expressionString; - private final XPathExpression xpathExpression; public XPathAction(ActionContext actionContext) throws OutputActionException { super(actionContext); @@ -79,12 +79,6 @@ xpath.setXPathVariableResolver(variableResolver); expressionString = actionData.get(0); - try { - xpathExpression = xpath.compile(expressionString); - } catch (XPathExpressionException e) { - throw new OutputActionException("Unable to compile XPath: " + expressionString, e); - } - } } @@ -147,8 +141,19 @@ @Override public void run(DOMResult domResult) throws OutputActionException { + XPathExpression xpathExpression = null; try { - String result = xpathExpression.evaluate(domResult.getNode()); + Node document = domResult.getNode(); + + xpath.setNamespaceContext(new DocumentNamespaceContext(document)); + + try { + xpathExpression = xpath.compile(expressionString); + } catch (XPathExpressionException e) { + throw new OutputActionException("Unable to compile XPath: " + expressionString, e); + } + + String result = xpathExpression.evaluate(document); try (PrintWriter out = new PrintWriter(getActionContext().getOutputStream())) { out.print(result); if (lineBreak) {