⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text.java

📁 jboss规则引擎
💻 JAVA
字号:
// Text - Saxon extension element for inserting textpackage com.nwalsh.saxon;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.InputStream;import java.io.IOException;import java.io.FileNotFoundException;import java.net.URL;import java.net.MalformedURLException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.URIResolver;import javax.xml.transform.Source;import com.icl.saxon.Context;import com.icl.saxon.style.StyleElement;import com.icl.saxon.output.Outputter;import com.icl.saxon.expr.Expression;import org.xml.sax.AttributeList;/** * <p>Saxon extension element for inserting text * * <p>$Id: Text.java 5907 2006-04-27 08:26:47Z xmldoc $</p> * * <p>Copyright (C) 2000 Norman Walsh.</p> * * <p>This class provides a * <a href="http://saxon.sourceforge.net/">Saxon</a> * extension element for inserting text into a result tree.</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: Text.java 5907 2006-04-27 08:26:47Z xmldoc $ * */public class Text extends StyleElement {  /**   * <p>Constructor for Text</p>   *   * <p>Does nothing.</p>   */  public Text() {  }  /**   * <p>Is this element an instruction?</p>   *   * <p>Yes, it is.</p>   *   * @return true   */  public boolean isInstruction() {    return true;  }    /**    * <p>Can this element contain a template-body?</p>    *    * <p>Yes, it can, but only so that it can contain xsl:fallback.</p>    *    * @return true    */  public boolean mayContainTemplateBody() {    return true;  }  /**   * <p>Validate the arguments</p>   *   * <p>The element must have an href attribute.</p>   */  public void prepareAttributes() throws TransformerConfigurationException {    // Get mandatory href attribute    String fnAtt = getAttribute("href");    if (fnAtt == null) {      reportAbsence("href");    }  }  /** Validate that the element occurs in a reasonable place. */  public void validate() throws TransformerConfigurationException {    checkWithinTemplate();  }  /**   * <p>Insert the text of the file into the result tree</p>   *   * <p>Processing this element inserts the contents of the URL named   * by the href attribute into the result tree as plain text.</p>   *    * <p>Optional encoding attribute can specify encoding of resource.   * If not specified default system encoding is used.</p>   *   */  public void process( Context context ) throws TransformerException {    Outputter out = context.getOutputter();    String hrefAtt = getAttribute("href");    Expression hrefExpr = makeAttributeValueTemplate(hrefAtt);    String href = hrefExpr.evaluateAsString(context);    String encodingAtt = getAttribute("encoding");    Expression encodingExpr = makeAttributeValueTemplate(encodingAtt);    String encoding = encodingExpr.evaluateAsString(context);    String baseURI = context.getContextNodeInfo().getBaseURI();    URIResolver resolver = context.getController().getURIResolver();    if (resolver != null) {      Source source = resolver.resolve(href, baseURI);      href = source.getSystemId();    }    URL baseURL = null;    URL fileURL = null;    try {      baseURL = new URL(baseURI);    } catch (MalformedURLException e0) {      // what the!?      baseURL = null;    }    try {      try {        fileURL = new URL(baseURL, href);      } catch (MalformedURLException e1) {        try {          fileURL = new URL(baseURL, "file:" + href);        } catch (MalformedURLException e2) {          System.out.println("Cannot open " + href);          return;        }      }      InputStreamReader isr = null;      if (encoding.equals("") == true)        isr = new InputStreamReader(fileURL.openStream());      else        isr = new InputStreamReader(fileURL.openStream(), encoding);      BufferedReader is = new BufferedReader(isr);      final int BUFFER_SIZE = 4096;      char chars[] = new char[BUFFER_SIZE];      char nchars[] = new char[BUFFER_SIZE];      int len = 0;      int i = 0;      int carry = -1;      while ((len = is.read(chars)) > 0) {        // various new lines are normalized to LF to prevent blank lines	// between lines        int nlen = 0;        for (i=0; i<len; i++) {          // is current char CR?          if (chars[i] == '\r') {            if (i < (len - 1)) {              // skip it if next char is LF              if (chars[i+1] == '\n') continue;              // single CR -> LF to normalize MAC line endings              nchars[nlen] = '\n';              nlen++;              continue;            } else {              // if CR is last char of buffer we must look ahead              carry = is.read();              nchars[nlen] = '\n';              nlen++;              if (carry == '\n') {                carry = -1;              }              break;            }          }          nchars[nlen] = chars[i];          nlen++;        }        out.writeContent(nchars, 0, nlen);        // handle look aheaded character        if (carry != -1) out.writeContent(String.valueOf((char)carry));        carry = -1;      }      is.close();    } catch (Exception e) {      System.out.println("Cannot read " + href);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -