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 + -
显示快捷键?