?? unwraplinks.java
字號:
// UnwrapLinks.java - Saxon extension for unwrapping nested linkspackage com.nwalsh.saxon;import java.util.Stack;import java.util.StringTokenizer;import org.xml.sax.*;import org.w3c.dom.*;import javax.xml.transform.TransformerException;import com.icl.saxon.Controller;import com.icl.saxon.expr.*;import com.icl.saxon.om.*;import com.icl.saxon.pattern.*;import com.icl.saxon.Context;import com.icl.saxon.tree.*;import com.icl.saxon.functions.Extensions;import com.nwalsh.saxon.UnwrapLinksEmitter;/** * <p>Saxon extension for unwrapping nested links</p> * * <p>$Id: UnwrapLinks.java,v 1.1 2002/06/26 11:02:05 nwalsh Exp $</p> * * <p>Copyright (C) 2000, 2002 Norman Walsh.</p> * * <p>This class provides a * <a href="http://saxon.sf.net/">Saxon 6.*</a> * implementation of a link unwrapper.</p> * * <p><b>Change Log:</b></p> * <dl> * <dt>1.0</dt> * <dd><p>Initial release.</p></dd> * </dl> * * @author Norman Walsh * <a href="mailto:ndw@nwalsh.com">ndw@nwalsh.com</a> * * @version $Id: UnwrapLinks.java,v 1.1 2002/06/26 11:02:05 nwalsh Exp $ * */public class UnwrapLinks { /** True if the stylesheet is producing formatting objects */ private static boolean foStylesheet = false; /** * <p>Constructor for UnwrapLinks</p> * * <p>All of the methods are static, so the constructor does nothing.</p> */ public UnwrapLinks() { } /** * <p>Find the string value of a stylesheet variable or parameter</p> * * <p>Returns the string value of <code>varName</code> in the current * <code>context</code>. Returns the empty string if the variable is * not defined.</p> * * @param context The current stylesheet context * @param varName The name of the variable (without the dollar sign) * * @return The string value of the variable */ protected static String getVariable(Context context, String varName) { Value variable = null; String varString = null; try { variable = Extensions.evaluate(context, "$" + varName); varString = variable.asString(); return varString; } catch (TransformerException te) { System.out.println("Undefined variable: " + varName); return ""; } catch (IllegalArgumentException iae) { System.out.println("Undefined variable: " + varName); return ""; } } /** * <p>Setup the parameters associated with unwrapping links</p> * * @param context The current stylesheet context * */ private static void setupUnwrapLinks(Context context) { // Get the stylesheet type String varString = getVariable(context, "stylesheet.result.type"); foStylesheet = (varString.equals("fo")); } /** * <p>Unwrap links</p> * * @param rtf The result tree fragment of the verbatim environment. * * @return The modified result tree fragment. */ public static NodeSetValue unwrapLinks (Context context, NodeSetValue rtf_ns) { FragmentValue rtf = (FragmentValue) rtf_ns; boolean tryAgain = true; setupUnwrapLinks(context); try { Controller controller = context.getController(); NamePool namePool = controller.getNamePool(); while (tryAgain) { UnwrapLinksEmitter ulEmitter = new UnwrapLinksEmitter(controller, namePool, foStylesheet); rtf.replay(ulEmitter); tryAgain = ulEmitter.tryAgain(); rtf = (FragmentValue) ulEmitter.getResultTreeFragment(); } return rtf; } catch (TransformerException e) { // This "can't" happen. System.out.println("Transformer Exception in unwrapLinks"); return rtf; } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -