1.1 --- a/java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java Wed Sep 17 21:06:56 2014 +0200
1.2 +++ b/java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java Wed Sep 17 21:31:18 2014 +0200
1.3 @@ -31,6 +31,7 @@
1.4 import javax.xml.xpath.XPathExpressionException;
1.5 import javax.xml.xpath.XPathFactory;
1.6 import javax.xml.xpath.XPathVariableResolver;
1.7 +import org.w3c.dom.Node;
1.8
1.9 /**
1.10 *
1.11 @@ -47,7 +48,6 @@
1.12 private final XPathFactory xpathFactory;
1.13 private final XPath xpath;
1.14 private final String expressionString;
1.15 - private final XPathExpression xpathExpression;
1.16
1.17 public XPathAction(ActionContext actionContext) throws OutputActionException {
1.18 super(actionContext);
1.19 @@ -79,12 +79,6 @@
1.20 xpath.setXPathVariableResolver(variableResolver);
1.21
1.22 expressionString = actionData.get(0);
1.23 - try {
1.24 - xpathExpression = xpath.compile(expressionString);
1.25 - } catch (XPathExpressionException e) {
1.26 - throw new OutputActionException("Unable to compile XPath: " + expressionString, e);
1.27 - }
1.28 -
1.29 }
1.30 }
1.31
1.32 @@ -147,8 +141,19 @@
1.33
1.34 @Override
1.35 public void run(DOMResult domResult) throws OutputActionException {
1.36 + XPathExpression xpathExpression = null;
1.37 try {
1.38 - String result = xpathExpression.evaluate(domResult.getNode());
1.39 + Node document = domResult.getNode();
1.40 +
1.41 + xpath.setNamespaceContext(new DocumentNamespaceContext(document));
1.42 +
1.43 + try {
1.44 + xpathExpression = xpath.compile(expressionString);
1.45 + } catch (XPathExpressionException e) {
1.46 + throw new OutputActionException("Unable to compile XPath: " + expressionString, e);
1.47 + }
1.48 +
1.49 + String result = xpathExpression.evaluate(document);
1.50 try (PrintWriter out = new PrintWriter(getActionContext().getOutputStream())) {
1.51 out.print(result);
1.52 if (lineBreak) {