public URIResolver getURIResolver() { return context.getController().getURIResolver(); }
@Override public void enterSource(NodeHandler handler, Context context) { contextNodeInfo = context.getContextNodeInfo(); currentNodeInfo= context.getCurrentNodeInfo(); }
public boolean test(Node context, String test) throws TransformerException { NodeInfo cNode = (NodeInfo) context; Expression exp = Expression.make(test, new StandaloneContext()); Context ctx = new Context(); ctx.setContextNode(cNode); ctx.setPosition(1); ctx.setLast(1); return exp.evaluateAsBoolean(ctx); }
public Value evaluate (Context parentContext, String expr) throws Exception { try { StringBuffer sb = new StringBuffer(); Matcher matcher = PARAM_PATTERN.matcher(expr); while(matcher.find()) { String match = matcher.group(1); if(isIncludeParam(match)) { matcher.appendReplacement(sb, "pfx:__incparam('" + match + "')"); } else { matcher.appendReplacement(sb, "\\$" + match); } } matcher.appendTail(sb); expr = sb.toString(); Context context = parentContext.newContext(); context.setContextNode((NodeInfo)contextNode); context.setPosition(contextNodePosition); context.setCurrentNode((NodeInfo)contextNode); context.setLast(contextNodeLast); return Extensions.evaluate(context, expr); } catch (Exception x) { ExtensionFunctionUtils.setExtensionFunctionError(x); throw x; } }
Outputter out = context.getOutputter(); String encoding = encodingExpr.evaluateAsString(context); String baseURI = context.getContextNodeInfo().getBaseURI(); URIResolver resolver = context.getController().getURIResolver();
private String getShortMode(Context context) { String modeName=""; Mode mode = context.getMode(); if (mode!=null && mode.getNameCode()!=-1) { modeName=context.getController().getNamePool().getDisplayName(mode.getNameCode()); if(format==Format.COMPRESSED) { Integer value=namePool.get(modeName); if(value==null) { value=namePool.size(); namePool.put(modeName, value); } modeName=value.toString(); } } return modeName; }
public static void renderStart(Context saxonContext, RenderContextSaxon1 renderContext) throws Exception { try { if(renderContext.getContextNode() != null) { saxonContext.setContextNode((NodeInfo)renderContext.getContextNode()); } if(renderContext.getOutputter() != null) { saxonContext.getController().resetOutputDestination(renderContext.getOutputter()); } } catch(Exception x) { ExtensionFunctionUtils.setExtensionFunctionError(x); throw x; } }
public String getSystemId() { NodeInfo info=context.getContextNodeInfo(); return info.getSystemId(); }
public static String getLocation(Context context) { StringBuilder sb = new StringBuilder(); NodeInfo currentNode = context.getCurrentNodeInfo(); if(currentNode != null) { sb.append(currentNode.getSystemId() + ":" + currentNode.getParent().getParent().getLineNumber()); } StaticContext staticContext = context.getStaticContext(); sb.append(" "+staticContext.getSystemId()+ ":"+staticContext.getLineNumber()); return sb.toString(); }
@Override public void process(Context context) throws TransformerException { try { processChildren(context); } catch(TransformerException x) { //check if exception was thrown by an extension function to get the original //stacktrace instead of the cut off one from the wrapping TransformerException Throwable throwable = ExtensionFunctionUtils.getExtensionFunctionError(); if(throwable == null) { throwable = x; } else { ExtensionFunctionUtils.resetExtensionFunctionError(); } StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); throwable.printStackTrace(pw); pw.close(); context.getOutputter().write(sw.toString()); } }
public String getDocumentElementName() { NodeInfo info=context.getContextNodeInfo(); return ((Document)info.getDocumentRoot()).getDocumentElement().getNodeName(); }
public static String getLocation(Context context) { StringBuilder sb = new StringBuilder(); StaticContext staticContext = context.getStaticContext(); if(staticContext != null) { String systemId = staticContext.getSystemId(); if(systemId != null && systemId.length() > 0) { sb.append(systemId).append(":").append(staticContext.getLineNumber()); } } NodeInfo current = context.getCurrentNodeInfo(); if(current != null) { String systemId = current.getSystemId(); if(systemId != null && systemId.length() > 0) { if(sb.length() > 0) { sb.append("|"); } sb.append(systemId).append(":").append(current.getLineNumber()); } } return sb.toString(); }
public static boolean render(Context saxonContext, TargetGenerator targetGenerator, String href, String part, String module, String search, Node node, RequestContextImpl requestContext, RenderContext renderContext) throws Exception { try { RenderContextSaxon1 saxonRenderContext = (RenderContextSaxon1)renderContext; if(saxonRenderContext.getOutputter() == null) { saxonRenderContext.setOutputter(saxonContext.getOutputter()); } return RenderExtension.render(targetGenerator, href, part, module, search, node, requestContext, saxonRenderContext); } catch(Exception x) { ExtensionFunctionUtils.setExtensionFunctionError(x); throw x; } }
private void output(Context context, Emitter emitter) throws TransformerException { Outputter old = context.getController().getOutputter(); Properties props = new Properties(); props.put(OutputKeys.OMIT_XML_DECLARATION, "yes"); context.getController().changeOutputDestination(props, emitter); processChildren(context); context.getController().resetOutputDestination(old); }
public List<Node> select(Node context, String xpath) throws TransformerException { List<Node> result; result = new ArrayList<Node>(); NodeInfo cNode = (NodeInfo) context; Expression exp = Expression.make(xpath, new StandaloneContext()); Context ctx = new Context(); ctx.setContextNode(cNode); ctx.setPosition(1); ctx.setLast(1); NodeSetValue nodeSet = exp.evaluateAsNodeSet(ctx); NodeEnumeration enm = nodeSet.enumerate(); while (enm.hasMoreElements()) { result.add((Node)enm.nextElement()); } return result; }
public void enterSource(NodeHandler handler, Context context) { //Format: callback|systemid|path|line|mode try { NodeInfo node = context.getContextNodeInfo(); if(format==Format.VERBOSE) { writer.write(currentIndent); writer.write("["); writer.write(getShortSystemId(node)+"|"); writer.write(node.getLineNumber()+"|"); writer.write(Navigator.getPath(node)+"|"); String mode=getShortMode(context); writer.write((mode==null?"":mode)+"|\n"); currentIndent+=indent; } else { writer.write("["); writer.write(getShortSystemId(node)+"|"); writer.write(node.getLineNumber()+"|"); writer.write(getShortPath(Navigator.getPath(node))+"|"); String mode=getShortMode(context); writer.write((mode==null?"":mode)+"|\n"); } } catch(IOException x) { LOG.error("Can't write trace.",x); } }
public String getStylesheetSystemId() { StringValue value = ((StringValue)context.getController().getParameter("__stylesheet")); if(value != null) { return value.asString(); } return null; }
public void process(Context context) throws TransformerException { if(level.isGreaterOrEqual(maxLevel)) { if(logger == null) { Emitter emitter = context.getController().getMessageEmitter(); if (emitter==null) { emitter = context.getController().makeMessageEmitter(); } if (emitter.getWriter()==null) { emitter.setWriter(new OutputStreamWriter(System.err)); } output(context, emitter); } else { Emitter emitter = new XMLEmitter(); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); emitter.setWriter(pw); output(context, emitter); LogUtils.log(logger, level, sw.toString()); } } }
Controller controller = context.getController(); NamePool namePool = controller.getNamePool();
public static NodeEnumeration tokenize(Context context, String str, String pattern) throws XPathException { try { Builder builder = context.getController().makeBuilder(); NamePool pool = context.getController().getNamePool(); builder.setNamePool(pool); builder.startDocument(); int name = pool.allocate("", "", "token"); AttributeCollection emptyAtts = new AttributeCollection(pool); String[] tokens = str.split(pattern); for(String token: tokens) { builder.startElement(name, emptyAtts, new int[0], 0); builder.characters(token.toCharArray(), 0, token.length()); builder.endElement(name); } builder.endDocument(); DocumentInfo doc = builder.getCurrentDocument(); return doc.getEnumeration(Axis.CHILD, AnyNodeTest.getInstance()); } catch (Exception err) { ExtensionFunctionUtils.setExtensionFunctionError(err); throw new XPathException(err); } }