java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java
changeset 101 fd83cd102325
parent 97 a72d55ff30c9
child 105 e62a3e498212
     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) {