Skip to content

Instantly share code, notes, and snippets.

@oowekyala
Created February 27, 2022 16:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oowekyala/f74600bc5a2ae6f248fccce54f3dabfc to your computer and use it in GitHub Desktop.
Save oowekyala/f74600bc5a2ae6f248fccce54f3dabfc to your computer and use it in GitHub Desktop.
import net.sf.saxon.Configuration;
import net.sf.saxon.expr.Expression;
import net.sf.saxon.expr.LocalVariableReference;
import net.sf.saxon.om.StructuredQName;
import net.sf.saxon.sxpath.IndependentContext;
import net.sf.saxon.sxpath.XPathEvaluator;
import net.sf.saxon.sxpath.XPathExpression;
import net.sf.saxon.trans.XPathException;
import net.sf.saxon.value.BooleanValue;
import net.sf.saxon.value.SequenceType;
/**
* @author Clément Fournier
*/
public class SaxonMwe {
public static void main(String[] args) throws XPathException {
Configuration configuration = Configuration.newConfiguration();
IndependentContext staticCtx = new IndependentContext(configuration) {
{
declareVariable(null, "falseVar");
}
@Override
public Expression bindVariable(StructuredQName qName) throws XPathException {
LocalVariableReference local = (LocalVariableReference) super.bindVariable(qName);
if (qName.getLocalPart().equals("falseVar")) {
local.setStaticType(
SequenceType.SINGLE_BOOLEAN,
BooleanValue.FALSE,
0);
}
return local;
}
};
final XPathEvaluator xpathEvaluator = new XPathEvaluator(configuration);
xpathEvaluator.setStaticContext(staticCtx);
XPathExpression xpathExpression = xpathEvaluator.createExpression(
"//A[$falseVar][child::*[2]]"
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment