tohtmlstream.java

来自「JAVA 所有包」· Java 代码 · 共 1,824 行 · 第 1/5 页

JAVA
1,824
字号
/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Id: ToHTMLStream.java,v 1.2.4.1 2005/09/15 08:15:26 suresh_emailid Exp $ */package com.sun.org.apache.xml.internal.serializer;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.util.Properties;import javax.xml.transform.Result;import com.sun.org.apache.xml.internal.serializer.utils.MsgKey;import com.sun.org.apache.xml.internal.serializer.utils.Utils;import org.xml.sax.Attributes;import org.xml.sax.SAXException;/** * This serializer takes a series of SAX or * SAX-like events and writes its output * to the given stream. *  * This class is not a public API, it is public * because it is used from another package. *  * @xsl.usage internal */public final class ToHTMLStream extends ToStream {    /** This flag is set while receiving events from the DTD */    protected boolean m_inDTD = false;    /** True if the current element is a block element.  (seems like      *  this needs to be a stack. -sb). */    private boolean m_inBlockElem = false;    /**     * Map that tells which XML characters should have special treatment, and it     *  provides character to entity name lookup.     */    private static final CharInfo m_htmlcharInfo =//        new CharInfo(CharInfo.HTML_ENTITIES_RESOURCE);        CharInfo.getCharInfo(CharInfo.HTML_ENTITIES_RESOURCE, Method.HTML);    /** A digital search trie for fast, case insensitive lookup of ElemDesc objects. */    static final Trie m_elementFlags = new Trie();    static {        initTagReference(m_elementFlags);    }    static void initTagReference(Trie m_elementFlags) {        // HTML 4.0 loose DTD        m_elementFlags.put("BASEFONT", new ElemDesc(0 | ElemDesc.EMPTY));        m_elementFlags.put(            "FRAME",            new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put("FRAMESET", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("NOFRAMES", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put(            "ISINDEX",            new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put(            "APPLET",            new ElemDesc(0 | ElemDesc.WHITESPACESENSITIVE));        m_elementFlags.put("CENTER", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("DIR", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("MENU", new ElemDesc(0 | ElemDesc.BLOCK));        // HTML 4.0 strict DTD        m_elementFlags.put("TT", new ElemDesc(0 | ElemDesc.FONTSTYLE));        m_elementFlags.put("I", new ElemDesc(0 | ElemDesc.FONTSTYLE));        m_elementFlags.put("B", new ElemDesc(0 | ElemDesc.FONTSTYLE));        m_elementFlags.put("BIG", new ElemDesc(0 | ElemDesc.FONTSTYLE));        m_elementFlags.put("SMALL", new ElemDesc(0 | ElemDesc.FONTSTYLE));        m_elementFlags.put("EM", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("STRONG", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("DFN", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("CODE", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("SAMP", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("KBD", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("VAR", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("CITE", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("ABBR", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put("ACRONYM", new ElemDesc(0 | ElemDesc.PHRASE));        m_elementFlags.put(            "SUP",            new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));        m_elementFlags.put(            "SUB",            new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));        m_elementFlags.put(            "SPAN",            new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));        m_elementFlags.put(            "BDO",            new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));        m_elementFlags.put(            "BR",            new ElemDesc(                0                    | ElemDesc.SPECIAL                    | ElemDesc.ASPECIAL                    | ElemDesc.EMPTY                    | ElemDesc.BLOCK));        m_elementFlags.put("BODY", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put(            "ADDRESS",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put(            "DIV",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put("A", new ElemDesc(0 | ElemDesc.SPECIAL));        m_elementFlags.put(            "MAP",            new ElemDesc(                0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL | ElemDesc.BLOCK));        m_elementFlags.put(            "AREA",            new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put(            "LINK",            new ElemDesc(                0 | ElemDesc.HEADMISC | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put(            "IMG",            new ElemDesc(                0                    | ElemDesc.SPECIAL                    | ElemDesc.ASPECIAL                    | ElemDesc.EMPTY                    | ElemDesc.WHITESPACESENSITIVE));        m_elementFlags.put(            "OBJECT",            new ElemDesc(                0                    | ElemDesc.SPECIAL                    | ElemDesc.ASPECIAL                    | ElemDesc.HEADMISC                    | ElemDesc.WHITESPACESENSITIVE));        m_elementFlags.put("PARAM", new ElemDesc(0 | ElemDesc.EMPTY));        m_elementFlags.put(            "HR",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET                    | ElemDesc.EMPTY));        m_elementFlags.put(            "P",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put(            "H1",            new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));        m_elementFlags.put(            "H2",            new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));        m_elementFlags.put(            "H3",            new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));        m_elementFlags.put(            "H4",            new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));        m_elementFlags.put(            "H5",            new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));        m_elementFlags.put(            "H6",            new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));        m_elementFlags.put(            "PRE",            new ElemDesc(0 | ElemDesc.PREFORMATTED | ElemDesc.BLOCK));        m_elementFlags.put(            "Q",            new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));        m_elementFlags.put(            "BLOCKQUOTE",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put("INS", new ElemDesc(0));        m_elementFlags.put("DEL", new ElemDesc(0));        m_elementFlags.put(            "DL",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put("DT", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("DD", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put(            "OL",            new ElemDesc(0 | ElemDesc.LIST | ElemDesc.BLOCK));        m_elementFlags.put(            "UL",            new ElemDesc(0 | ElemDesc.LIST | ElemDesc.BLOCK));        m_elementFlags.put("LI", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("FORM", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("LABEL", new ElemDesc(0 | ElemDesc.FORMCTRL));        m_elementFlags.put(            "INPUT",            new ElemDesc(                0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL | ElemDesc.EMPTY));        m_elementFlags.put(            "SELECT",            new ElemDesc(0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL));        m_elementFlags.put("OPTGROUP", new ElemDesc(0));        m_elementFlags.put("OPTION", new ElemDesc(0));        m_elementFlags.put(            "TEXTAREA",            new ElemDesc(0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL));        m_elementFlags.put(            "FIELDSET",            new ElemDesc(0 | ElemDesc.BLOCK | ElemDesc.BLOCKFORM));        m_elementFlags.put("LEGEND", new ElemDesc(0));        m_elementFlags.put(            "BUTTON",            new ElemDesc(0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL));        m_elementFlags.put(            "TABLE",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put("CAPTION", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("THEAD", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("TFOOT", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("TBODY", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("COLGROUP", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put(            "COL",            new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put("TR", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put("TH", new ElemDesc(0));        m_elementFlags.put("TD", new ElemDesc(0));        m_elementFlags.put(            "HEAD",            new ElemDesc(0 | ElemDesc.BLOCK | ElemDesc.HEADELEM));        m_elementFlags.put("TITLE", new ElemDesc(0 | ElemDesc.BLOCK));        m_elementFlags.put(            "BASE",            new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put(            "META",            new ElemDesc(                0 | ElemDesc.HEADMISC | ElemDesc.EMPTY | ElemDesc.BLOCK));        m_elementFlags.put(            "STYLE",            new ElemDesc(                0 | ElemDesc.HEADMISC | ElemDesc.RAW | ElemDesc.BLOCK));        m_elementFlags.put(            "SCRIPT",            new ElemDesc(                0                    | ElemDesc.SPECIAL                    | ElemDesc.ASPECIAL                    | ElemDesc.HEADMISC                    | ElemDesc.RAW));        m_elementFlags.put(            "NOSCRIPT",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        m_elementFlags.put("HTML", new ElemDesc(0 | ElemDesc.BLOCK));        // From "John Ky" <hand@syd.speednet.com.au        // Transitional Document Type Definition ()        // file:///C:/Documents%20and%20Settings/sboag.BOAG600E/My%20Documents/html/sgml/loosedtd.html#basefont        m_elementFlags.put("FONT", new ElemDesc(0 | ElemDesc.FONTSTYLE));        // file:///C:/Documents%20and%20Settings/sboag.BOAG600E/My%20Documents/html/present/graphics.html#edef-STRIKE        m_elementFlags.put("S", new ElemDesc(0 | ElemDesc.FONTSTYLE));        m_elementFlags.put("STRIKE", new ElemDesc(0 | ElemDesc.FONTSTYLE));        // file:///C:/Documents%20and%20Settings/sboag.BOAG600E/My%20Documents/html/present/graphics.html#edef-U        m_elementFlags.put("U", new ElemDesc(0 | ElemDesc.FONTSTYLE));        // From "John Ky" <hand@syd.speednet.com.au        m_elementFlags.put("NOBR", new ElemDesc(0 | ElemDesc.FONTSTYLE));        // HTML 4.0, section 16.5        m_elementFlags.put(            "IFRAME",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));                            // Netscape 4 extension        m_elementFlags.put(            "LAYER",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        // Netscape 4 extension                            m_elementFlags.put(            "ILAYER",            new ElemDesc(                0                    | ElemDesc.BLOCK                    | ElemDesc.BLOCKFORM                    | ElemDesc.BLOCKFORMFIELDSET));        // NOW FOR ATTRIBUTE INFORMATION . . .        ElemDesc elemDesc;        // ----------------------------------------------        elemDesc = (ElemDesc) m_elementFlags.get("A");        elemDesc.setAttr("HREF", ElemDesc.ATTRURL);        elemDesc.setAttr("NAME", ElemDesc.ATTRURL);                // ----------------------------------------------        elemDesc = (ElemDesc) m_elementFlags.get("AREA");        elemDesc.setAttr("HREF", ElemDesc.ATTRURL);        elemDesc.setAttr("NOHREF", ElemDesc.ATTREMPTY);        // ----------------------------------------------        elemDesc = (ElemDesc) m_elementFlags.get("BASE");        elemDesc.setAttr("HREF", ElemDesc.ATTRURL);        // ----------------------------------------------        elemDesc = (ElemDesc) m_elementFlags.get("BUTTON");        elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);        // ----------------------------------------------

⌨️ 快捷键说明

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