<HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT>    /*<a name="line.1"></a>
<FONT color="green">002</FONT>     * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<FONT color="green">003</FONT>     * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<FONT color="green">004</FONT>     * distributed with this work for additional information<a name="line.4"></a>
<FONT color="green">005</FONT>     * regarding copyright ownership. The ASF licenses this file<a name="line.5"></a>
<FONT color="green">006</FONT>     * to you under the Apache License, Version 2.0 (the  "License");<a name="line.6"></a>
<FONT color="green">007</FONT>     * you may not use this file except in compliance with the License.<a name="line.7"></a>
<FONT color="green">008</FONT>     * You may obtain a copy of the License at<a name="line.8"></a>
<FONT color="green">009</FONT>     *<a name="line.9"></a>
<FONT color="green">010</FONT>     *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<FONT color="green">011</FONT>     *<a name="line.11"></a>
<FONT color="green">012</FONT>     * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<FONT color="green">013</FONT>     * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<FONT color="green">014</FONT>     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<FONT color="green">015</FONT>     * See the License for the specific language governing permissions and<a name="line.15"></a>
<FONT color="green">016</FONT>     * limitations under the License.<a name="line.16"></a>
<FONT color="green">017</FONT>     */<a name="line.17"></a>
<FONT color="green">018</FONT>    /*<a name="line.18"></a>
<FONT color="green">019</FONT>     * $Id: ToHTMLStream.java 1225444 2011-12-29 05:52:39Z mrglavas $<a name="line.19"></a>
<FONT color="green">020</FONT>     */<a name="line.20"></a>
<FONT color="green">021</FONT>    package org.apache.xml.serializer;<a name="line.21"></a>
<FONT color="green">022</FONT>    <a name="line.22"></a>
<FONT color="green">023</FONT>    import java.io.IOException;<a name="line.23"></a>
<FONT color="green">024</FONT>    import java.util.Properties;<a name="line.24"></a>
<FONT color="green">025</FONT>    <a name="line.25"></a>
<FONT color="green">026</FONT>    import javax.xml.transform.Result;<a name="line.26"></a>
<FONT color="green">027</FONT>    <a name="line.27"></a>
<FONT color="green">028</FONT>    import org.apache.xml.serializer.utils.MsgKey;<a name="line.28"></a>
<FONT color="green">029</FONT>    import org.apache.xml.serializer.utils.Utils;<a name="line.29"></a>
<FONT color="green">030</FONT>    import org.xml.sax.Attributes;<a name="line.30"></a>
<FONT color="green">031</FONT>    import org.xml.sax.SAXException;<a name="line.31"></a>
<FONT color="green">032</FONT>    <a name="line.32"></a>
<FONT color="green">033</FONT>    /**<a name="line.33"></a>
<FONT color="green">034</FONT>     * This serializer takes a series of SAX or<a name="line.34"></a>
<FONT color="green">035</FONT>     * SAX-like events and writes its output<a name="line.35"></a>
<FONT color="green">036</FONT>     * to the given stream.<a name="line.36"></a>
<FONT color="green">037</FONT>     * <a name="line.37"></a>
<FONT color="green">038</FONT>     * This class is not a public API, it is public<a name="line.38"></a>
<FONT color="green">039</FONT>     * because it is used from another package.<a name="line.39"></a>
<FONT color="green">040</FONT>     * <a name="line.40"></a>
<FONT color="green">041</FONT>     * @xsl.usage internal<a name="line.41"></a>
<FONT color="green">042</FONT>     */<a name="line.42"></a>
<FONT color="green">043</FONT>    public class ToHTMLStream extends ToStream <a name="line.43"></a>
<FONT color="green">044</FONT>    {<a name="line.44"></a>
<FONT color="green">045</FONT>    <a name="line.45"></a>
<FONT color="green">046</FONT>        /** This flag is set while receiving events from the DTD */<a name="line.46"></a>
<FONT color="green">047</FONT>        protected boolean m_inDTD = false;<a name="line.47"></a>
<FONT color="green">048</FONT>    <a name="line.48"></a>
<FONT color="green">049</FONT>        /** True if the current element is a block element.  (seems like <a name="line.49"></a>
<FONT color="green">050</FONT>         *  this needs to be a stack. -sb). */<a name="line.50"></a>
<FONT color="green">051</FONT>        private boolean m_inBlockElem = false;<a name="line.51"></a>
<FONT color="green">052</FONT>    <a name="line.52"></a>
<FONT color="green">053</FONT>        /**<a name="line.53"></a>
<FONT color="green">054</FONT>         * Map that tells which XML characters should have special treatment, and it<a name="line.54"></a>
<FONT color="green">055</FONT>         *  provides character to entity name lookup.<a name="line.55"></a>
<FONT color="green">056</FONT>         */<a name="line.56"></a>
<FONT color="green">057</FONT>        private final CharInfo m_htmlcharInfo =<a name="line.57"></a>
<FONT color="green">058</FONT>    //        new CharInfo(CharInfo.HTML_ENTITIES_RESOURCE);<a name="line.58"></a>
<FONT color="green">059</FONT>            CharInfo.getCharInfo(CharInfo.HTML_ENTITIES_RESOURCE, Method.HTML);<a name="line.59"></a>
<FONT color="green">060</FONT>    <a name="line.60"></a>
<FONT color="green">061</FONT>        /** A digital search trie for fast, case insensitive lookup of ElemDesc objects. */<a name="line.61"></a>
<FONT color="green">062</FONT>        static final Trie m_elementFlags = new Trie();<a name="line.62"></a>
<FONT color="green">063</FONT>    <a name="line.63"></a>
<FONT color="green">064</FONT>        static {<a name="line.64"></a>
<FONT color="green">065</FONT>            initTagReference(m_elementFlags);<a name="line.65"></a>
<FONT color="green">066</FONT>        }<a name="line.66"></a>
<FONT color="green">067</FONT>        static void initTagReference(Trie m_elementFlags) {<a name="line.67"></a>
<FONT color="green">068</FONT>    <a name="line.68"></a>
<FONT color="green">069</FONT>            // HTML 4.0 loose DTD<a name="line.69"></a>
<FONT color="green">070</FONT>            m_elementFlags.put("BASEFONT", new ElemDesc(0 | ElemDesc.EMPTY));<a name="line.70"></a>
<FONT color="green">071</FONT>            m_elementFlags.put(<a name="line.71"></a>
<FONT color="green">072</FONT>                "FRAME",<a name="line.72"></a>
<FONT color="green">073</FONT>                new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.73"></a>
<FONT color="green">074</FONT>            m_elementFlags.put("FRAMESET", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.74"></a>
<FONT color="green">075</FONT>            m_elementFlags.put("NOFRAMES", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.75"></a>
<FONT color="green">076</FONT>            m_elementFlags.put(<a name="line.76"></a>
<FONT color="green">077</FONT>                "ISINDEX",<a name="line.77"></a>
<FONT color="green">078</FONT>                new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.78"></a>
<FONT color="green">079</FONT>            m_elementFlags.put(<a name="line.79"></a>
<FONT color="green">080</FONT>                "APPLET",<a name="line.80"></a>
<FONT color="green">081</FONT>                new ElemDesc(0 | ElemDesc.WHITESPACESENSITIVE));<a name="line.81"></a>
<FONT color="green">082</FONT>            m_elementFlags.put("CENTER", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.82"></a>
<FONT color="green">083</FONT>            m_elementFlags.put("DIR", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.83"></a>
<FONT color="green">084</FONT>            m_elementFlags.put("MENU", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.84"></a>
<FONT color="green">085</FONT>    <a name="line.85"></a>
<FONT color="green">086</FONT>            // HTML 4.0 strict DTD<a name="line.86"></a>
<FONT color="green">087</FONT>            m_elementFlags.put("TT", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.87"></a>
<FONT color="green">088</FONT>            m_elementFlags.put("I", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.88"></a>
<FONT color="green">089</FONT>            m_elementFlags.put("B", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.89"></a>
<FONT color="green">090</FONT>            m_elementFlags.put("BIG", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.90"></a>
<FONT color="green">091</FONT>            m_elementFlags.put("SMALL", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.91"></a>
<FONT color="green">092</FONT>            m_elementFlags.put("EM", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.92"></a>
<FONT color="green">093</FONT>            m_elementFlags.put("STRONG", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.93"></a>
<FONT color="green">094</FONT>            m_elementFlags.put("DFN", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.94"></a>
<FONT color="green">095</FONT>            m_elementFlags.put("CODE", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.95"></a>
<FONT color="green">096</FONT>            m_elementFlags.put("SAMP", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.96"></a>
<FONT color="green">097</FONT>            m_elementFlags.put("KBD", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.97"></a>
<FONT color="green">098</FONT>            m_elementFlags.put("VAR", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.98"></a>
<FONT color="green">099</FONT>            m_elementFlags.put("CITE", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.99"></a>
<FONT color="green">100</FONT>            m_elementFlags.put("ABBR", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.100"></a>
<FONT color="green">101</FONT>            m_elementFlags.put("ACRONYM", new ElemDesc(0 | ElemDesc.PHRASE));<a name="line.101"></a>
<FONT color="green">102</FONT>            m_elementFlags.put(<a name="line.102"></a>
<FONT color="green">103</FONT>                "SUP",<a name="line.103"></a>
<FONT color="green">104</FONT>                new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));<a name="line.104"></a>
<FONT color="green">105</FONT>            m_elementFlags.put(<a name="line.105"></a>
<FONT color="green">106</FONT>                "SUB",<a name="line.106"></a>
<FONT color="green">107</FONT>                new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));<a name="line.107"></a>
<FONT color="green">108</FONT>            m_elementFlags.put(<a name="line.108"></a>
<FONT color="green">109</FONT>                "SPAN",<a name="line.109"></a>
<FONT color="green">110</FONT>                new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));<a name="line.110"></a>
<FONT color="green">111</FONT>            m_elementFlags.put(<a name="line.111"></a>
<FONT color="green">112</FONT>                "BDO",<a name="line.112"></a>
<FONT color="green">113</FONT>                new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));<a name="line.113"></a>
<FONT color="green">114</FONT>            m_elementFlags.put(<a name="line.114"></a>
<FONT color="green">115</FONT>                "BR",<a name="line.115"></a>
<FONT color="green">116</FONT>                new ElemDesc(<a name="line.116"></a>
<FONT color="green">117</FONT>                    0<a name="line.117"></a>
<FONT color="green">118</FONT>                        | ElemDesc.SPECIAL<a name="line.118"></a>
<FONT color="green">119</FONT>                        | ElemDesc.ASPECIAL<a name="line.119"></a>
<FONT color="green">120</FONT>                        | ElemDesc.EMPTY<a name="line.120"></a>
<FONT color="green">121</FONT>                        | ElemDesc.BLOCK));<a name="line.121"></a>
<FONT color="green">122</FONT>            m_elementFlags.put("BODY", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.122"></a>
<FONT color="green">123</FONT>            m_elementFlags.put(<a name="line.123"></a>
<FONT color="green">124</FONT>                "ADDRESS",<a name="line.124"></a>
<FONT color="green">125</FONT>                new ElemDesc(<a name="line.125"></a>
<FONT color="green">126</FONT>                    0<a name="line.126"></a>
<FONT color="green">127</FONT>                        | ElemDesc.BLOCK<a name="line.127"></a>
<FONT color="green">128</FONT>                        | ElemDesc.BLOCKFORM<a name="line.128"></a>
<FONT color="green">129</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.129"></a>
<FONT color="green">130</FONT>            m_elementFlags.put(<a name="line.130"></a>
<FONT color="green">131</FONT>                "DIV",<a name="line.131"></a>
<FONT color="green">132</FONT>                new ElemDesc(<a name="line.132"></a>
<FONT color="green">133</FONT>                    0<a name="line.133"></a>
<FONT color="green">134</FONT>                        | ElemDesc.BLOCK<a name="line.134"></a>
<FONT color="green">135</FONT>                        | ElemDesc.BLOCKFORM<a name="line.135"></a>
<FONT color="green">136</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.136"></a>
<FONT color="green">137</FONT>            m_elementFlags.put("A", new ElemDesc(0 | ElemDesc.SPECIAL));<a name="line.137"></a>
<FONT color="green">138</FONT>            m_elementFlags.put(<a name="line.138"></a>
<FONT color="green">139</FONT>                "MAP",<a name="line.139"></a>
<FONT color="green">140</FONT>                new ElemDesc(<a name="line.140"></a>
<FONT color="green">141</FONT>                    0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL | ElemDesc.BLOCK));<a name="line.141"></a>
<FONT color="green">142</FONT>            m_elementFlags.put(<a name="line.142"></a>
<FONT color="green">143</FONT>                "AREA",<a name="line.143"></a>
<FONT color="green">144</FONT>                new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.144"></a>
<FONT color="green">145</FONT>            m_elementFlags.put(<a name="line.145"></a>
<FONT color="green">146</FONT>                "LINK",<a name="line.146"></a>
<FONT color="green">147</FONT>                new ElemDesc(<a name="line.147"></a>
<FONT color="green">148</FONT>                    0 | ElemDesc.HEADMISC | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.148"></a>
<FONT color="green">149</FONT>            m_elementFlags.put(<a name="line.149"></a>
<FONT color="green">150</FONT>                "IMG",<a name="line.150"></a>
<FONT color="green">151</FONT>                new ElemDesc(<a name="line.151"></a>
<FONT color="green">152</FONT>                    0<a name="line.152"></a>
<FONT color="green">153</FONT>                        | ElemDesc.SPECIAL<a name="line.153"></a>
<FONT color="green">154</FONT>                        | ElemDesc.ASPECIAL<a name="line.154"></a>
<FONT color="green">155</FONT>                        | ElemDesc.EMPTY<a name="line.155"></a>
<FONT color="green">156</FONT>                        | ElemDesc.WHITESPACESENSITIVE));<a name="line.156"></a>
<FONT color="green">157</FONT>            m_elementFlags.put(<a name="line.157"></a>
<FONT color="green">158</FONT>                "OBJECT",<a name="line.158"></a>
<FONT color="green">159</FONT>                new ElemDesc(<a name="line.159"></a>
<FONT color="green">160</FONT>                    0<a name="line.160"></a>
<FONT color="green">161</FONT>                        | ElemDesc.SPECIAL<a name="line.161"></a>
<FONT color="green">162</FONT>                        | ElemDesc.ASPECIAL<a name="line.162"></a>
<FONT color="green">163</FONT>                        | ElemDesc.HEADMISC<a name="line.163"></a>
<FONT color="green">164</FONT>                        | ElemDesc.WHITESPACESENSITIVE));<a name="line.164"></a>
<FONT color="green">165</FONT>            m_elementFlags.put("PARAM", new ElemDesc(0 | ElemDesc.EMPTY));<a name="line.165"></a>
<FONT color="green">166</FONT>            m_elementFlags.put(<a name="line.166"></a>
<FONT color="green">167</FONT>                "HR",<a name="line.167"></a>
<FONT color="green">168</FONT>                new ElemDesc(<a name="line.168"></a>
<FONT color="green">169</FONT>                    0<a name="line.169"></a>
<FONT color="green">170</FONT>                        | ElemDesc.BLOCK<a name="line.170"></a>
<FONT color="green">171</FONT>                        | ElemDesc.BLOCKFORM<a name="line.171"></a>
<FONT color="green">172</FONT>                        | ElemDesc.BLOCKFORMFIELDSET<a name="line.172"></a>
<FONT color="green">173</FONT>                        | ElemDesc.EMPTY));<a name="line.173"></a>
<FONT color="green">174</FONT>            m_elementFlags.put(<a name="line.174"></a>
<FONT color="green">175</FONT>                "P",<a name="line.175"></a>
<FONT color="green">176</FONT>                new ElemDesc(<a name="line.176"></a>
<FONT color="green">177</FONT>                    0<a name="line.177"></a>
<FONT color="green">178</FONT>                        | ElemDesc.BLOCK<a name="line.178"></a>
<FONT color="green">179</FONT>                        | ElemDesc.BLOCKFORM<a name="line.179"></a>
<FONT color="green">180</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.180"></a>
<FONT color="green">181</FONT>            m_elementFlags.put(<a name="line.181"></a>
<FONT color="green">182</FONT>                "H1",<a name="line.182"></a>
<FONT color="green">183</FONT>                new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));<a name="line.183"></a>
<FONT color="green">184</FONT>            m_elementFlags.put(<a name="line.184"></a>
<FONT color="green">185</FONT>                "H2",<a name="line.185"></a>
<FONT color="green">186</FONT>                new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));<a name="line.186"></a>
<FONT color="green">187</FONT>            m_elementFlags.put(<a name="line.187"></a>
<FONT color="green">188</FONT>                "H3",<a name="line.188"></a>
<FONT color="green">189</FONT>                new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));<a name="line.189"></a>
<FONT color="green">190</FONT>            m_elementFlags.put(<a name="line.190"></a>
<FONT color="green">191</FONT>                "H4",<a name="line.191"></a>
<FONT color="green">192</FONT>                new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));<a name="line.192"></a>
<FONT color="green">193</FONT>            m_elementFlags.put(<a name="line.193"></a>
<FONT color="green">194</FONT>                "H5",<a name="line.194"></a>
<FONT color="green">195</FONT>                new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));<a name="line.195"></a>
<FONT color="green">196</FONT>            m_elementFlags.put(<a name="line.196"></a>
<FONT color="green">197</FONT>                "H6",<a name="line.197"></a>
<FONT color="green">198</FONT>                new ElemDesc(0 | ElemDesc.HEAD | ElemDesc.BLOCK));<a name="line.198"></a>
<FONT color="green">199</FONT>            m_elementFlags.put(<a name="line.199"></a>
<FONT color="green">200</FONT>                "PRE",<a name="line.200"></a>
<FONT color="green">201</FONT>                new ElemDesc(0 | ElemDesc.PREFORMATTED | ElemDesc.BLOCK));<a name="line.201"></a>
<FONT color="green">202</FONT>            m_elementFlags.put(<a name="line.202"></a>
<FONT color="green">203</FONT>                "Q",<a name="line.203"></a>
<FONT color="green">204</FONT>                new ElemDesc(0 | ElemDesc.SPECIAL | ElemDesc.ASPECIAL));<a name="line.204"></a>
<FONT color="green">205</FONT>            m_elementFlags.put(<a name="line.205"></a>
<FONT color="green">206</FONT>                "BLOCKQUOTE",<a name="line.206"></a>
<FONT color="green">207</FONT>                new ElemDesc(<a name="line.207"></a>
<FONT color="green">208</FONT>                    0<a name="line.208"></a>
<FONT color="green">209</FONT>                        | ElemDesc.BLOCK<a name="line.209"></a>
<FONT color="green">210</FONT>                        | ElemDesc.BLOCKFORM<a name="line.210"></a>
<FONT color="green">211</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.211"></a>
<FONT color="green">212</FONT>            m_elementFlags.put("INS", new ElemDesc(0));<a name="line.212"></a>
<FONT color="green">213</FONT>            m_elementFlags.put("DEL", new ElemDesc(0));<a name="line.213"></a>
<FONT color="green">214</FONT>            m_elementFlags.put(<a name="line.214"></a>
<FONT color="green">215</FONT>                "DL",<a name="line.215"></a>
<FONT color="green">216</FONT>                new ElemDesc(<a name="line.216"></a>
<FONT color="green">217</FONT>                    0<a name="line.217"></a>
<FONT color="green">218</FONT>                        | ElemDesc.BLOCK<a name="line.218"></a>
<FONT color="green">219</FONT>                        | ElemDesc.BLOCKFORM<a name="line.219"></a>
<FONT color="green">220</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.220"></a>
<FONT color="green">221</FONT>            m_elementFlags.put("DT", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.221"></a>
<FONT color="green">222</FONT>            m_elementFlags.put("DD", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.222"></a>
<FONT color="green">223</FONT>            m_elementFlags.put(<a name="line.223"></a>
<FONT color="green">224</FONT>                "OL",<a name="line.224"></a>
<FONT color="green">225</FONT>                new ElemDesc(0 | ElemDesc.LIST | ElemDesc.BLOCK));<a name="line.225"></a>
<FONT color="green">226</FONT>            m_elementFlags.put(<a name="line.226"></a>
<FONT color="green">227</FONT>                "UL",<a name="line.227"></a>
<FONT color="green">228</FONT>                new ElemDesc(0 | ElemDesc.LIST | ElemDesc.BLOCK));<a name="line.228"></a>
<FONT color="green">229</FONT>            m_elementFlags.put("LI", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.229"></a>
<FONT color="green">230</FONT>            m_elementFlags.put("FORM", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.230"></a>
<FONT color="green">231</FONT>            m_elementFlags.put("LABEL", new ElemDesc(0 | ElemDesc.FORMCTRL));<a name="line.231"></a>
<FONT color="green">232</FONT>            m_elementFlags.put(<a name="line.232"></a>
<FONT color="green">233</FONT>                "INPUT",<a name="line.233"></a>
<FONT color="green">234</FONT>                new ElemDesc(<a name="line.234"></a>
<FONT color="green">235</FONT>                    0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL | ElemDesc.EMPTY));<a name="line.235"></a>
<FONT color="green">236</FONT>            m_elementFlags.put(<a name="line.236"></a>
<FONT color="green">237</FONT>                "SELECT",<a name="line.237"></a>
<FONT color="green">238</FONT>                new ElemDesc(0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL));<a name="line.238"></a>
<FONT color="green">239</FONT>            m_elementFlags.put("OPTGROUP", new ElemDesc(0));<a name="line.239"></a>
<FONT color="green">240</FONT>            m_elementFlags.put("OPTION", new ElemDesc(0));<a name="line.240"></a>
<FONT color="green">241</FONT>            m_elementFlags.put(<a name="line.241"></a>
<FONT color="green">242</FONT>                "TEXTAREA",<a name="line.242"></a>
<FONT color="green">243</FONT>                new ElemDesc(0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL));<a name="line.243"></a>
<FONT color="green">244</FONT>            m_elementFlags.put(<a name="line.244"></a>
<FONT color="green">245</FONT>                "FIELDSET",<a name="line.245"></a>
<FONT color="green">246</FONT>                new ElemDesc(0 | ElemDesc.BLOCK | ElemDesc.BLOCKFORM));<a name="line.246"></a>
<FONT color="green">247</FONT>            m_elementFlags.put("LEGEND", new ElemDesc(0));<a name="line.247"></a>
<FONT color="green">248</FONT>            m_elementFlags.put(<a name="line.248"></a>
<FONT color="green">249</FONT>                "BUTTON",<a name="line.249"></a>
<FONT color="green">250</FONT>                new ElemDesc(0 | ElemDesc.FORMCTRL | ElemDesc.INLINELABEL));<a name="line.250"></a>
<FONT color="green">251</FONT>            m_elementFlags.put(<a name="line.251"></a>
<FONT color="green">252</FONT>                "TABLE",<a name="line.252"></a>
<FONT color="green">253</FONT>                new ElemDesc(<a name="line.253"></a>
<FONT color="green">254</FONT>                    0<a name="line.254"></a>
<FONT color="green">255</FONT>                        | ElemDesc.BLOCK<a name="line.255"></a>
<FONT color="green">256</FONT>                        | ElemDesc.BLOCKFORM<a name="line.256"></a>
<FONT color="green">257</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.257"></a>
<FONT color="green">258</FONT>            m_elementFlags.put("CAPTION", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.258"></a>
<FONT color="green">259</FONT>            m_elementFlags.put("THEAD", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.259"></a>
<FONT color="green">260</FONT>            m_elementFlags.put("TFOOT", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.260"></a>
<FONT color="green">261</FONT>            m_elementFlags.put("TBODY", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.261"></a>
<FONT color="green">262</FONT>            m_elementFlags.put("COLGROUP", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.262"></a>
<FONT color="green">263</FONT>            m_elementFlags.put(<a name="line.263"></a>
<FONT color="green">264</FONT>                "COL",<a name="line.264"></a>
<FONT color="green">265</FONT>                new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.265"></a>
<FONT color="green">266</FONT>            m_elementFlags.put("TR", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.266"></a>
<FONT color="green">267</FONT>            m_elementFlags.put("TH", new ElemDesc(0));<a name="line.267"></a>
<FONT color="green">268</FONT>            m_elementFlags.put("TD", new ElemDesc(0));<a name="line.268"></a>
<FONT color="green">269</FONT>            m_elementFlags.put(<a name="line.269"></a>
<FONT color="green">270</FONT>                "HEAD",<a name="line.270"></a>
<FONT color="green">271</FONT>                new ElemDesc(0 | ElemDesc.BLOCK | ElemDesc.HEADELEM));<a name="line.271"></a>
<FONT color="green">272</FONT>            m_elementFlags.put("TITLE", new ElemDesc(0 | ElemDesc.BLOCK));<a name="line.272"></a>
<FONT color="green">273</FONT>            m_elementFlags.put(<a name="line.273"></a>
<FONT color="green">274</FONT>                "BASE",<a name="line.274"></a>
<FONT color="green">275</FONT>                new ElemDesc(0 | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.275"></a>
<FONT color="green">276</FONT>            m_elementFlags.put(<a name="line.276"></a>
<FONT color="green">277</FONT>                "META",<a name="line.277"></a>
<FONT color="green">278</FONT>                new ElemDesc(<a name="line.278"></a>
<FONT color="green">279</FONT>                    0 | ElemDesc.HEADMISC | ElemDesc.EMPTY | ElemDesc.BLOCK));<a name="line.279"></a>
<FONT color="green">280</FONT>            m_elementFlags.put(<a name="line.280"></a>
<FONT color="green">281</FONT>                "STYLE",<a name="line.281"></a>
<FONT color="green">282</FONT>                new ElemDesc(<a name="line.282"></a>
<FONT color="green">283</FONT>                    0 | ElemDesc.HEADMISC | ElemDesc.RAW | ElemDesc.BLOCK));<a name="line.283"></a>
<FONT color="green">284</FONT>            m_elementFlags.put(<a name="line.284"></a>
<FONT color="green">285</FONT>                "SCRIPT",<a name="line.285"></a>
<FONT color="green">286</FONT>                new ElemDesc(<a name="line.286"></a>
<FONT color="green">287</FONT>                    0<a name="line.287"></a>
<FONT color="green">288</FONT>                        | ElemDesc.SPECIAL<a name="line.288"></a>
<FONT color="green">289</FONT>                        | ElemDesc.ASPECIAL<a name="line.289"></a>
<FONT color="green">290</FONT>                        | ElemDesc.HEADMISC<a name="line.290"></a>
<FONT color="green">291</FONT>                        | ElemDesc.RAW));<a name="line.291"></a>
<FONT color="green">292</FONT>            m_elementFlags.put(<a name="line.292"></a>
<FONT color="green">293</FONT>                "NOSCRIPT",<a name="line.293"></a>
<FONT color="green">294</FONT>                new ElemDesc(<a name="line.294"></a>
<FONT color="green">295</FONT>                    0<a name="line.295"></a>
<FONT color="green">296</FONT>                        | ElemDesc.BLOCK<a name="line.296"></a>
<FONT color="green">297</FONT>                        | ElemDesc.BLOCKFORM<a name="line.297"></a>
<FONT color="green">298</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.298"></a>
<FONT color="green">299</FONT>            m_elementFlags.put("HTML", new ElemDesc(0 | ElemDesc.BLOCK | ElemDesc.HTMLELEM));<a name="line.299"></a>
<FONT color="green">300</FONT>    <a name="line.300"></a>
<FONT color="green">301</FONT>            // From "John Ky" &lt;hand@syd.speednet.com.au<a name="line.301"></a>
<FONT color="green">302</FONT>            // Transitional Document Type Definition ()<a name="line.302"></a>
<FONT color="green">303</FONT>            // file:///C:/Documents%20and%20Settings/sboag.BOAG600E/My%20Documents/html/sgml/loosedtd.html#basefont<a name="line.303"></a>
<FONT color="green">304</FONT>            m_elementFlags.put("FONT", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.304"></a>
<FONT color="green">305</FONT>    <a name="line.305"></a>
<FONT color="green">306</FONT>            // file:///C:/Documents%20and%20Settings/sboag.BOAG600E/My%20Documents/html/present/graphics.html#edef-STRIKE<a name="line.306"></a>
<FONT color="green">307</FONT>            m_elementFlags.put("S", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.307"></a>
<FONT color="green">308</FONT>            m_elementFlags.put("STRIKE", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.308"></a>
<FONT color="green">309</FONT>    <a name="line.309"></a>
<FONT color="green">310</FONT>            // file:///C:/Documents%20and%20Settings/sboag.BOAG600E/My%20Documents/html/present/graphics.html#edef-U<a name="line.310"></a>
<FONT color="green">311</FONT>            m_elementFlags.put("U", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.311"></a>
<FONT color="green">312</FONT>    <a name="line.312"></a>
<FONT color="green">313</FONT>            // From "John Ky" &lt;hand@syd.speednet.com.au<a name="line.313"></a>
<FONT color="green">314</FONT>            m_elementFlags.put("NOBR", new ElemDesc(0 | ElemDesc.FONTSTYLE));<a name="line.314"></a>
<FONT color="green">315</FONT>    <a name="line.315"></a>
<FONT color="green">316</FONT>            // HTML 4.0, section 16.5<a name="line.316"></a>
<FONT color="green">317</FONT>            m_elementFlags.put(<a name="line.317"></a>
<FONT color="green">318</FONT>                "IFRAME",<a name="line.318"></a>
<FONT color="green">319</FONT>                new ElemDesc(<a name="line.319"></a>
<FONT color="green">320</FONT>                    0<a name="line.320"></a>
<FONT color="green">321</FONT>                        | ElemDesc.BLOCK<a name="line.321"></a>
<FONT color="green">322</FONT>                        | ElemDesc.BLOCKFORM<a name="line.322"></a>
<FONT color="green">323</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.323"></a>
<FONT color="green">324</FONT>                        <a name="line.324"></a>
<FONT color="green">325</FONT>            // Netscape 4 extension<a name="line.325"></a>
<FONT color="green">326</FONT>            m_elementFlags.put(<a name="line.326"></a>
<FONT color="green">327</FONT>                "LAYER",<a name="line.327"></a>
<FONT color="green">328</FONT>                new ElemDesc(<a name="line.328"></a>
<FONT color="green">329</FONT>                    0<a name="line.329"></a>
<FONT color="green">330</FONT>                        | ElemDesc.BLOCK<a name="line.330"></a>
<FONT color="green">331</FONT>                        | ElemDesc.BLOCKFORM<a name="line.331"></a>
<FONT color="green">332</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.332"></a>
<FONT color="green">333</FONT>            // Netscape 4 extension                    <a name="line.333"></a>
<FONT color="green">334</FONT>            m_elementFlags.put(<a name="line.334"></a>
<FONT color="green">335</FONT>                "ILAYER",<a name="line.335"></a>
<FONT color="green">336</FONT>                new ElemDesc(<a name="line.336"></a>
<FONT color="green">337</FONT>                    0<a name="line.337"></a>
<FONT color="green">338</FONT>                        | ElemDesc.BLOCK<a name="line.338"></a>
<FONT color="green">339</FONT>                        | ElemDesc.BLOCKFORM<a name="line.339"></a>
<FONT color="green">340</FONT>                        | ElemDesc.BLOCKFORMFIELDSET));<a name="line.340"></a>
<FONT color="green">341</FONT>    <a name="line.341"></a>
<FONT color="green">342</FONT>            // NOW FOR ATTRIBUTE INFORMATION . . .<a name="line.342"></a>
<FONT color="green">343</FONT>            ElemDesc elemDesc;<a name="line.343"></a>
<FONT color="green">344</FONT>    <a name="line.344"></a>
<FONT color="green">345</FONT>    <a name="line.345"></a>
<FONT color="green">346</FONT>            // ----------------------------------------------<a name="line.346"></a>
<FONT color="green">347</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("a");<a name="line.347"></a>
<FONT color="green">348</FONT>            elemDesc.setAttr("HREF", ElemDesc.ATTRURL);<a name="line.348"></a>
<FONT color="green">349</FONT>            elemDesc.setAttr("NAME", ElemDesc.ATTRURL);<a name="line.349"></a>
<FONT color="green">350</FONT>            <a name="line.350"></a>
<FONT color="green">351</FONT>            // ----------------------------------------------<a name="line.351"></a>
<FONT color="green">352</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("area");<a name="line.352"></a>
<FONT color="green">353</FONT>    <a name="line.353"></a>
<FONT color="green">354</FONT>            elemDesc.setAttr("HREF", ElemDesc.ATTRURL);<a name="line.354"></a>
<FONT color="green">355</FONT>            elemDesc.setAttr("NOHREF", ElemDesc.ATTREMPTY);<a name="line.355"></a>
<FONT color="green">356</FONT>    <a name="line.356"></a>
<FONT color="green">357</FONT>            // ----------------------------------------------<a name="line.357"></a>
<FONT color="green">358</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("base");<a name="line.358"></a>
<FONT color="green">359</FONT>    <a name="line.359"></a>
<FONT color="green">360</FONT>            elemDesc.setAttr("HREF", ElemDesc.ATTRURL);<a name="line.360"></a>
<FONT color="green">361</FONT>    <a name="line.361"></a>
<FONT color="green">362</FONT>            // ----------------------------------------------<a name="line.362"></a>
<FONT color="green">363</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("button");<a name="line.363"></a>
<FONT color="green">364</FONT>            elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);<a name="line.364"></a>
<FONT color="green">365</FONT>    <a name="line.365"></a>
<FONT color="green">366</FONT>            // ----------------------------------------------<a name="line.366"></a>
<FONT color="green">367</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("blockquote");<a name="line.367"></a>
<FONT color="green">368</FONT>    <a name="line.368"></a>
<FONT color="green">369</FONT>            elemDesc.setAttr("CITE", ElemDesc.ATTRURL);<a name="line.369"></a>
<FONT color="green">370</FONT>    <a name="line.370"></a>
<FONT color="green">371</FONT>            // ----------------------------------------------<a name="line.371"></a>
<FONT color="green">372</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("del");<a name="line.372"></a>
<FONT color="green">373</FONT>            elemDesc.setAttr("CITE", ElemDesc.ATTRURL);<a name="line.373"></a>
<FONT color="green">374</FONT>    <a name="line.374"></a>
<FONT color="green">375</FONT>            // ----------------------------------------------<a name="line.375"></a>
<FONT color="green">376</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("dir");<a name="line.376"></a>
<FONT color="green">377</FONT>            elemDesc.setAttr("COMPACT", ElemDesc.ATTREMPTY);<a name="line.377"></a>
<FONT color="green">378</FONT>               <a name="line.378"></a>
<FONT color="green">379</FONT>            // ----------------------------------------------<a name="line.379"></a>
<FONT color="green">380</FONT>            <a name="line.380"></a>
<FONT color="green">381</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("div");<a name="line.381"></a>
<FONT color="green">382</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL); // Netscape 4 extension<a name="line.382"></a>
<FONT color="green">383</FONT>            elemDesc.setAttr("NOWRAP", ElemDesc.ATTREMPTY); // Internet-Explorer extension<a name="line.383"></a>
<FONT color="green">384</FONT>       <a name="line.384"></a>
<FONT color="green">385</FONT>            // ----------------------------------------------        <a name="line.385"></a>
<FONT color="green">386</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("dl");<a name="line.386"></a>
<FONT color="green">387</FONT>            elemDesc.setAttr("COMPACT", ElemDesc.ATTREMPTY);<a name="line.387"></a>
<FONT color="green">388</FONT>               <a name="line.388"></a>
<FONT color="green">389</FONT>            // ----------------------------------------------<a name="line.389"></a>
<FONT color="green">390</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("form");<a name="line.390"></a>
<FONT color="green">391</FONT>            elemDesc.setAttr("ACTION", ElemDesc.ATTRURL);<a name="line.391"></a>
<FONT color="green">392</FONT>    <a name="line.392"></a>
<FONT color="green">393</FONT>            // ----------------------------------------------<a name="line.393"></a>
<FONT color="green">394</FONT>            // Attribution to: "Voytenko, Dimitry" &lt;DVoytenko@SECTORBASE.COM&gt;<a name="line.394"></a>
<FONT color="green">395</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("frame");<a name="line.395"></a>
<FONT color="green">396</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.396"></a>
<FONT color="green">397</FONT>            elemDesc.setAttr("LONGDESC", ElemDesc.ATTRURL);<a name="line.397"></a>
<FONT color="green">398</FONT>            elemDesc.setAttr("NORESIZE",ElemDesc.ATTREMPTY);<a name="line.398"></a>
<FONT color="green">399</FONT>    <a name="line.399"></a>
<FONT color="green">400</FONT>            // ----------------------------------------------<a name="line.400"></a>
<FONT color="green">401</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("head");<a name="line.401"></a>
<FONT color="green">402</FONT>            elemDesc.setAttr("PROFILE", ElemDesc.ATTRURL);<a name="line.402"></a>
<FONT color="green">403</FONT>    <a name="line.403"></a>
<FONT color="green">404</FONT>            // ----------------------------------------------        <a name="line.404"></a>
<FONT color="green">405</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("hr");<a name="line.405"></a>
<FONT color="green">406</FONT>            elemDesc.setAttr("NOSHADE", ElemDesc.ATTREMPTY);<a name="line.406"></a>
<FONT color="green">407</FONT>            <a name="line.407"></a>
<FONT color="green">408</FONT>            // ----------------------------------------------<a name="line.408"></a>
<FONT color="green">409</FONT>            // HTML 4.0, section 16.5<a name="line.409"></a>
<FONT color="green">410</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("iframe");<a name="line.410"></a>
<FONT color="green">411</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.411"></a>
<FONT color="green">412</FONT>            elemDesc.setAttr("LONGDESC", ElemDesc.ATTRURL);<a name="line.412"></a>
<FONT color="green">413</FONT>    <a name="line.413"></a>
<FONT color="green">414</FONT>            // ----------------------------------------------<a name="line.414"></a>
<FONT color="green">415</FONT>            // Netscape 4 extension<a name="line.415"></a>
<FONT color="green">416</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("ilayer");<a name="line.416"></a>
<FONT color="green">417</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.417"></a>
<FONT color="green">418</FONT>    <a name="line.418"></a>
<FONT color="green">419</FONT>            // ----------------------------------------------<a name="line.419"></a>
<FONT color="green">420</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("img");<a name="line.420"></a>
<FONT color="green">421</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.421"></a>
<FONT color="green">422</FONT>            elemDesc.setAttr("LONGDESC", ElemDesc.ATTRURL);<a name="line.422"></a>
<FONT color="green">423</FONT>            elemDesc.setAttr("USEMAP", ElemDesc.ATTRURL);<a name="line.423"></a>
<FONT color="green">424</FONT>            elemDesc.setAttr("ISMAP", ElemDesc.ATTREMPTY);<a name="line.424"></a>
<FONT color="green">425</FONT>    <a name="line.425"></a>
<FONT color="green">426</FONT>            // ----------------------------------------------<a name="line.426"></a>
<FONT color="green">427</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("input");<a name="line.427"></a>
<FONT color="green">428</FONT>    <a name="line.428"></a>
<FONT color="green">429</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.429"></a>
<FONT color="green">430</FONT>            elemDesc.setAttr("USEMAP", ElemDesc.ATTRURL);<a name="line.430"></a>
<FONT color="green">431</FONT>            elemDesc.setAttr("CHECKED", ElemDesc.ATTREMPTY);<a name="line.431"></a>
<FONT color="green">432</FONT>            elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);<a name="line.432"></a>
<FONT color="green">433</FONT>            elemDesc.setAttr("ISMAP", ElemDesc.ATTREMPTY);<a name="line.433"></a>
<FONT color="green">434</FONT>            elemDesc.setAttr("READONLY", ElemDesc.ATTREMPTY);<a name="line.434"></a>
<FONT color="green">435</FONT>            <a name="line.435"></a>
<FONT color="green">436</FONT>            // ----------------------------------------------<a name="line.436"></a>
<FONT color="green">437</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("ins");<a name="line.437"></a>
<FONT color="green">438</FONT>            elemDesc.setAttr("CITE", ElemDesc.ATTRURL);<a name="line.438"></a>
<FONT color="green">439</FONT>    <a name="line.439"></a>
<FONT color="green">440</FONT>            // ----------------------------------------------<a name="line.440"></a>
<FONT color="green">441</FONT>            // Netscape 4 extension<a name="line.441"></a>
<FONT color="green">442</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("layer");<a name="line.442"></a>
<FONT color="green">443</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.443"></a>
<FONT color="green">444</FONT>    <a name="line.444"></a>
<FONT color="green">445</FONT>            // ----------------------------------------------<a name="line.445"></a>
<FONT color="green">446</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("link");<a name="line.446"></a>
<FONT color="green">447</FONT>            elemDesc.setAttr("HREF", ElemDesc.ATTRURL);<a name="line.447"></a>
<FONT color="green">448</FONT>           <a name="line.448"></a>
<FONT color="green">449</FONT>            // ----------------------------------------------       <a name="line.449"></a>
<FONT color="green">450</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("menu");<a name="line.450"></a>
<FONT color="green">451</FONT>            elemDesc.setAttr("COMPACT", ElemDesc.ATTREMPTY);<a name="line.451"></a>
<FONT color="green">452</FONT>            <a name="line.452"></a>
<FONT color="green">453</FONT>            // ----------------------------------------------<a name="line.453"></a>
<FONT color="green">454</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("object");<a name="line.454"></a>
<FONT color="green">455</FONT>    <a name="line.455"></a>
<FONT color="green">456</FONT>            elemDesc.setAttr("CLASSID", ElemDesc.ATTRURL);<a name="line.456"></a>
<FONT color="green">457</FONT>            elemDesc.setAttr("CODEBASE", ElemDesc.ATTRURL);<a name="line.457"></a>
<FONT color="green">458</FONT>            elemDesc.setAttr("DATA", ElemDesc.ATTRURL);<a name="line.458"></a>
<FONT color="green">459</FONT>            elemDesc.setAttr("ARCHIVE", ElemDesc.ATTRURL);<a name="line.459"></a>
<FONT color="green">460</FONT>            elemDesc.setAttr("USEMAP", ElemDesc.ATTRURL);<a name="line.460"></a>
<FONT color="green">461</FONT>            elemDesc.setAttr("DECLARE", ElemDesc.ATTREMPTY);<a name="line.461"></a>
<FONT color="green">462</FONT>            <a name="line.462"></a>
<FONT color="green">463</FONT>            // ----------------------------------------------        <a name="line.463"></a>
<FONT color="green">464</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("ol");<a name="line.464"></a>
<FONT color="green">465</FONT>            elemDesc.setAttr("COMPACT", ElemDesc.ATTREMPTY);<a name="line.465"></a>
<FONT color="green">466</FONT>            <a name="line.466"></a>
<FONT color="green">467</FONT>            // ----------------------------------------------<a name="line.467"></a>
<FONT color="green">468</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("optgroup");<a name="line.468"></a>
<FONT color="green">469</FONT>            elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);<a name="line.469"></a>
<FONT color="green">470</FONT>    <a name="line.470"></a>
<FONT color="green">471</FONT>            // ----------------------------------------------<a name="line.471"></a>
<FONT color="green">472</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("option");<a name="line.472"></a>
<FONT color="green">473</FONT>            elemDesc.setAttr("SELECTED", ElemDesc.ATTREMPTY);<a name="line.473"></a>
<FONT color="green">474</FONT>            elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);<a name="line.474"></a>
<FONT color="green">475</FONT>            <a name="line.475"></a>
<FONT color="green">476</FONT>            // ----------------------------------------------<a name="line.476"></a>
<FONT color="green">477</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("q");<a name="line.477"></a>
<FONT color="green">478</FONT>            elemDesc.setAttr("CITE", ElemDesc.ATTRURL);<a name="line.478"></a>
<FONT color="green">479</FONT>    <a name="line.479"></a>
<FONT color="green">480</FONT>            // ----------------------------------------------<a name="line.480"></a>
<FONT color="green">481</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("script");<a name="line.481"></a>
<FONT color="green">482</FONT>            elemDesc.setAttr("SRC", ElemDesc.ATTRURL);<a name="line.482"></a>
<FONT color="green">483</FONT>            elemDesc.setAttr("FOR", ElemDesc.ATTRURL);<a name="line.483"></a>
<FONT color="green">484</FONT>            elemDesc.setAttr("DEFER", ElemDesc.ATTREMPTY);<a name="line.484"></a>
<FONT color="green">485</FONT>    <a name="line.485"></a>
<FONT color="green">486</FONT>            // ----------------------------------------------<a name="line.486"></a>
<FONT color="green">487</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("select");<a name="line.487"></a>
<FONT color="green">488</FONT>            elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);<a name="line.488"></a>
<FONT color="green">489</FONT>            elemDesc.setAttr("MULTIPLE", ElemDesc.ATTREMPTY);<a name="line.489"></a>
<FONT color="green">490</FONT>    <a name="line.490"></a>
<FONT color="green">491</FONT>            // ----------------------------------------------<a name="line.491"></a>
<FONT color="green">492</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("table");<a name="line.492"></a>
<FONT color="green">493</FONT>            elemDesc.setAttr("NOWRAP", ElemDesc.ATTREMPTY); // Internet-Explorer extension<a name="line.493"></a>
<FONT color="green">494</FONT>            <a name="line.494"></a>
<FONT color="green">495</FONT>            // ----------------------------------------------        <a name="line.495"></a>
<FONT color="green">496</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("td");<a name="line.496"></a>
<FONT color="green">497</FONT>            elemDesc.setAttr("NOWRAP", ElemDesc.ATTREMPTY);<a name="line.497"></a>
<FONT color="green">498</FONT>    <a name="line.498"></a>
<FONT color="green">499</FONT>            // ----------------------------------------------<a name="line.499"></a>
<FONT color="green">500</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("textarea");<a name="line.500"></a>
<FONT color="green">501</FONT>            elemDesc.setAttr("DISABLED", ElemDesc.ATTREMPTY);<a name="line.501"></a>
<FONT color="green">502</FONT>            elemDesc.setAttr("READONLY", ElemDesc.ATTREMPTY);<a name="line.502"></a>
<FONT color="green">503</FONT>           <a name="line.503"></a>
<FONT color="green">504</FONT>            // ----------------------------------------------                <a name="line.504"></a>
<FONT color="green">505</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("th");<a name="line.505"></a>
<FONT color="green">506</FONT>            elemDesc.setAttr("NOWRAP", ElemDesc.ATTREMPTY);<a name="line.506"></a>
<FONT color="green">507</FONT>            <a name="line.507"></a>
<FONT color="green">508</FONT>            // ----------------------------------------------<a name="line.508"></a>
<FONT color="green">509</FONT>            // The nowrap attribute of a tr element is both<a name="line.509"></a>
<FONT color="green">510</FONT>            // a Netscape and Internet-Explorer extension                <a name="line.510"></a>
<FONT color="green">511</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("tr");<a name="line.511"></a>
<FONT color="green">512</FONT>            elemDesc.setAttr("NOWRAP", ElemDesc.ATTREMPTY);<a name="line.512"></a>
<FONT color="green">513</FONT>            <a name="line.513"></a>
<FONT color="green">514</FONT>            // ----------------------------------------------        <a name="line.514"></a>
<FONT color="green">515</FONT>            elemDesc = (ElemDesc) m_elementFlags.get("ul");<a name="line.515"></a>
<FONT color="green">516</FONT>            elemDesc.setAttr("COMPACT", ElemDesc.ATTREMPTY);<a name="line.516"></a>
<FONT color="green">517</FONT>        }<a name="line.517"></a>
<FONT color="green">518</FONT>    <a name="line.518"></a>
<FONT color="green">519</FONT>        /**<a name="line.519"></a>
<FONT color="green">520</FONT>         * Dummy element for elements not found.<a name="line.520"></a>
<FONT color="green">521</FONT>         */<a name="line.521"></a>
<FONT color="green">522</FONT>        static private final ElemDesc m_dummy = new ElemDesc(0 | ElemDesc.BLOCK);<a name="line.522"></a>
<FONT color="green">523</FONT>    <a name="line.523"></a>
<FONT color="green">524</FONT>        /** True if URLs should be specially escaped with the %xx form. */<a name="line.524"></a>
<FONT color="green">525</FONT>        private boolean m_specialEscapeURLs = true;<a name="line.525"></a>
<FONT color="green">526</FONT>    <a name="line.526"></a>
<FONT color="green">527</FONT>        /** True if the META tag should be omitted. */<a name="line.527"></a>
<FONT color="green">528</FONT>        private boolean m_omitMetaTag = false;<a name="line.528"></a>
<FONT color="green">529</FONT>    <a name="line.529"></a>
<FONT color="green">530</FONT>        /**<a name="line.530"></a>
<FONT color="green">531</FONT>         * Tells if the formatter should use special URL escaping.<a name="line.531"></a>
<FONT color="green">532</FONT>         *<a name="line.532"></a>
<FONT color="green">533</FONT>         * @param bool True if URLs should be specially escaped with the %xx form.<a name="line.533"></a>
<FONT color="green">534</FONT>         */<a name="line.534"></a>
<FONT color="green">535</FONT>        public void setSpecialEscapeURLs(boolean bool)<a name="line.535"></a>
<FONT color="green">536</FONT>        {<a name="line.536"></a>
<FONT color="green">537</FONT>            m_specialEscapeURLs = bool;<a name="line.537"></a>
<FONT color="green">538</FONT>        }<a name="line.538"></a>
<FONT color="green">539</FONT>    <a name="line.539"></a>
<FONT color="green">540</FONT>        /**<a name="line.540"></a>
<FONT color="green">541</FONT>         * Tells if the formatter should omit the META tag.<a name="line.541"></a>
<FONT color="green">542</FONT>         *<a name="line.542"></a>
<FONT color="green">543</FONT>         * @param bool True if the META tag should be omitted.<a name="line.543"></a>
<FONT color="green">544</FONT>         */<a name="line.544"></a>
<FONT color="green">545</FONT>        public void setOmitMetaTag(boolean bool)<a name="line.545"></a>
<FONT color="green">546</FONT>        {<a name="line.546"></a>
<FONT color="green">547</FONT>            m_omitMetaTag = bool;<a name="line.547"></a>
<FONT color="green">548</FONT>        }<a name="line.548"></a>
<FONT color="green">549</FONT>    <a name="line.549"></a>
<FONT color="green">550</FONT>        /**<a name="line.550"></a>
<FONT color="green">551</FONT>         * Specifies an output format for this serializer. It the<a name="line.551"></a>
<FONT color="green">552</FONT>         * serializer has already been associated with an output format,<a name="line.552"></a>
<FONT color="green">553</FONT>         * it will switch to the new format. This method should not be<a name="line.553"></a>
<FONT color="green">554</FONT>         * called while the serializer is in the process of serializing<a name="line.554"></a>
<FONT color="green">555</FONT>         * a document.<a name="line.555"></a>
<FONT color="green">556</FONT>         * <a name="line.556"></a>
<FONT color="green">557</FONT>         * This method can be called multiple times before starting<a name="line.557"></a>
<FONT color="green">558</FONT>         * the serialization of a particular result-tree. In principle<a name="line.558"></a>
<FONT color="green">559</FONT>         * all serialization parameters can be changed, with the exception<a name="line.559"></a>
<FONT color="green">560</FONT>         * of method="html" (it must be method="html" otherwise we<a name="line.560"></a>
<FONT color="green">561</FONT>         * shouldn't even have a ToHTMLStream object here!) <a name="line.561"></a>
<FONT color="green">562</FONT>         *<a name="line.562"></a>
<FONT color="green">563</FONT>         * @param format The output format or serialzation parameters<a name="line.563"></a>
<FONT color="green">564</FONT>         * to use.<a name="line.564"></a>
<FONT color="green">565</FONT>         */<a name="line.565"></a>
<FONT color="green">566</FONT>        public void setOutputFormat(Properties format)<a name="line.566"></a>
<FONT color="green">567</FONT>        {<a name="line.567"></a>
<FONT color="green">568</FONT>            /*<a name="line.568"></a>
<FONT color="green">569</FONT>             * If "format" does not contain the property<a name="line.569"></a>
<FONT color="green">570</FONT>             * S_USE_URL_ESCAPING, then don't set this value at all,<a name="line.570"></a>
<FONT color="green">571</FONT>             * just leave as-is rather than explicitly setting it.<a name="line.571"></a>
<FONT color="green">572</FONT>             */<a name="line.572"></a>
<FONT color="green">573</FONT>            String value; <a name="line.573"></a>
<FONT color="green">574</FONT>            value = format.getProperty(OutputPropertiesFactory.S_USE_URL_ESCAPING);<a name="line.574"></a>
<FONT color="green">575</FONT>            if (value != null) {<a name="line.575"></a>
<FONT color="green">576</FONT>                m_specialEscapeURLs =<a name="line.576"></a>
<FONT color="green">577</FONT>                    OutputPropertyUtils.getBooleanProperty(<a name="line.577"></a>
<FONT color="green">578</FONT>                        OutputPropertiesFactory.S_USE_URL_ESCAPING,<a name="line.578"></a>
<FONT color="green">579</FONT>                        format);<a name="line.579"></a>
<FONT color="green">580</FONT>            }<a name="line.580"></a>
<FONT color="green">581</FONT>    <a name="line.581"></a>
<FONT color="green">582</FONT>            /*<a name="line.582"></a>
<FONT color="green">583</FONT>             * If "format" does not contain the property<a name="line.583"></a>
<FONT color="green">584</FONT>             * S_OMIT_META_TAG, then don't set this value at all,<a name="line.584"></a>
<FONT color="green">585</FONT>             * just leave as-is rather than explicitly setting it.<a name="line.585"></a>
<FONT color="green">586</FONT>             */<a name="line.586"></a>
<FONT color="green">587</FONT>            value = format.getProperty(OutputPropertiesFactory.S_OMIT_META_TAG);<a name="line.587"></a>
<FONT color="green">588</FONT>            if (value != null) {<a name="line.588"></a>
<FONT color="green">589</FONT>               m_omitMetaTag =<a name="line.589"></a>
<FONT color="green">590</FONT>                    OutputPropertyUtils.getBooleanProperty(<a name="line.590"></a>
<FONT color="green">591</FONT>                        OutputPropertiesFactory.S_OMIT_META_TAG,<a name="line.591"></a>
<FONT color="green">592</FONT>                        format);<a name="line.592"></a>
<FONT color="green">593</FONT>            }<a name="line.593"></a>
<FONT color="green">594</FONT>    <a name="line.594"></a>
<FONT color="green">595</FONT>            super.setOutputFormat(format);<a name="line.595"></a>
<FONT color="green">596</FONT>        }<a name="line.596"></a>
<FONT color="green">597</FONT>    <a name="line.597"></a>
<FONT color="green">598</FONT>        /**<a name="line.598"></a>
<FONT color="green">599</FONT>         * Tells if the formatter should use special URL escaping.<a name="line.599"></a>
<FONT color="green">600</FONT>         *<a name="line.600"></a>
<FONT color="green">601</FONT>         * @return True if URLs should be specially escaped with the %xx form.<a name="line.601"></a>
<FONT color="green">602</FONT>         */<a name="line.602"></a>
<FONT color="green">603</FONT>        private final boolean getSpecialEscapeURLs()<a name="line.603"></a>
<FONT color="green">604</FONT>        {<a name="line.604"></a>
<FONT color="green">605</FONT>            return m_specialEscapeURLs;<a name="line.605"></a>
<FONT color="green">606</FONT>        }<a name="line.606"></a>
<FONT color="green">607</FONT>    <a name="line.607"></a>
<FONT color="green">608</FONT>        /**<a name="line.608"></a>
<FONT color="green">609</FONT>         * Tells if the formatter should omit the META tag.<a name="line.609"></a>
<FONT color="green">610</FONT>         *<a name="line.610"></a>
<FONT color="green">611</FONT>         * @return True if the META tag should be omitted.<a name="line.611"></a>
<FONT color="green">612</FONT>         */<a name="line.612"></a>
<FONT color="green">613</FONT>        private final boolean getOmitMetaTag()<a name="line.613"></a>
<FONT color="green">614</FONT>        {<a name="line.614"></a>
<FONT color="green">615</FONT>            return m_omitMetaTag;<a name="line.615"></a>
<FONT color="green">616</FONT>        }<a name="line.616"></a>
<FONT color="green">617</FONT>    <a name="line.617"></a>
<FONT color="green">618</FONT>        /**<a name="line.618"></a>
<FONT color="green">619</FONT>         * Get a description of the given element.<a name="line.619"></a>
<FONT color="green">620</FONT>         *<a name="line.620"></a>
<FONT color="green">621</FONT>         * @param name non-null name of element, case insensitive.<a name="line.621"></a>
<FONT color="green">622</FONT>         *<a name="line.622"></a>
<FONT color="green">623</FONT>         * @return non-null reference to ElemDesc, which may be m_dummy if no <a name="line.623"></a>
<FONT color="green">624</FONT>         *         element description matches the given name.<a name="line.624"></a>
<FONT color="green">625</FONT>         */<a name="line.625"></a>
<FONT color="green">626</FONT>        public static final ElemDesc getElemDesc(String name)<a name="line.626"></a>
<FONT color="green">627</FONT>        {<a name="line.627"></a>
<FONT color="green">628</FONT>            /* this method used to return m_dummy  when name was null<a name="line.628"></a>
<FONT color="green">629</FONT>             * but now it doesn't check and and requires non-null name.<a name="line.629"></a>
<FONT color="green">630</FONT>             */<a name="line.630"></a>
<FONT color="green">631</FONT>            Object obj = m_elementFlags.get(name);<a name="line.631"></a>
<FONT color="green">632</FONT>            if (null != obj)<a name="line.632"></a>
<FONT color="green">633</FONT>                return (ElemDesc)obj;<a name="line.633"></a>
<FONT color="green">634</FONT>            return m_dummy;<a name="line.634"></a>
<FONT color="green">635</FONT>        }<a name="line.635"></a>
<FONT color="green">636</FONT>        <a name="line.636"></a>
<FONT color="green">637</FONT>        <a name="line.637"></a>
<FONT color="green">638</FONT>        /**<a name="line.638"></a>
<FONT color="green">639</FONT>         * A Trie that is just a copy of the "static" one.<a name="line.639"></a>
<FONT color="green">640</FONT>         * We need this one to be able to use the faster, but not thread-safe<a name="line.640"></a>
<FONT color="green">641</FONT>         * method Trie.get2(name)<a name="line.641"></a>
<FONT color="green">642</FONT>         */<a name="line.642"></a>
<FONT color="green">643</FONT>        private Trie m_htmlInfo = new Trie(m_elementFlags);<a name="line.643"></a>
<FONT color="green">644</FONT>        /**<a name="line.644"></a>
<FONT color="green">645</FONT>         * Calls to this method could be replaced with calls to<a name="line.645"></a>
<FONT color="green">646</FONT>         * getElemDesc(name), but this one should be faster.<a name="line.646"></a>
<FONT color="green">647</FONT>         */<a name="line.647"></a>
<FONT color="green">648</FONT>        private ElemDesc getElemDesc2(String name)<a name="line.648"></a>
<FONT color="green">649</FONT>        {<a name="line.649"></a>
<FONT color="green">650</FONT>            Object obj = m_htmlInfo.get2(name);<a name="line.650"></a>
<FONT color="green">651</FONT>            if (null != obj)<a name="line.651"></a>
<FONT color="green">652</FONT>                return (ElemDesc)obj;<a name="line.652"></a>
<FONT color="green">653</FONT>            return m_dummy;<a name="line.653"></a>
<FONT color="green">654</FONT>        }<a name="line.654"></a>
<FONT color="green">655</FONT>    <a name="line.655"></a>
<FONT color="green">656</FONT>        /**<a name="line.656"></a>
<FONT color="green">657</FONT>         * Default constructor.<a name="line.657"></a>
<FONT color="green">658</FONT>         */<a name="line.658"></a>
<FONT color="green">659</FONT>        public ToHTMLStream()<a name="line.659"></a>
<FONT color="green">660</FONT>        {<a name="line.660"></a>
<FONT color="green">661</FONT>    <a name="line.661"></a>
<FONT color="green">662</FONT>            super();<a name="line.662"></a>
<FONT color="green">663</FONT>            // we are just constructing this thing, no output properties<a name="line.663"></a>
<FONT color="green">664</FONT>            // have been used, so we will set the right default for<a name="line.664"></a>
<FONT color="green">665</FONT>            // indenting anyways<a name="line.665"></a>
<FONT color="green">666</FONT>            m_doIndent = true; <a name="line.666"></a>
<FONT color="green">667</FONT>            m_charInfo = m_htmlcharInfo;<a name="line.667"></a>
<FONT color="green">668</FONT>            // initialize namespaces<a name="line.668"></a>
<FONT color="green">669</FONT>            m_prefixMap = new NamespaceMappings();<a name="line.669"></a>
<FONT color="green">670</FONT>    <a name="line.670"></a>
<FONT color="green">671</FONT>        }<a name="line.671"></a>
<FONT color="green">672</FONT>    <a name="line.672"></a>
<FONT color="green">673</FONT>        /** The name of the current element. */<a name="line.673"></a>
<FONT color="green">674</FONT>    //    private String m_currentElementName = null;<a name="line.674"></a>
<FONT color="green">675</FONT>    <a name="line.675"></a>
<FONT color="green">676</FONT>        /**<a name="line.676"></a>
<FONT color="green">677</FONT>         * Receive notification of the beginning of a document.<a name="line.677"></a>
<FONT color="green">678</FONT>         *<a name="line.678"></a>
<FONT color="green">679</FONT>         * @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.679"></a>
<FONT color="green">680</FONT>         *            wrapping another exception.<a name="line.680"></a>
<FONT color="green">681</FONT>         *<a name="line.681"></a>
<FONT color="green">682</FONT>         * @throws org.xml.sax.SAXException<a name="line.682"></a>
<FONT color="green">683</FONT>         */<a name="line.683"></a>
<FONT color="green">684</FONT>        protected void startDocumentInternal() throws org.xml.sax.SAXException<a name="line.684"></a>
<FONT color="green">685</FONT>        {<a name="line.685"></a>
<FONT color="green">686</FONT>            super.startDocumentInternal();<a name="line.686"></a>
<FONT color="green">687</FONT>    <a name="line.687"></a>
<FONT color="green">688</FONT>            m_needToCallStartDocument = false; <a name="line.688"></a>
<FONT color="green">689</FONT>            m_needToOutputDocTypeDecl = true;<a name="line.689"></a>
<FONT color="green">690</FONT>            m_startNewLine = false;<a name="line.690"></a>
<FONT color="green">691</FONT>            setOmitXMLDeclaration(true);<a name="line.691"></a>
<FONT color="green">692</FONT>        }<a name="line.692"></a>
<FONT color="green">693</FONT>    <a name="line.693"></a>
<FONT color="green">694</FONT>        /**<a name="line.694"></a>
<FONT color="green">695</FONT>         * This method should only get called once.<a name="line.695"></a>
<FONT color="green">696</FONT>         * If a DOCTYPE declaration needs to get written out, it will<a name="line.696"></a>
<FONT color="green">697</FONT>         * be written out. If it doesn't need to be written out, then<a name="line.697"></a>
<FONT color="green">698</FONT>         * the call to this method has no effect.<a name="line.698"></a>
<FONT color="green">699</FONT>         */<a name="line.699"></a>
<FONT color="green">700</FONT>        private void outputDocTypeDecl(String name) throws SAXException {<a name="line.700"></a>
<FONT color="green">701</FONT>            if (true == m_needToOutputDocTypeDecl)<a name="line.701"></a>
<FONT color="green">702</FONT>            {<a name="line.702"></a>
<FONT color="green">703</FONT>                String doctypeSystem = getDoctypeSystem();<a name="line.703"></a>
<FONT color="green">704</FONT>                String doctypePublic = getDoctypePublic();<a name="line.704"></a>
<FONT color="green">705</FONT>                if ((null != doctypeSystem) || (null != doctypePublic))<a name="line.705"></a>
<FONT color="green">706</FONT>                {<a name="line.706"></a>
<FONT color="green">707</FONT>                    final java.io.Writer writer = m_writer;<a name="line.707"></a>
<FONT color="green">708</FONT>                    try<a name="line.708"></a>
<FONT color="green">709</FONT>                    {<a name="line.709"></a>
<FONT color="green">710</FONT>                    writer.write("&lt;!DOCTYPE ");<a name="line.710"></a>
<FONT color="green">711</FONT>                    writer.write(name);<a name="line.711"></a>
<FONT color="green">712</FONT>    <a name="line.712"></a>
<FONT color="green">713</FONT>                    if (null != doctypePublic)<a name="line.713"></a>
<FONT color="green">714</FONT>                    {<a name="line.714"></a>
<FONT color="green">715</FONT>                        writer.write(" PUBLIC \"");<a name="line.715"></a>
<FONT color="green">716</FONT>                        writer.write(doctypePublic);<a name="line.716"></a>
<FONT color="green">717</FONT>                        writer.write('"');<a name="line.717"></a>
<FONT color="green">718</FONT>                    }<a name="line.718"></a>
<FONT color="green">719</FONT>    <a name="line.719"></a>
<FONT color="green">720</FONT>                    if (null != doctypeSystem)<a name="line.720"></a>
<FONT color="green">721</FONT>                    {<a name="line.721"></a>
<FONT color="green">722</FONT>                        if (null == doctypePublic)<a name="line.722"></a>
<FONT color="green">723</FONT>                            writer.write(" SYSTEM \"");<a name="line.723"></a>
<FONT color="green">724</FONT>                        else<a name="line.724"></a>
<FONT color="green">725</FONT>                            writer.write(" \"");<a name="line.725"></a>
<FONT color="green">726</FONT>    <a name="line.726"></a>
<FONT color="green">727</FONT>                        writer.write(doctypeSystem);<a name="line.727"></a>
<FONT color="green">728</FONT>                        writer.write('"');<a name="line.728"></a>
<FONT color="green">729</FONT>                    }<a name="line.729"></a>
<FONT color="green">730</FONT>    <a name="line.730"></a>
<FONT color="green">731</FONT>                    writer.write('&gt;');<a name="line.731"></a>
<FONT color="green">732</FONT>                    outputLineSep();<a name="line.732"></a>
<FONT color="green">733</FONT>                    }<a name="line.733"></a>
<FONT color="green">734</FONT>                    catch(IOException e)<a name="line.734"></a>
<FONT color="green">735</FONT>                    {<a name="line.735"></a>
<FONT color="green">736</FONT>                        throw new SAXException(e);<a name="line.736"></a>
<FONT color="green">737</FONT>                    }<a name="line.737"></a>
<FONT color="green">738</FONT>                }<a name="line.738"></a>
<FONT color="green">739</FONT>            }<a name="line.739"></a>
<FONT color="green">740</FONT>    <a name="line.740"></a>
<FONT color="green">741</FONT>            m_needToOutputDocTypeDecl = false;<a name="line.741"></a>
<FONT color="green">742</FONT>        }<a name="line.742"></a>
<FONT color="green">743</FONT>    <a name="line.743"></a>
<FONT color="green">744</FONT>        /**<a name="line.744"></a>
<FONT color="green">745</FONT>         * Receive notification of the end of a document. <a name="line.745"></a>
<FONT color="green">746</FONT>         *<a name="line.746"></a>
<FONT color="green">747</FONT>         * @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.747"></a>
<FONT color="green">748</FONT>         *            wrapping another exception.<a name="line.748"></a>
<FONT color="green">749</FONT>         *<a name="line.749"></a>
<FONT color="green">750</FONT>         * @throws org.xml.sax.SAXException<a name="line.750"></a>
<FONT color="green">751</FONT>         */<a name="line.751"></a>
<FONT color="green">752</FONT>        public final void endDocument() throws org.xml.sax.SAXException<a name="line.752"></a>
<FONT color="green">753</FONT>        {<a name="line.753"></a>
<FONT color="green">754</FONT>            <a name="line.754"></a>
<FONT color="green">755</FONT>            flushPending();<a name="line.755"></a>
<FONT color="green">756</FONT>            if (m_doIndent &amp;&amp; !m_isprevtext)<a name="line.756"></a>
<FONT color="green">757</FONT>            {<a name="line.757"></a>
<FONT color="green">758</FONT>                try<a name="line.758"></a>
<FONT color="green">759</FONT>                {<a name="line.759"></a>
<FONT color="green">760</FONT>                outputLineSep();<a name="line.760"></a>
<FONT color="green">761</FONT>                }<a name="line.761"></a>
<FONT color="green">762</FONT>                catch(IOException e)<a name="line.762"></a>
<FONT color="green">763</FONT>                {<a name="line.763"></a>
<FONT color="green">764</FONT>                    throw new SAXException(e);<a name="line.764"></a>
<FONT color="green">765</FONT>                }<a name="line.765"></a>
<FONT color="green">766</FONT>            }<a name="line.766"></a>
<FONT color="green">767</FONT>    <a name="line.767"></a>
<FONT color="green">768</FONT>            flushWriter();<a name="line.768"></a>
<FONT color="green">769</FONT>            if (m_tracer != null)<a name="line.769"></a>
<FONT color="green">770</FONT>                super.fireEndDoc();<a name="line.770"></a>
<FONT color="green">771</FONT>        }<a name="line.771"></a>
<FONT color="green">772</FONT>    <a name="line.772"></a>
<FONT color="green">773</FONT>        /**<a name="line.773"></a>
<FONT color="green">774</FONT>         *  Receive notification of the beginning of an element.<a name="line.774"></a>
<FONT color="green">775</FONT>         *<a name="line.775"></a>
<FONT color="green">776</FONT>         *<a name="line.776"></a>
<FONT color="green">777</FONT>         *  @param namespaceURI<a name="line.777"></a>
<FONT color="green">778</FONT>         *  @param localName<a name="line.778"></a>
<FONT color="green">779</FONT>         *  @param name The element type name.<a name="line.779"></a>
<FONT color="green">780</FONT>         *  @param atts The attributes attached to the element, if any.<a name="line.780"></a>
<FONT color="green">781</FONT>         *  @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.781"></a>
<FONT color="green">782</FONT>         *             wrapping another exception.<a name="line.782"></a>
<FONT color="green">783</FONT>         *  @see #endElement<a name="line.783"></a>
<FONT color="green">784</FONT>         *  @see org.xml.sax.AttributeList<a name="line.784"></a>
<FONT color="green">785</FONT>         */<a name="line.785"></a>
<FONT color="green">786</FONT>        public void startElement(<a name="line.786"></a>
<FONT color="green">787</FONT>            String namespaceURI,<a name="line.787"></a>
<FONT color="green">788</FONT>            String localName,<a name="line.788"></a>
<FONT color="green">789</FONT>            String name,<a name="line.789"></a>
<FONT color="green">790</FONT>            Attributes atts)<a name="line.790"></a>
<FONT color="green">791</FONT>            throws org.xml.sax.SAXException<a name="line.791"></a>
<FONT color="green">792</FONT>        {<a name="line.792"></a>
<FONT color="green">793</FONT>    <a name="line.793"></a>
<FONT color="green">794</FONT>            ElemContext elemContext = m_elemContext;<a name="line.794"></a>
<FONT color="green">795</FONT>    <a name="line.795"></a>
<FONT color="green">796</FONT>            // clean up any pending things first<a name="line.796"></a>
<FONT color="green">797</FONT>            if (elemContext.m_startTagOpen)<a name="line.797"></a>
<FONT color="green">798</FONT>            {<a name="line.798"></a>
<FONT color="green">799</FONT>                closeStartTag();<a name="line.799"></a>
<FONT color="green">800</FONT>                elemContext.m_startTagOpen = false;<a name="line.800"></a>
<FONT color="green">801</FONT>            }<a name="line.801"></a>
<FONT color="green">802</FONT>            else if (m_cdataTagOpen)<a name="line.802"></a>
<FONT color="green">803</FONT>            {<a name="line.803"></a>
<FONT color="green">804</FONT>                closeCDATA();<a name="line.804"></a>
<FONT color="green">805</FONT>                m_cdataTagOpen = false;<a name="line.805"></a>
<FONT color="green">806</FONT>            }<a name="line.806"></a>
<FONT color="green">807</FONT>            else if (m_needToCallStartDocument)<a name="line.807"></a>
<FONT color="green">808</FONT>            {<a name="line.808"></a>
<FONT color="green">809</FONT>                startDocumentInternal();<a name="line.809"></a>
<FONT color="green">810</FONT>                m_needToCallStartDocument = false;<a name="line.810"></a>
<FONT color="green">811</FONT>            }<a name="line.811"></a>
<FONT color="green">812</FONT>            <a name="line.812"></a>
<FONT color="green">813</FONT>            if (m_needToOutputDocTypeDecl) {            <a name="line.813"></a>
<FONT color="green">814</FONT>                String n = name;<a name="line.814"></a>
<FONT color="green">815</FONT>                if (n == null || n.length() == 0) {<a name="line.815"></a>
<FONT color="green">816</FONT>                    // If the lexical QName is not given<a name="line.816"></a>
<FONT color="green">817</FONT>                    // use the localName in the DOCTYPE<a name="line.817"></a>
<FONT color="green">818</FONT>                    n = localName;<a name="line.818"></a>
<FONT color="green">819</FONT>                }<a name="line.819"></a>
<FONT color="green">820</FONT>                outputDocTypeDecl(n);<a name="line.820"></a>
<FONT color="green">821</FONT>            }<a name="line.821"></a>
<FONT color="green">822</FONT>    <a name="line.822"></a>
<FONT color="green">823</FONT>    <a name="line.823"></a>
<FONT color="green">824</FONT>            // if this element has a namespace then treat it like XML<a name="line.824"></a>
<FONT color="green">825</FONT>            if (null != namespaceURI &amp;&amp; namespaceURI.length() &gt; 0)<a name="line.825"></a>
<FONT color="green">826</FONT>            {<a name="line.826"></a>
<FONT color="green">827</FONT>                super.startElement(namespaceURI, localName, name, atts);<a name="line.827"></a>
<FONT color="green">828</FONT>    <a name="line.828"></a>
<FONT color="green">829</FONT>                return;<a name="line.829"></a>
<FONT color="green">830</FONT>            }<a name="line.830"></a>
<FONT color="green">831</FONT>            <a name="line.831"></a>
<FONT color="green">832</FONT>            try<a name="line.832"></a>
<FONT color="green">833</FONT>            {<a name="line.833"></a>
<FONT color="green">834</FONT>                // getElemDesc2(name) is faster than getElemDesc(name)<a name="line.834"></a>
<FONT color="green">835</FONT>                ElemDesc elemDesc = getElemDesc2(name);<a name="line.835"></a>
<FONT color="green">836</FONT>                int elemFlags = elemDesc.getFlags();<a name="line.836"></a>
<FONT color="green">837</FONT>    <a name="line.837"></a>
<FONT color="green">838</FONT>                // deal with indentation issues first<a name="line.838"></a>
<FONT color="green">839</FONT>                if (m_doIndent)<a name="line.839"></a>
<FONT color="green">840</FONT>                {<a name="line.840"></a>
<FONT color="green">841</FONT>    <a name="line.841"></a>
<FONT color="green">842</FONT>                    boolean isBlockElement = (elemFlags &amp; ElemDesc.BLOCK) != 0;<a name="line.842"></a>
<FONT color="green">843</FONT>                    if (m_ispreserve)<a name="line.843"></a>
<FONT color="green">844</FONT>                        m_ispreserve = false;<a name="line.844"></a>
<FONT color="green">845</FONT>                    else if (<a name="line.845"></a>
<FONT color="green">846</FONT>                        (null != elemContext.m_elementName)<a name="line.846"></a>
<FONT color="green">847</FONT>                        &amp;&amp; (!m_inBlockElem<a name="line.847"></a>
<FONT color="green">848</FONT>                            || isBlockElement) /* &amp;&amp; !isWhiteSpaceSensitive */<a name="line.848"></a>
<FONT color="green">849</FONT>                        )<a name="line.849"></a>
<FONT color="green">850</FONT>                    {<a name="line.850"></a>
<FONT color="green">851</FONT>                        m_startNewLine = true;<a name="line.851"></a>
<FONT color="green">852</FONT>    <a name="line.852"></a>
<FONT color="green">853</FONT>                        indent();<a name="line.853"></a>
<FONT color="green">854</FONT>    <a name="line.854"></a>
<FONT color="green">855</FONT>                    }<a name="line.855"></a>
<FONT color="green">856</FONT>                    m_inBlockElem = !isBlockElement;<a name="line.856"></a>
<FONT color="green">857</FONT>                }<a name="line.857"></a>
<FONT color="green">858</FONT>    <a name="line.858"></a>
<FONT color="green">859</FONT>                // save any attributes for later processing<a name="line.859"></a>
<FONT color="green">860</FONT>                if (atts != null)<a name="line.860"></a>
<FONT color="green">861</FONT>                    addAttributes(atts);            <a name="line.861"></a>
<FONT color="green">862</FONT>    <a name="line.862"></a>
<FONT color="green">863</FONT>                m_isprevtext = false;<a name="line.863"></a>
<FONT color="green">864</FONT>                final java.io.Writer writer = m_writer;<a name="line.864"></a>
<FONT color="green">865</FONT>                writer.write('&lt;');<a name="line.865"></a>
<FONT color="green">866</FONT>                writer.write(name);<a name="line.866"></a>
<FONT color="green">867</FONT>    <a name="line.867"></a>
<FONT color="green">868</FONT>    <a name="line.868"></a>
<FONT color="green">869</FONT>    <a name="line.869"></a>
<FONT color="green">870</FONT>                if (m_tracer != null)<a name="line.870"></a>
<FONT color="green">871</FONT>                    firePseudoAttributes();<a name="line.871"></a>
<FONT color="green">872</FONT>                <a name="line.872"></a>
<FONT color="green">873</FONT>                if ((elemFlags &amp; ElemDesc.EMPTY) != 0)  <a name="line.873"></a>
<FONT color="green">874</FONT>                {<a name="line.874"></a>
<FONT color="green">875</FONT>                    // an optimization for elements which are expected<a name="line.875"></a>
<FONT color="green">876</FONT>                    // to be empty.<a name="line.876"></a>
<FONT color="green">877</FONT>                    m_elemContext = elemContext.push();<a name="line.877"></a>
<FONT color="green">878</FONT>                    /* XSLTC sometimes calls namespaceAfterStartElement()<a name="line.878"></a>
<FONT color="green">879</FONT>                     * so we need to remember the name<a name="line.879"></a>
<FONT color="green">880</FONT>                     */<a name="line.880"></a>
<FONT color="green">881</FONT>                    m_elemContext.m_elementName = name;<a name="line.881"></a>
<FONT color="green">882</FONT>                    m_elemContext.m_elementDesc = elemDesc;<a name="line.882"></a>
<FONT color="green">883</FONT>                    return;                <a name="line.883"></a>
<FONT color="green">884</FONT>                } <a name="line.884"></a>
<FONT color="green">885</FONT>                else<a name="line.885"></a>
<FONT color="green">886</FONT>                {<a name="line.886"></a>
<FONT color="green">887</FONT>                    elemContext = elemContext.push(namespaceURI,localName,name);<a name="line.887"></a>
<FONT color="green">888</FONT>                    m_elemContext = elemContext;<a name="line.888"></a>
<FONT color="green">889</FONT>                    elemContext.m_elementDesc = elemDesc;<a name="line.889"></a>
<FONT color="green">890</FONT>                    elemContext.m_isRaw = (elemFlags &amp; ElemDesc.RAW) != 0;<a name="line.890"></a>
<FONT color="green">891</FONT>                }<a name="line.891"></a>
<FONT color="green">892</FONT>                <a name="line.892"></a>
<FONT color="green">893</FONT>    <a name="line.893"></a>
<FONT color="green">894</FONT>                if ((elemFlags &amp; ElemDesc.HEADELEM) != 0)<a name="line.894"></a>
<FONT color="green">895</FONT>                {<a name="line.895"></a>
<FONT color="green">896</FONT>                    // This is the &lt;HEAD&gt; element, do some special processing<a name="line.896"></a>
<FONT color="green">897</FONT>                    closeStartTag();<a name="line.897"></a>
<FONT color="green">898</FONT>                    elemContext.m_startTagOpen = false;<a name="line.898"></a>
<FONT color="green">899</FONT>                    if (!m_omitMetaTag)<a name="line.899"></a>
<FONT color="green">900</FONT>                    {<a name="line.900"></a>
<FONT color="green">901</FONT>                        if (m_doIndent)<a name="line.901"></a>
<FONT color="green">902</FONT>                            indent();<a name="line.902"></a>
<FONT color="green">903</FONT>                        writer.write(<a name="line.903"></a>
<FONT color="green">904</FONT>                            "&lt;META http-equiv=\"Content-Type\" content=\"text/html; charset=");<a name="line.904"></a>
<FONT color="green">905</FONT>                        String encoding = getEncoding();<a name="line.905"></a>
<FONT color="green">906</FONT>                        String encode = Encodings.getMimeEncoding(encoding);<a name="line.906"></a>
<FONT color="green">907</FONT>                        writer.write(encode);<a name="line.907"></a>
<FONT color="green">908</FONT>                        writer.write("\"&gt;");<a name="line.908"></a>
<FONT color="green">909</FONT>                    }<a name="line.909"></a>
<FONT color="green">910</FONT>                }<a name="line.910"></a>
<FONT color="green">911</FONT>            }<a name="line.911"></a>
<FONT color="green">912</FONT>            catch (IOException e)<a name="line.912"></a>
<FONT color="green">913</FONT>            {<a name="line.913"></a>
<FONT color="green">914</FONT>                throw new SAXException(e);<a name="line.914"></a>
<FONT color="green">915</FONT>            }<a name="line.915"></a>
<FONT color="green">916</FONT>        }<a name="line.916"></a>
<FONT color="green">917</FONT>    <a name="line.917"></a>
<FONT color="green">918</FONT>        /**<a name="line.918"></a>
<FONT color="green">919</FONT>         *  Receive notification of the end of an element.<a name="line.919"></a>
<FONT color="green">920</FONT>         *<a name="line.920"></a>
<FONT color="green">921</FONT>         *<a name="line.921"></a>
<FONT color="green">922</FONT>         *  @param namespaceURI<a name="line.922"></a>
<FONT color="green">923</FONT>         *  @param localName<a name="line.923"></a>
<FONT color="green">924</FONT>         *  @param name The element type name<a name="line.924"></a>
<FONT color="green">925</FONT>         *  @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.925"></a>
<FONT color="green">926</FONT>         *             wrapping another exception.<a name="line.926"></a>
<FONT color="green">927</FONT>         */<a name="line.927"></a>
<FONT color="green">928</FONT>        public final void endElement(<a name="line.928"></a>
<FONT color="green">929</FONT>            final String namespaceURI,<a name="line.929"></a>
<FONT color="green">930</FONT>            final String localName,<a name="line.930"></a>
<FONT color="green">931</FONT>            final String name)<a name="line.931"></a>
<FONT color="green">932</FONT>            throws org.xml.sax.SAXException<a name="line.932"></a>
<FONT color="green">933</FONT>        {<a name="line.933"></a>
<FONT color="green">934</FONT>            // deal with any pending issues<a name="line.934"></a>
<FONT color="green">935</FONT>            if (m_cdataTagOpen)<a name="line.935"></a>
<FONT color="green">936</FONT>                closeCDATA();<a name="line.936"></a>
<FONT color="green">937</FONT>    <a name="line.937"></a>
<FONT color="green">938</FONT>            // if the element has a namespace, treat it like XML, not HTML<a name="line.938"></a>
<FONT color="green">939</FONT>            if (null != namespaceURI &amp;&amp; namespaceURI.length() &gt; 0)<a name="line.939"></a>
<FONT color="green">940</FONT>            {<a name="line.940"></a>
<FONT color="green">941</FONT>                super.endElement(namespaceURI, localName, name);<a name="line.941"></a>
<FONT color="green">942</FONT>    <a name="line.942"></a>
<FONT color="green">943</FONT>                return;<a name="line.943"></a>
<FONT color="green">944</FONT>            }<a name="line.944"></a>
<FONT color="green">945</FONT>    <a name="line.945"></a>
<FONT color="green">946</FONT>            try<a name="line.946"></a>
<FONT color="green">947</FONT>            {<a name="line.947"></a>
<FONT color="green">948</FONT>    <a name="line.948"></a>
<FONT color="green">949</FONT>                ElemContext elemContext = m_elemContext;<a name="line.949"></a>
<FONT color="green">950</FONT>                final ElemDesc elemDesc = elemContext.m_elementDesc;<a name="line.950"></a>
<FONT color="green">951</FONT>                final int elemFlags = elemDesc.getFlags();<a name="line.951"></a>
<FONT color="green">952</FONT>                final boolean elemEmpty = (elemFlags &amp; ElemDesc.EMPTY) != 0;<a name="line.952"></a>
<FONT color="green">953</FONT>    <a name="line.953"></a>
<FONT color="green">954</FONT>                // deal with any indentation issues<a name="line.954"></a>
<FONT color="green">955</FONT>                if (m_doIndent)<a name="line.955"></a>
<FONT color="green">956</FONT>                {<a name="line.956"></a>
<FONT color="green">957</FONT>                    final boolean isBlockElement = (elemFlags&amp;ElemDesc.BLOCK) != 0;<a name="line.957"></a>
<FONT color="green">958</FONT>                    boolean shouldIndent = false;<a name="line.958"></a>
<FONT color="green">959</FONT>    <a name="line.959"></a>
<FONT color="green">960</FONT>                    if (m_ispreserve)<a name="line.960"></a>
<FONT color="green">961</FONT>                    {<a name="line.961"></a>
<FONT color="green">962</FONT>                        m_ispreserve = false;<a name="line.962"></a>
<FONT color="green">963</FONT>                    }<a name="line.963"></a>
<FONT color="green">964</FONT>                    else if (m_doIndent &amp;&amp; (!m_inBlockElem || isBlockElement))<a name="line.964"></a>
<FONT color="green">965</FONT>                    {<a name="line.965"></a>
<FONT color="green">966</FONT>                        m_startNewLine = true;<a name="line.966"></a>
<FONT color="green">967</FONT>                        shouldIndent = true;<a name="line.967"></a>
<FONT color="green">968</FONT>                    }<a name="line.968"></a>
<FONT color="green">969</FONT>                    if (!elemContext.m_startTagOpen &amp;&amp; shouldIndent)<a name="line.969"></a>
<FONT color="green">970</FONT>                        indent(elemContext.m_currentElemDepth - 1);<a name="line.970"></a>
<FONT color="green">971</FONT>                    m_inBlockElem = !isBlockElement;<a name="line.971"></a>
<FONT color="green">972</FONT>                }<a name="line.972"></a>
<FONT color="green">973</FONT>    <a name="line.973"></a>
<FONT color="green">974</FONT>                final java.io.Writer writer = m_writer;<a name="line.974"></a>
<FONT color="green">975</FONT>                if (!elemContext.m_startTagOpen)<a name="line.975"></a>
<FONT color="green">976</FONT>                {<a name="line.976"></a>
<FONT color="green">977</FONT>                    writer.write("&lt;/");<a name="line.977"></a>
<FONT color="green">978</FONT>                    writer.write(name);<a name="line.978"></a>
<FONT color="green">979</FONT>                    writer.write('&gt;');<a name="line.979"></a>
<FONT color="green">980</FONT>                }<a name="line.980"></a>
<FONT color="green">981</FONT>                else<a name="line.981"></a>
<FONT color="green">982</FONT>                {<a name="line.982"></a>
<FONT color="green">983</FONT>                    // the start-tag open when this method was called,<a name="line.983"></a>
<FONT color="green">984</FONT>                    // so we need to process it now.<a name="line.984"></a>
<FONT color="green">985</FONT>                    <a name="line.985"></a>
<FONT color="green">986</FONT>                    if (m_tracer != null)<a name="line.986"></a>
<FONT color="green">987</FONT>                        super.fireStartElem(name);<a name="line.987"></a>
<FONT color="green">988</FONT>    <a name="line.988"></a>
<FONT color="green">989</FONT>                    // the starting tag was still open when we received this endElement() call<a name="line.989"></a>
<FONT color="green">990</FONT>                    // so we need to process any gathered attributes NOW, before they go away.<a name="line.990"></a>
<FONT color="green">991</FONT>                    int nAttrs = m_attributes.getLength();<a name="line.991"></a>
<FONT color="green">992</FONT>                    if (nAttrs &gt; 0)<a name="line.992"></a>
<FONT color="green">993</FONT>                    {<a name="line.993"></a>
<FONT color="green">994</FONT>                        processAttributes(m_writer, nAttrs);<a name="line.994"></a>
<FONT color="green">995</FONT>                        // clear attributes object for re-use with next element<a name="line.995"></a>
<FONT color="green">996</FONT>                        m_attributes.clear();<a name="line.996"></a>
<FONT color="green">997</FONT>                    }<a name="line.997"></a>
<FONT color="green">998</FONT>                    if (!elemEmpty)<a name="line.998"></a>
<FONT color="green">999</FONT>                    {<a name="line.999"></a>
<FONT color="green">1000</FONT>                        // As per Dave/Paul recommendation 12/06/2000<a name="line.1000"></a>
<FONT color="green">1001</FONT>                        // if (shouldIndent)<a name="line.1001"></a>
<FONT color="green">1002</FONT>                        // writer.write('&gt;');<a name="line.1002"></a>
<FONT color="green">1003</FONT>                        //  indent(m_currentIndent);<a name="line.1003"></a>
<FONT color="green">1004</FONT>    <a name="line.1004"></a>
<FONT color="green">1005</FONT>                        writer.write("&gt;&lt;/");<a name="line.1005"></a>
<FONT color="green">1006</FONT>                        writer.write(name);<a name="line.1006"></a>
<FONT color="green">1007</FONT>                        writer.write('&gt;');<a name="line.1007"></a>
<FONT color="green">1008</FONT>                    }<a name="line.1008"></a>
<FONT color="green">1009</FONT>                    else<a name="line.1009"></a>
<FONT color="green">1010</FONT>                    {<a name="line.1010"></a>
<FONT color="green">1011</FONT>                        writer.write('&gt;');<a name="line.1011"></a>
<FONT color="green">1012</FONT>                    }<a name="line.1012"></a>
<FONT color="green">1013</FONT>                }<a name="line.1013"></a>
<FONT color="green">1014</FONT>                <a name="line.1014"></a>
<FONT color="green">1015</FONT>                // clean up because the element has ended<a name="line.1015"></a>
<FONT color="green">1016</FONT>                if ((elemFlags &amp; ElemDesc.WHITESPACESENSITIVE) != 0)<a name="line.1016"></a>
<FONT color="green">1017</FONT>                    m_ispreserve = true;<a name="line.1017"></a>
<FONT color="green">1018</FONT>                m_isprevtext = false;<a name="line.1018"></a>
<FONT color="green">1019</FONT>    <a name="line.1019"></a>
<FONT color="green">1020</FONT>                // fire off the end element event<a name="line.1020"></a>
<FONT color="green">1021</FONT>                if (m_tracer != null)<a name="line.1021"></a>
<FONT color="green">1022</FONT>                    super.fireEndElem(name);            <a name="line.1022"></a>
<FONT color="green">1023</FONT>                               <a name="line.1023"></a>
<FONT color="green">1024</FONT>                // OPTIMIZE-EMPTY                <a name="line.1024"></a>
<FONT color="green">1025</FONT>                if (elemEmpty)<a name="line.1025"></a>
<FONT color="green">1026</FONT>                {<a name="line.1026"></a>
<FONT color="green">1027</FONT>                    // a quick exit if the HTML element had no children.<a name="line.1027"></a>
<FONT color="green">1028</FONT>                    // This block of code can be removed if the corresponding block of code<a name="line.1028"></a>
<FONT color="green">1029</FONT>                    // in startElement() also labeled with "OPTIMIZE-EMPTY" is also removed<a name="line.1029"></a>
<FONT color="green">1030</FONT>                    m_elemContext = elemContext.m_prev;<a name="line.1030"></a>
<FONT color="green">1031</FONT>                    return;<a name="line.1031"></a>
<FONT color="green">1032</FONT>                }<a name="line.1032"></a>
<FONT color="green">1033</FONT>    <a name="line.1033"></a>
<FONT color="green">1034</FONT>                // some more clean because the element has ended. <a name="line.1034"></a>
<FONT color="green">1035</FONT>                if (!elemContext.m_startTagOpen)<a name="line.1035"></a>
<FONT color="green">1036</FONT>                {<a name="line.1036"></a>
<FONT color="green">1037</FONT>                    if (m_doIndent &amp;&amp; !m_preserves.isEmpty())<a name="line.1037"></a>
<FONT color="green">1038</FONT>                        m_preserves.pop();<a name="line.1038"></a>
<FONT color="green">1039</FONT>                }<a name="line.1039"></a>
<FONT color="green">1040</FONT>                m_elemContext = elemContext.m_prev;<a name="line.1040"></a>
<FONT color="green">1041</FONT>    //            m_isRawStack.pop();<a name="line.1041"></a>
<FONT color="green">1042</FONT>            }<a name="line.1042"></a>
<FONT color="green">1043</FONT>            catch (IOException e)<a name="line.1043"></a>
<FONT color="green">1044</FONT>            {<a name="line.1044"></a>
<FONT color="green">1045</FONT>                throw new SAXException(e);<a name="line.1045"></a>
<FONT color="green">1046</FONT>            }<a name="line.1046"></a>
<FONT color="green">1047</FONT>        }<a name="line.1047"></a>
<FONT color="green">1048</FONT>    <a name="line.1048"></a>
<FONT color="green">1049</FONT>        /**<a name="line.1049"></a>
<FONT color="green">1050</FONT>         * Process an attribute.<a name="line.1050"></a>
<FONT color="green">1051</FONT>         * @param   writer The writer to write the processed output to.<a name="line.1051"></a>
<FONT color="green">1052</FONT>         * @param   name   The name of the attribute.<a name="line.1052"></a>
<FONT color="green">1053</FONT>         * @param   value   The value of the attribute.<a name="line.1053"></a>
<FONT color="green">1054</FONT>         * @param   elemDesc The description of the HTML element <a name="line.1054"></a>
<FONT color="green">1055</FONT>         *           that has this attribute.<a name="line.1055"></a>
<FONT color="green">1056</FONT>         *<a name="line.1056"></a>
<FONT color="green">1057</FONT>         * @throws org.xml.sax.SAXException<a name="line.1057"></a>
<FONT color="green">1058</FONT>         */<a name="line.1058"></a>
<FONT color="green">1059</FONT>        protected void processAttribute(<a name="line.1059"></a>
<FONT color="green">1060</FONT>            java.io.Writer writer,<a name="line.1060"></a>
<FONT color="green">1061</FONT>            String name,<a name="line.1061"></a>
<FONT color="green">1062</FONT>            String value,<a name="line.1062"></a>
<FONT color="green">1063</FONT>            ElemDesc elemDesc)<a name="line.1063"></a>
<FONT color="green">1064</FONT>            throws IOException<a name="line.1064"></a>
<FONT color="green">1065</FONT>        {<a name="line.1065"></a>
<FONT color="green">1066</FONT>            writer.write(' ');<a name="line.1066"></a>
<FONT color="green">1067</FONT>    <a name="line.1067"></a>
<FONT color="green">1068</FONT>            if (   ((value.length() == 0) || value.equalsIgnoreCase(name))<a name="line.1068"></a>
<FONT color="green">1069</FONT>                &amp;&amp; elemDesc != null <a name="line.1069"></a>
<FONT color="green">1070</FONT>                &amp;&amp; elemDesc.isAttrFlagSet(name, ElemDesc.ATTREMPTY))<a name="line.1070"></a>
<FONT color="green">1071</FONT>            {<a name="line.1071"></a>
<FONT color="green">1072</FONT>                writer.write(name);<a name="line.1072"></a>
<FONT color="green">1073</FONT>            }<a name="line.1073"></a>
<FONT color="green">1074</FONT>            else<a name="line.1074"></a>
<FONT color="green">1075</FONT>            {<a name="line.1075"></a>
<FONT color="green">1076</FONT>                // %REVIEW% %OPT%<a name="line.1076"></a>
<FONT color="green">1077</FONT>                // Two calls to single-char write may NOT<a name="line.1077"></a>
<FONT color="green">1078</FONT>                // be more efficient than one to string-write...<a name="line.1078"></a>
<FONT color="green">1079</FONT>                writer.write(name);<a name="line.1079"></a>
<FONT color="green">1080</FONT>                writer.write("=\"");<a name="line.1080"></a>
<FONT color="green">1081</FONT>                if (   elemDesc != null<a name="line.1081"></a>
<FONT color="green">1082</FONT>                    &amp;&amp; elemDesc.isAttrFlagSet(name, ElemDesc.ATTRURL))<a name="line.1082"></a>
<FONT color="green">1083</FONT>                    writeAttrURI(writer, value, m_specialEscapeURLs);<a name="line.1083"></a>
<FONT color="green">1084</FONT>                else<a name="line.1084"></a>
<FONT color="green">1085</FONT>                    writeAttrString(writer, value, this.getEncoding());<a name="line.1085"></a>
<FONT color="green">1086</FONT>                writer.write('"');<a name="line.1086"></a>
<FONT color="green">1087</FONT>    <a name="line.1087"></a>
<FONT color="green">1088</FONT>            }<a name="line.1088"></a>
<FONT color="green">1089</FONT>        }<a name="line.1089"></a>
<FONT color="green">1090</FONT>    <a name="line.1090"></a>
<FONT color="green">1091</FONT>        /**<a name="line.1091"></a>
<FONT color="green">1092</FONT>         * Tell if a character is an ASCII digit.<a name="line.1092"></a>
<FONT color="green">1093</FONT>         */<a name="line.1093"></a>
<FONT color="green">1094</FONT>        private boolean isASCIIDigit(char c)<a name="line.1094"></a>
<FONT color="green">1095</FONT>        {<a name="line.1095"></a>
<FONT color="green">1096</FONT>            return (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.1096"></a>
<FONT color="green">1097</FONT>        }<a name="line.1097"></a>
<FONT color="green">1098</FONT>    <a name="line.1098"></a>
<FONT color="green">1099</FONT>        /**<a name="line.1099"></a>
<FONT color="green">1100</FONT>         * Make an integer into an HH hex value.<a name="line.1100"></a>
<FONT color="green">1101</FONT>         * Does no checking on the size of the input, since this <a name="line.1101"></a>
<FONT color="green">1102</FONT>         * is only meant to be used locally by writeAttrURI.<a name="line.1102"></a>
<FONT color="green">1103</FONT>         * <a name="line.1103"></a>
<FONT color="green">1104</FONT>         * @param i must be a value less than 255.<a name="line.1104"></a>
<FONT color="green">1105</FONT>         * <a name="line.1105"></a>
<FONT color="green">1106</FONT>         * @return should be a two character string.<a name="line.1106"></a>
<FONT color="green">1107</FONT>         */<a name="line.1107"></a>
<FONT color="green">1108</FONT>        private static String makeHHString(int i)<a name="line.1108"></a>
<FONT color="green">1109</FONT>        {<a name="line.1109"></a>
<FONT color="green">1110</FONT>            String s = Integer.toHexString(i).toUpperCase();<a name="line.1110"></a>
<FONT color="green">1111</FONT>            if (s.length() == 1)<a name="line.1111"></a>
<FONT color="green">1112</FONT>            {<a name="line.1112"></a>
<FONT color="green">1113</FONT>                s = "0" + s;<a name="line.1113"></a>
<FONT color="green">1114</FONT>            }<a name="line.1114"></a>
<FONT color="green">1115</FONT>            return s;<a name="line.1115"></a>
<FONT color="green">1116</FONT>        }<a name="line.1116"></a>
<FONT color="green">1117</FONT>    <a name="line.1117"></a>
<FONT color="green">1118</FONT>        /**<a name="line.1118"></a>
<FONT color="green">1119</FONT>        * Dmitri Ilyin: Makes sure if the String is HH encoded sign.<a name="line.1119"></a>
<FONT color="green">1120</FONT>        * @param str must be 2 characters long<a name="line.1120"></a>
<FONT color="green">1121</FONT>        *<a name="line.1121"></a>
<FONT color="green">1122</FONT>        * @return true or false<a name="line.1122"></a>
<FONT color="green">1123</FONT>        */<a name="line.1123"></a>
<FONT color="green">1124</FONT>        private boolean isHHSign(String str)<a name="line.1124"></a>
<FONT color="green">1125</FONT>        {<a name="line.1125"></a>
<FONT color="green">1126</FONT>            boolean sign = true;<a name="line.1126"></a>
<FONT color="green">1127</FONT>            try<a name="line.1127"></a>
<FONT color="green">1128</FONT>            {<a name="line.1128"></a>
<FONT color="green">1129</FONT>                char r = (char) Integer.parseInt(str, 16);<a name="line.1129"></a>
<FONT color="green">1130</FONT>            }<a name="line.1130"></a>
<FONT color="green">1131</FONT>            catch (NumberFormatException e)<a name="line.1131"></a>
<FONT color="green">1132</FONT>            {<a name="line.1132"></a>
<FONT color="green">1133</FONT>                sign = false;<a name="line.1133"></a>
<FONT color="green">1134</FONT>            }<a name="line.1134"></a>
<FONT color="green">1135</FONT>            return sign;<a name="line.1135"></a>
<FONT color="green">1136</FONT>        }<a name="line.1136"></a>
<FONT color="green">1137</FONT>    <a name="line.1137"></a>
<FONT color="green">1138</FONT>        /**<a name="line.1138"></a>
<FONT color="green">1139</FONT>         * Write the specified &lt;var&gt;string&lt;/var&gt; after substituting non ASCII characters,<a name="line.1139"></a>
<FONT color="green">1140</FONT>         * with &lt;CODE&gt;%HH&lt;/CODE&gt;, where HH is the hex of the byte value.<a name="line.1140"></a>
<FONT color="green">1141</FONT>         *<a name="line.1141"></a>
<FONT color="green">1142</FONT>         * @param   string      String to convert to XML format.<a name="line.1142"></a>
<FONT color="green">1143</FONT>         * @param doURLEscaping True if we should try to encode as <a name="line.1143"></a>
<FONT color="green">1144</FONT>         *                      per http://www.ietf.org/rfc/rfc2396.txt.<a name="line.1144"></a>
<FONT color="green">1145</FONT>         *<a name="line.1145"></a>
<FONT color="green">1146</FONT>         * @throws org.xml.sax.SAXException if a bad surrogate pair is detected.<a name="line.1146"></a>
<FONT color="green">1147</FONT>         */<a name="line.1147"></a>
<FONT color="green">1148</FONT>        public void writeAttrURI(<a name="line.1148"></a>
<FONT color="green">1149</FONT>            final java.io.Writer writer, String string, boolean doURLEscaping)<a name="line.1149"></a>
<FONT color="green">1150</FONT>            throws IOException<a name="line.1150"></a>
<FONT color="green">1151</FONT>        {<a name="line.1151"></a>
<FONT color="green">1152</FONT>            // http://www.ietf.org/rfc/rfc2396.txt says:<a name="line.1152"></a>
<FONT color="green">1153</FONT>            // A URI is always in an "escaped" form, since escaping or unescaping a<a name="line.1153"></a>
<FONT color="green">1154</FONT>            // completed URI might change its semantics.  Normally, the only time<a name="line.1154"></a>
<FONT color="green">1155</FONT>            // escape encodings can safely be made is when the URI is being created<a name="line.1155"></a>
<FONT color="green">1156</FONT>            // from its component parts; each component may have its own set of<a name="line.1156"></a>
<FONT color="green">1157</FONT>            // characters that are reserved, so only the mechanism responsible for<a name="line.1157"></a>
<FONT color="green">1158</FONT>            // generating or interpreting that component can determine whether or<a name="line.1158"></a>
<FONT color="green">1159</FONT>            // not escaping a character will change its semantics. Likewise, a URI<a name="line.1159"></a>
<FONT color="green">1160</FONT>            // must be separated into its components before the escaped characters<a name="line.1160"></a>
<FONT color="green">1161</FONT>            // within those components can be safely decoded.<a name="line.1161"></a>
<FONT color="green">1162</FONT>            //<a name="line.1162"></a>
<FONT color="green">1163</FONT>            // ...So we do our best to do limited escaping of the URL, without <a name="line.1163"></a>
<FONT color="green">1164</FONT>            // causing damage.  If the URL is already properly escaped, in theory, this <a name="line.1164"></a>
<FONT color="green">1165</FONT>            // function should not change the string value.<a name="line.1165"></a>
<FONT color="green">1166</FONT>    <a name="line.1166"></a>
<FONT color="green">1167</FONT>            final int end = string.length();<a name="line.1167"></a>
<FONT color="green">1168</FONT>            if (end &gt; m_attrBuff.length)<a name="line.1168"></a>
<FONT color="green">1169</FONT>            {<a name="line.1169"></a>
<FONT color="green">1170</FONT>               m_attrBuff = new char[end*2 + 1];               <a name="line.1170"></a>
<FONT color="green">1171</FONT>            }<a name="line.1171"></a>
<FONT color="green">1172</FONT>            string.getChars(0,end, m_attrBuff, 0); <a name="line.1172"></a>
<FONT color="green">1173</FONT>            final char[] chars = m_attrBuff;<a name="line.1173"></a>
<FONT color="green">1174</FONT>    <a name="line.1174"></a>
<FONT color="green">1175</FONT>            int cleanStart = 0;<a name="line.1175"></a>
<FONT color="green">1176</FONT>            int cleanLength = 0;<a name="line.1176"></a>
<FONT color="green">1177</FONT>            <a name="line.1177"></a>
<FONT color="green">1178</FONT>            <a name="line.1178"></a>
<FONT color="green">1179</FONT>            char ch = 0;<a name="line.1179"></a>
<FONT color="green">1180</FONT>            for (int i = 0; i &lt; end; i++)<a name="line.1180"></a>
<FONT color="green">1181</FONT>            {<a name="line.1181"></a>
<FONT color="green">1182</FONT>                ch = chars[i];<a name="line.1182"></a>
<FONT color="green">1183</FONT>    <a name="line.1183"></a>
<FONT color="green">1184</FONT>                if ((ch &lt; 32) || (ch &gt; 126))<a name="line.1184"></a>
<FONT color="green">1185</FONT>                {<a name="line.1185"></a>
<FONT color="green">1186</FONT>                    if (cleanLength &gt; 0)<a name="line.1186"></a>
<FONT color="green">1187</FONT>                    {<a name="line.1187"></a>
<FONT color="green">1188</FONT>                        writer.write(chars, cleanStart, cleanLength);<a name="line.1188"></a>
<FONT color="green">1189</FONT>                        cleanLength = 0;<a name="line.1189"></a>
<FONT color="green">1190</FONT>                    }<a name="line.1190"></a>
<FONT color="green">1191</FONT>                    if (doURLEscaping)<a name="line.1191"></a>
<FONT color="green">1192</FONT>                    {<a name="line.1192"></a>
<FONT color="green">1193</FONT>                        // Encode UTF16 to UTF8.<a name="line.1193"></a>
<FONT color="green">1194</FONT>                        // Reference is Unicode, A Primer, by Tony Graham.<a name="line.1194"></a>
<FONT color="green">1195</FONT>                        // Page 92.<a name="line.1195"></a>
<FONT color="green">1196</FONT>    <a name="line.1196"></a>
<FONT color="green">1197</FONT>                        // Note that Kay doesn't escape 0x20...<a name="line.1197"></a>
<FONT color="green">1198</FONT>                        //  if(ch == 0x20) // Not sure about this... -sb<a name="line.1198"></a>
<FONT color="green">1199</FONT>                        //  {<a name="line.1199"></a>
<FONT color="green">1200</FONT>                        //    writer.write(ch);<a name="line.1200"></a>
<FONT color="green">1201</FONT>                        //  }<a name="line.1201"></a>
<FONT color="green">1202</FONT>                        //  else <a name="line.1202"></a>
<FONT color="green">1203</FONT>                        if (ch &lt;= 0x7F)<a name="line.1203"></a>
<FONT color="green">1204</FONT>                        {<a name="line.1204"></a>
<FONT color="green">1205</FONT>                            writer.write('%');<a name="line.1205"></a>
<FONT color="green">1206</FONT>                            writer.write(makeHHString(ch));<a name="line.1206"></a>
<FONT color="green">1207</FONT>                        }<a name="line.1207"></a>
<FONT color="green">1208</FONT>                        else if (ch &lt;= 0x7FF)<a name="line.1208"></a>
<FONT color="green">1209</FONT>                        {<a name="line.1209"></a>
<FONT color="green">1210</FONT>                            // Clear low 6 bits before rotate, put high 4 bits in low byte, <a name="line.1210"></a>
<FONT color="green">1211</FONT>                            // and set two high bits.<a name="line.1211"></a>
<FONT color="green">1212</FONT>                            int high = (ch &gt;&gt; 6) | 0xC0;<a name="line.1212"></a>
<FONT color="green">1213</FONT>                            int low = (ch &amp; 0x3F) | 0x80;<a name="line.1213"></a>
<FONT color="green">1214</FONT>                            // First 6 bits, + high bit<a name="line.1214"></a>
<FONT color="green">1215</FONT>                            writer.write('%');<a name="line.1215"></a>
<FONT color="green">1216</FONT>                            writer.write(makeHHString(high));<a name="line.1216"></a>
<FONT color="green">1217</FONT>                            writer.write('%');<a name="line.1217"></a>
<FONT color="green">1218</FONT>                            writer.write(makeHHString(low));<a name="line.1218"></a>
<FONT color="green">1219</FONT>                        }<a name="line.1219"></a>
<FONT color="green">1220</FONT>                        else if (Encodings.isHighUTF16Surrogate(ch)) // high surrogate<a name="line.1220"></a>
<FONT color="green">1221</FONT>                        {<a name="line.1221"></a>
<FONT color="green">1222</FONT>                            // I'm sure this can be done in 3 instructions, but I choose <a name="line.1222"></a>
<FONT color="green">1223</FONT>                            // to try and do it exactly like it is done in the book, at least <a name="line.1223"></a>
<FONT color="green">1224</FONT>                            // until we are sure this is totally clean.  I don't think performance <a name="line.1224"></a>
<FONT color="green">1225</FONT>                            // is a big issue with this particular function, though I could be <a name="line.1225"></a>
<FONT color="green">1226</FONT>                            // wrong.  Also, the stuff below clearly does more masking than <a name="line.1226"></a>
<FONT color="green">1227</FONT>                            // it needs to do.<a name="line.1227"></a>
<FONT color="green">1228</FONT>    <a name="line.1228"></a>
<FONT color="green">1229</FONT>                            // Clear high 6 bits.<a name="line.1229"></a>
<FONT color="green">1230</FONT>                            int highSurrogate = ((int) ch) &amp; 0x03FF;<a name="line.1230"></a>
<FONT color="green">1231</FONT>    <a name="line.1231"></a>
<FONT color="green">1232</FONT>                            // Middle 4 bits (wwww) + 1<a name="line.1232"></a>
<FONT color="green">1233</FONT>                            // "Note that the value of wwww from the high surrogate bit pattern<a name="line.1233"></a>
<FONT color="green">1234</FONT>                            // is incremented to make the uuuuu bit pattern in the scalar value <a name="line.1234"></a>
<FONT color="green">1235</FONT>                            // so the surrogate pair don't address the BMP."<a name="line.1235"></a>
<FONT color="green">1236</FONT>                            int wwww = ((highSurrogate &amp; 0x03C0) &gt;&gt; 6);<a name="line.1236"></a>
<FONT color="green">1237</FONT>                            int uuuuu = wwww + 1;<a name="line.1237"></a>
<FONT color="green">1238</FONT>    <a name="line.1238"></a>
<FONT color="green">1239</FONT>                            // next 4 bits<a name="line.1239"></a>
<FONT color="green">1240</FONT>                            int zzzz = (highSurrogate &amp; 0x003C) &gt;&gt; 2;<a name="line.1240"></a>
<FONT color="green">1241</FONT>    <a name="line.1241"></a>
<FONT color="green">1242</FONT>                            // low 2 bits<a name="line.1242"></a>
<FONT color="green">1243</FONT>                            int yyyyyy = ((highSurrogate &amp; 0x0003) &lt;&lt; 4) &amp; 0x30;<a name="line.1243"></a>
<FONT color="green">1244</FONT>    <a name="line.1244"></a>
<FONT color="green">1245</FONT>                            // Get low surrogate character.<a name="line.1245"></a>
<FONT color="green">1246</FONT>                            ch = chars[++i];<a name="line.1246"></a>
<FONT color="green">1247</FONT>    <a name="line.1247"></a>
<FONT color="green">1248</FONT>                            // Clear high 6 bits.<a name="line.1248"></a>
<FONT color="green">1249</FONT>                            int lowSurrogate = ((int) ch) &amp; 0x03FF;<a name="line.1249"></a>
<FONT color="green">1250</FONT>    <a name="line.1250"></a>
<FONT color="green">1251</FONT>                            // put the middle 4 bits into the bottom of yyyyyy (byte 3)<a name="line.1251"></a>
<FONT color="green">1252</FONT>                            yyyyyy = yyyyyy | ((lowSurrogate &amp; 0x03C0) &gt;&gt; 6);<a name="line.1252"></a>
<FONT color="green">1253</FONT>    <a name="line.1253"></a>
<FONT color="green">1254</FONT>                            // bottom 6 bits.<a name="line.1254"></a>
<FONT color="green">1255</FONT>                            int xxxxxx = (lowSurrogate &amp; 0x003F);<a name="line.1255"></a>
<FONT color="green">1256</FONT>    <a name="line.1256"></a>
<FONT color="green">1257</FONT>                            int byte1 = 0xF0 | (uuuuu &gt;&gt; 2); // top 3 bits of uuuuu<a name="line.1257"></a>
<FONT color="green">1258</FONT>                            int byte2 =<a name="line.1258"></a>
<FONT color="green">1259</FONT>                                0x80 | (((uuuuu &amp; 0x03) &lt;&lt; 4) &amp; 0x30) | zzzz;<a name="line.1259"></a>
<FONT color="green">1260</FONT>                            int byte3 = 0x80 | yyyyyy;<a name="line.1260"></a>
<FONT color="green">1261</FONT>                            int byte4 = 0x80 | xxxxxx;<a name="line.1261"></a>
<FONT color="green">1262</FONT>    <a name="line.1262"></a>
<FONT color="green">1263</FONT>                            writer.write('%');<a name="line.1263"></a>
<FONT color="green">1264</FONT>                            writer.write(makeHHString(byte1));<a name="line.1264"></a>
<FONT color="green">1265</FONT>                            writer.write('%');<a name="line.1265"></a>
<FONT color="green">1266</FONT>                            writer.write(makeHHString(byte2));<a name="line.1266"></a>
<FONT color="green">1267</FONT>                            writer.write('%');<a name="line.1267"></a>
<FONT color="green">1268</FONT>                            writer.write(makeHHString(byte3));<a name="line.1268"></a>
<FONT color="green">1269</FONT>                            writer.write('%');<a name="line.1269"></a>
<FONT color="green">1270</FONT>                            writer.write(makeHHString(byte4));<a name="line.1270"></a>
<FONT color="green">1271</FONT>                        }<a name="line.1271"></a>
<FONT color="green">1272</FONT>                        else<a name="line.1272"></a>
<FONT color="green">1273</FONT>                        {<a name="line.1273"></a>
<FONT color="green">1274</FONT>                            int high = (ch &gt;&gt; 12) | 0xE0; // top 4 bits<a name="line.1274"></a>
<FONT color="green">1275</FONT>                            int middle = ((ch &amp; 0x0FC0) &gt;&gt; 6) | 0x80;<a name="line.1275"></a>
<FONT color="green">1276</FONT>                            // middle 6 bits<a name="line.1276"></a>
<FONT color="green">1277</FONT>                            int low = (ch &amp; 0x3F) | 0x80;<a name="line.1277"></a>
<FONT color="green">1278</FONT>                            // First 6 bits, + high bit<a name="line.1278"></a>
<FONT color="green">1279</FONT>                            writer.write('%');<a name="line.1279"></a>
<FONT color="green">1280</FONT>                            writer.write(makeHHString(high));<a name="line.1280"></a>
<FONT color="green">1281</FONT>                            writer.write('%');<a name="line.1281"></a>
<FONT color="green">1282</FONT>                            writer.write(makeHHString(middle));<a name="line.1282"></a>
<FONT color="green">1283</FONT>                            writer.write('%');<a name="line.1283"></a>
<FONT color="green">1284</FONT>                            writer.write(makeHHString(low));<a name="line.1284"></a>
<FONT color="green">1285</FONT>                        }<a name="line.1285"></a>
<FONT color="green">1286</FONT>    <a name="line.1286"></a>
<FONT color="green">1287</FONT>                    }<a name="line.1287"></a>
<FONT color="green">1288</FONT>                    else if (escapingNotNeeded(ch))<a name="line.1288"></a>
<FONT color="green">1289</FONT>                    {<a name="line.1289"></a>
<FONT color="green">1290</FONT>                        writer.write(ch);<a name="line.1290"></a>
<FONT color="green">1291</FONT>                    }<a name="line.1291"></a>
<FONT color="green">1292</FONT>                    else<a name="line.1292"></a>
<FONT color="green">1293</FONT>                    {<a name="line.1293"></a>
<FONT color="green">1294</FONT>                        writer.write("&amp;#");<a name="line.1294"></a>
<FONT color="green">1295</FONT>                        writer.write(Integer.toString(ch));<a name="line.1295"></a>
<FONT color="green">1296</FONT>                        writer.write(';');<a name="line.1296"></a>
<FONT color="green">1297</FONT>                    }<a name="line.1297"></a>
<FONT color="green">1298</FONT>                    // In this character range we have first written out any previously accumulated <a name="line.1298"></a>
<FONT color="green">1299</FONT>                    // "clean" characters, then processed the current more complicated character,<a name="line.1299"></a>
<FONT color="green">1300</FONT>                    // which may have incremented "i".<a name="line.1300"></a>
<FONT color="green">1301</FONT>                    // We now we reset the next possible clean character.<a name="line.1301"></a>
<FONT color="green">1302</FONT>                    cleanStart = i + 1;<a name="line.1302"></a>
<FONT color="green">1303</FONT>                }<a name="line.1303"></a>
<FONT color="green">1304</FONT>                // Since http://www.ietf.org/rfc/rfc2396.txt refers to the URI grammar as<a name="line.1304"></a>
<FONT color="green">1305</FONT>                // not allowing quotes in the URI proper syntax, nor in the fragment <a name="line.1305"></a>
<FONT color="green">1306</FONT>                // identifier, we believe that it's OK to double escape quotes.<a name="line.1306"></a>
<FONT color="green">1307</FONT>                else if (ch == '"')<a name="line.1307"></a>
<FONT color="green">1308</FONT>                {<a name="line.1308"></a>
<FONT color="green">1309</FONT>                    // If the character is a '%' number number, try to avoid double-escaping.<a name="line.1309"></a>
<FONT color="green">1310</FONT>                    // There is a question if this is legal behavior.<a name="line.1310"></a>
<FONT color="green">1311</FONT>    <a name="line.1311"></a>
<FONT color="green">1312</FONT>                    // Dmitri Ilyin: to check if '%' number number is invalid. It must be checked if %xx is a sign, that would be encoded<a name="line.1312"></a>
<FONT color="green">1313</FONT>                    // The encoded signes are in Hex form. So %xx my be in form %3C that is "&lt;" sign. I will try to change here a little.<a name="line.1313"></a>
<FONT color="green">1314</FONT>    <a name="line.1314"></a>
<FONT color="green">1315</FONT>                    //        if( ((i+2) &lt; len) &amp;&amp; isASCIIDigit(stringArray[i+1]) &amp;&amp; isASCIIDigit(stringArray[i+2]) )<a name="line.1315"></a>
<FONT color="green">1316</FONT>    <a name="line.1316"></a>
<FONT color="green">1317</FONT>                    // We are no longer escaping '%'<a name="line.1317"></a>
<FONT color="green">1318</FONT>    <a name="line.1318"></a>
<FONT color="green">1319</FONT>                    if (cleanLength &gt; 0)<a name="line.1319"></a>
<FONT color="green">1320</FONT>                    {<a name="line.1320"></a>
<FONT color="green">1321</FONT>                        writer.write(chars, cleanStart, cleanLength);<a name="line.1321"></a>
<FONT color="green">1322</FONT>                        cleanLength = 0;<a name="line.1322"></a>
<FONT color="green">1323</FONT>                    }   <a name="line.1323"></a>
<FONT color="green">1324</FONT>                    <a name="line.1324"></a>
<FONT color="green">1325</FONT>                    <a name="line.1325"></a>
<FONT color="green">1326</FONT>                    // Mike Kay encodes this as &amp;#34;, so he may know something I don't?<a name="line.1326"></a>
<FONT color="green">1327</FONT>                    if (doURLEscaping)<a name="line.1327"></a>
<FONT color="green">1328</FONT>                        writer.write("%22");<a name="line.1328"></a>
<FONT color="green">1329</FONT>                    else<a name="line.1329"></a>
<FONT color="green">1330</FONT>                        writer.write("&amp;quot;"); // we have to escape this, I guess.<a name="line.1330"></a>
<FONT color="green">1331</FONT>    <a name="line.1331"></a>
<FONT color="green">1332</FONT>                    // We have written out any clean characters, then the escaped '%' and now we<a name="line.1332"></a>
<FONT color="green">1333</FONT>                    // We now we reset the next possible clean character.<a name="line.1333"></a>
<FONT color="green">1334</FONT>                    cleanStart = i + 1;    <a name="line.1334"></a>
<FONT color="green">1335</FONT>                }<a name="line.1335"></a>
<FONT color="green">1336</FONT>                else if (ch == '&amp;')<a name="line.1336"></a>
<FONT color="green">1337</FONT>                {<a name="line.1337"></a>
<FONT color="green">1338</FONT>                    // HTML 4.01 reads, "Authors should use "&amp;amp;" (ASCII decimal 38) <a name="line.1338"></a>
<FONT color="green">1339</FONT>                    // instead of "&amp;" to avoid confusion with the beginning of a character <a name="line.1339"></a>
<FONT color="green">1340</FONT>                    // reference (entity reference open delimiter). <a name="line.1340"></a>
<FONT color="green">1341</FONT>                    if (cleanLength &gt; 0)<a name="line.1341"></a>
<FONT color="green">1342</FONT>                    {<a name="line.1342"></a>
<FONT color="green">1343</FONT>                        writer.write(chars, cleanStart, cleanLength);<a name="line.1343"></a>
<FONT color="green">1344</FONT>                        cleanLength = 0;<a name="line.1344"></a>
<FONT color="green">1345</FONT>                    } <a name="line.1345"></a>
<FONT color="green">1346</FONT>                    writer.write("&amp;amp;");<a name="line.1346"></a>
<FONT color="green">1347</FONT>                    cleanStart = i + 1; <a name="line.1347"></a>
<FONT color="green">1348</FONT>                }<a name="line.1348"></a>
<FONT color="green">1349</FONT>                else<a name="line.1349"></a>
<FONT color="green">1350</FONT>                {<a name="line.1350"></a>
<FONT color="green">1351</FONT>                    // no processing for this character, just count how<a name="line.1351"></a>
<FONT color="green">1352</FONT>                    // many characters in a row that we have that need no processing<a name="line.1352"></a>
<FONT color="green">1353</FONT>                    cleanLength++;<a name="line.1353"></a>
<FONT color="green">1354</FONT>                }<a name="line.1354"></a>
<FONT color="green">1355</FONT>            }<a name="line.1355"></a>
<FONT color="green">1356</FONT>            <a name="line.1356"></a>
<FONT color="green">1357</FONT>            // are there any clean characters at the end of the array<a name="line.1357"></a>
<FONT color="green">1358</FONT>            // that we haven't processed yet?<a name="line.1358"></a>
<FONT color="green">1359</FONT>            if (cleanLength &gt; 1)<a name="line.1359"></a>
<FONT color="green">1360</FONT>            {<a name="line.1360"></a>
<FONT color="green">1361</FONT>                // if the whole string can be written out as-is do so<a name="line.1361"></a>
<FONT color="green">1362</FONT>                // otherwise write out the clean chars at the end of the<a name="line.1362"></a>
<FONT color="green">1363</FONT>                // array<a name="line.1363"></a>
<FONT color="green">1364</FONT>                if (cleanStart == 0)<a name="line.1364"></a>
<FONT color="green">1365</FONT>                    writer.write(string);<a name="line.1365"></a>
<FONT color="green">1366</FONT>                else<a name="line.1366"></a>
<FONT color="green">1367</FONT>                    writer.write(chars, cleanStart, cleanLength);<a name="line.1367"></a>
<FONT color="green">1368</FONT>            }<a name="line.1368"></a>
<FONT color="green">1369</FONT>            else if (cleanLength == 1)<a name="line.1369"></a>
<FONT color="green">1370</FONT>            {<a name="line.1370"></a>
<FONT color="green">1371</FONT>                // a little optimization for 1 clean character<a name="line.1371"></a>
<FONT color="green">1372</FONT>                // (we could have let the previous if(...) handle them all)<a name="line.1372"></a>
<FONT color="green">1373</FONT>                writer.write(ch);<a name="line.1373"></a>
<FONT color="green">1374</FONT>            }<a name="line.1374"></a>
<FONT color="green">1375</FONT>        }<a name="line.1375"></a>
<FONT color="green">1376</FONT>    <a name="line.1376"></a>
<FONT color="green">1377</FONT>        /**<a name="line.1377"></a>
<FONT color="green">1378</FONT>         * Writes the specified &lt;var&gt;string&lt;/var&gt; after substituting &lt;VAR&gt;specials&lt;/VAR&gt;,<a name="line.1378"></a>
<FONT color="green">1379</FONT>         * and UTF-16 surrogates for character references &lt;CODE&gt;&amp;amp;#xnn&lt;/CODE&gt;.<a name="line.1379"></a>
<FONT color="green">1380</FONT>         *<a name="line.1380"></a>
<FONT color="green">1381</FONT>         * @param   string      String to convert to XML format.<a name="line.1381"></a>
<FONT color="green">1382</FONT>         * @param   encoding    CURRENTLY NOT IMPLEMENTED.<a name="line.1382"></a>
<FONT color="green">1383</FONT>         *<a name="line.1383"></a>
<FONT color="green">1384</FONT>         * @throws org.xml.sax.SAXException<a name="line.1384"></a>
<FONT color="green">1385</FONT>         */<a name="line.1385"></a>
<FONT color="green">1386</FONT>        public void writeAttrString(<a name="line.1386"></a>
<FONT color="green">1387</FONT>            final java.io.Writer writer, String string, String encoding)<a name="line.1387"></a>
<FONT color="green">1388</FONT>            throws IOException<a name="line.1388"></a>
<FONT color="green">1389</FONT>        {<a name="line.1389"></a>
<FONT color="green">1390</FONT>            final int end = string.length();<a name="line.1390"></a>
<FONT color="green">1391</FONT>            if (end &gt; m_attrBuff.length)<a name="line.1391"></a>
<FONT color="green">1392</FONT>            {<a name="line.1392"></a>
<FONT color="green">1393</FONT>                m_attrBuff = new char[end * 2 + 1];<a name="line.1393"></a>
<FONT color="green">1394</FONT>            }<a name="line.1394"></a>
<FONT color="green">1395</FONT>            string.getChars(0, end, m_attrBuff, 0);<a name="line.1395"></a>
<FONT color="green">1396</FONT>            final char[] chars = m_attrBuff;<a name="line.1396"></a>
<FONT color="green">1397</FONT>    <a name="line.1397"></a>
<FONT color="green">1398</FONT>            <a name="line.1398"></a>
<FONT color="green">1399</FONT>    <a name="line.1399"></a>
<FONT color="green">1400</FONT>            int cleanStart = 0;<a name="line.1400"></a>
<FONT color="green">1401</FONT>            int cleanLength = 0;<a name="line.1401"></a>
<FONT color="green">1402</FONT>    <a name="line.1402"></a>
<FONT color="green">1403</FONT>            char ch = 0;<a name="line.1403"></a>
<FONT color="green">1404</FONT>            for (int i = 0; i &lt; end; i++)<a name="line.1404"></a>
<FONT color="green">1405</FONT>            {<a name="line.1405"></a>
<FONT color="green">1406</FONT>                ch = chars[i];<a name="line.1406"></a>
<FONT color="green">1407</FONT>    <a name="line.1407"></a>
<FONT color="green">1408</FONT>                // System.out.println("SPECIALSSIZE: "+SPECIALSSIZE);<a name="line.1408"></a>
<FONT color="green">1409</FONT>                // System.out.println("ch: "+(int)ch);<a name="line.1409"></a>
<FONT color="green">1410</FONT>                // System.out.println("m_maxCharacter: "+(int)m_maxCharacter);<a name="line.1410"></a>
<FONT color="green">1411</FONT>                // System.out.println("m_attrCharsMap[ch]: "+(int)m_attrCharsMap[ch]);<a name="line.1411"></a>
<FONT color="green">1412</FONT>                if (escapingNotNeeded(ch) &amp;&amp; (!m_charInfo.shouldMapAttrChar(ch)))<a name="line.1412"></a>
<FONT color="green">1413</FONT>                {<a name="line.1413"></a>
<FONT color="green">1414</FONT>                    cleanLength++;<a name="line.1414"></a>
<FONT color="green">1415</FONT>                }<a name="line.1415"></a>
<FONT color="green">1416</FONT>                else if ('&lt;' == ch || '&gt;' == ch)<a name="line.1416"></a>
<FONT color="green">1417</FONT>                {<a name="line.1417"></a>
<FONT color="green">1418</FONT>                    cleanLength++; // no escaping in this case, as specified in 15.2<a name="line.1418"></a>
<FONT color="green">1419</FONT>                }<a name="line.1419"></a>
<FONT color="green">1420</FONT>                else if (<a name="line.1420"></a>
<FONT color="green">1421</FONT>                    ('&amp;' == ch) &amp;&amp; ((i + 1) &lt; end) &amp;&amp; ('{' == chars[i + 1]))<a name="line.1421"></a>
<FONT color="green">1422</FONT>                {<a name="line.1422"></a>
<FONT color="green">1423</FONT>                    cleanLength++; // no escaping in this case, as specified in 15.2<a name="line.1423"></a>
<FONT color="green">1424</FONT>                }<a name="line.1424"></a>
<FONT color="green">1425</FONT>                else<a name="line.1425"></a>
<FONT color="green">1426</FONT>                {<a name="line.1426"></a>
<FONT color="green">1427</FONT>                    if (cleanLength &gt; 0)<a name="line.1427"></a>
<FONT color="green">1428</FONT>                    {<a name="line.1428"></a>
<FONT color="green">1429</FONT>                        writer.write(chars,cleanStart,cleanLength);<a name="line.1429"></a>
<FONT color="green">1430</FONT>                        cleanLength = 0;<a name="line.1430"></a>
<FONT color="green">1431</FONT>                    }<a name="line.1431"></a>
<FONT color="green">1432</FONT>                    int pos = accumDefaultEntity(writer, ch, i, chars, end, false, true);<a name="line.1432"></a>
<FONT color="green">1433</FONT>    <a name="line.1433"></a>
<FONT color="green">1434</FONT>                    if (i != pos)<a name="line.1434"></a>
<FONT color="green">1435</FONT>                    {<a name="line.1435"></a>
<FONT color="green">1436</FONT>                        i = pos - 1;<a name="line.1436"></a>
<FONT color="green">1437</FONT>                    }<a name="line.1437"></a>
<FONT color="green">1438</FONT>                    else<a name="line.1438"></a>
<FONT color="green">1439</FONT>                    {<a name="line.1439"></a>
<FONT color="green">1440</FONT>                        if (Encodings.isHighUTF16Surrogate(ch))<a name="line.1440"></a>
<FONT color="green">1441</FONT>                        {<a name="line.1441"></a>
<FONT color="green">1442</FONT>     <a name="line.1442"></a>
<FONT color="green">1443</FONT>                                writeUTF16Surrogate(ch, chars, i, end);<a name="line.1443"></a>
<FONT color="green">1444</FONT>                                i++; // two input characters processed<a name="line.1444"></a>
<FONT color="green">1445</FONT>                                     // this increments by one and the for()<a name="line.1445"></a>
<FONT color="green">1446</FONT>                                     // loop itself increments by another one.<a name="line.1446"></a>
<FONT color="green">1447</FONT>                        }<a name="line.1447"></a>
<FONT color="green">1448</FONT>    <a name="line.1448"></a>
<FONT color="green">1449</FONT>                        // The next is kind of a hack to keep from escaping in the case <a name="line.1449"></a>
<FONT color="green">1450</FONT>                        // of Shift_JIS and the like.<a name="line.1450"></a>
<FONT color="green">1451</FONT>    <a name="line.1451"></a>
<FONT color="green">1452</FONT>                        /*<a name="line.1452"></a>
<FONT color="green">1453</FONT>                        else if ((ch &lt; m_maxCharacter) &amp;&amp; (m_maxCharacter == 0xFFFF)<a name="line.1453"></a>
<FONT color="green">1454</FONT>                        &amp;&amp; (ch != 160))<a name="line.1454"></a>
<FONT color="green">1455</FONT>                        {<a name="line.1455"></a>
<FONT color="green">1456</FONT>                        writer.write(ch);  // no escaping in this case<a name="line.1456"></a>
<FONT color="green">1457</FONT>                        }<a name="line.1457"></a>
<FONT color="green">1458</FONT>                        else<a name="line.1458"></a>
<FONT color="green">1459</FONT>                        */<a name="line.1459"></a>
<FONT color="green">1460</FONT>                        String outputStringForChar = m_charInfo.getOutputStringForChar(ch);<a name="line.1460"></a>
<FONT color="green">1461</FONT>                        if (null != outputStringForChar)<a name="line.1461"></a>
<FONT color="green">1462</FONT>                        {<a name="line.1462"></a>
<FONT color="green">1463</FONT>                            writer.write(outputStringForChar);<a name="line.1463"></a>
<FONT color="green">1464</FONT>                        }<a name="line.1464"></a>
<FONT color="green">1465</FONT>                        else if (escapingNotNeeded(ch))<a name="line.1465"></a>
<FONT color="green">1466</FONT>                        {<a name="line.1466"></a>
<FONT color="green">1467</FONT>                            writer.write(ch); // no escaping in this case<a name="line.1467"></a>
<FONT color="green">1468</FONT>                        }<a name="line.1468"></a>
<FONT color="green">1469</FONT>                        else<a name="line.1469"></a>
<FONT color="green">1470</FONT>                        {<a name="line.1470"></a>
<FONT color="green">1471</FONT>                            writer.write("&amp;#");<a name="line.1471"></a>
<FONT color="green">1472</FONT>                            writer.write(Integer.toString(ch));<a name="line.1472"></a>
<FONT color="green">1473</FONT>                            writer.write(';');<a name="line.1473"></a>
<FONT color="green">1474</FONT>                        }<a name="line.1474"></a>
<FONT color="green">1475</FONT>                    }<a name="line.1475"></a>
<FONT color="green">1476</FONT>                    cleanStart = i + 1;<a name="line.1476"></a>
<FONT color="green">1477</FONT>                }<a name="line.1477"></a>
<FONT color="green">1478</FONT>            } // end of for()<a name="line.1478"></a>
<FONT color="green">1479</FONT>            <a name="line.1479"></a>
<FONT color="green">1480</FONT>            // are there any clean characters at the end of the array<a name="line.1480"></a>
<FONT color="green">1481</FONT>            // that we haven't processed yet?<a name="line.1481"></a>
<FONT color="green">1482</FONT>            if (cleanLength &gt; 1)<a name="line.1482"></a>
<FONT color="green">1483</FONT>            {<a name="line.1483"></a>
<FONT color="green">1484</FONT>                // if the whole string can be written out as-is do so<a name="line.1484"></a>
<FONT color="green">1485</FONT>                // otherwise write out the clean chars at the end of the<a name="line.1485"></a>
<FONT color="green">1486</FONT>                // array<a name="line.1486"></a>
<FONT color="green">1487</FONT>                if (cleanStart == 0)<a name="line.1487"></a>
<FONT color="green">1488</FONT>                    writer.write(string);<a name="line.1488"></a>
<FONT color="green">1489</FONT>                else<a name="line.1489"></a>
<FONT color="green">1490</FONT>                    writer.write(chars, cleanStart, cleanLength);<a name="line.1490"></a>
<FONT color="green">1491</FONT>            }<a name="line.1491"></a>
<FONT color="green">1492</FONT>            else if (cleanLength == 1)<a name="line.1492"></a>
<FONT color="green">1493</FONT>            {<a name="line.1493"></a>
<FONT color="green">1494</FONT>                // a little optimization for 1 clean character<a name="line.1494"></a>
<FONT color="green">1495</FONT>                // (we could have let the previous if(...) handle them all)<a name="line.1495"></a>
<FONT color="green">1496</FONT>                writer.write(ch);<a name="line.1496"></a>
<FONT color="green">1497</FONT>            }<a name="line.1497"></a>
<FONT color="green">1498</FONT>        }<a name="line.1498"></a>
<FONT color="green">1499</FONT>    <a name="line.1499"></a>
<FONT color="green">1500</FONT>    <a name="line.1500"></a>
<FONT color="green">1501</FONT>    <a name="line.1501"></a>
<FONT color="green">1502</FONT>        /**<a name="line.1502"></a>
<FONT color="green">1503</FONT>         * Receive notification of character data.<a name="line.1503"></a>
<FONT color="green">1504</FONT>         *<a name="line.1504"></a>
<FONT color="green">1505</FONT>         * &lt;p&gt;The Parser will call this method to report each chunk of<a name="line.1505"></a>
<FONT color="green">1506</FONT>         * character data.  SAX parsers may return all contiguous character<a name="line.1506"></a>
<FONT color="green">1507</FONT>         * data in a single chunk, or they may split it into several<a name="line.1507"></a>
<FONT color="green">1508</FONT>         * chunks; however, all of the characters in any single event<a name="line.1508"></a>
<FONT color="green">1509</FONT>         * must come from the same external entity, so that the Locator<a name="line.1509"></a>
<FONT color="green">1510</FONT>         * provides useful information.&lt;/p&gt;<a name="line.1510"></a>
<FONT color="green">1511</FONT>         *<a name="line.1511"></a>
<FONT color="green">1512</FONT>         * &lt;p&gt;The application must not attempt to read from the array<a name="line.1512"></a>
<FONT color="green">1513</FONT>         * outside of the specified range.&lt;/p&gt;<a name="line.1513"></a>
<FONT color="green">1514</FONT>         *<a name="line.1514"></a>
<FONT color="green">1515</FONT>         * &lt;p&gt;Note that some parsers will report whitespace using the<a name="line.1515"></a>
<FONT color="green">1516</FONT>         * ignorableWhitespace() method rather than this one (validating<a name="line.1516"></a>
<FONT color="green">1517</FONT>         * parsers must do so).&lt;/p&gt;<a name="line.1517"></a>
<FONT color="green">1518</FONT>         *<a name="line.1518"></a>
<FONT color="green">1519</FONT>         * @param chars The characters from the XML document.<a name="line.1519"></a>
<FONT color="green">1520</FONT>         * @param start The start position in the array.<a name="line.1520"></a>
<FONT color="green">1521</FONT>         * @param length The number of characters to read from the array.<a name="line.1521"></a>
<FONT color="green">1522</FONT>         * @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.1522"></a>
<FONT color="green">1523</FONT>         *            wrapping another exception.<a name="line.1523"></a>
<FONT color="green">1524</FONT>         * @see #ignorableWhitespace<a name="line.1524"></a>
<FONT color="green">1525</FONT>         * @see org.xml.sax.Locator<a name="line.1525"></a>
<FONT color="green">1526</FONT>         *<a name="line.1526"></a>
<FONT color="green">1527</FONT>         * @throws org.xml.sax.SAXException<a name="line.1527"></a>
<FONT color="green">1528</FONT>         */<a name="line.1528"></a>
<FONT color="green">1529</FONT>        public final void characters(char chars[], int start, int length)<a name="line.1529"></a>
<FONT color="green">1530</FONT>            throws org.xml.sax.SAXException<a name="line.1530"></a>
<FONT color="green">1531</FONT>        {<a name="line.1531"></a>
<FONT color="green">1532</FONT>    <a name="line.1532"></a>
<FONT color="green">1533</FONT>            if (m_elemContext.m_isRaw)<a name="line.1533"></a>
<FONT color="green">1534</FONT>            { <a name="line.1534"></a>
<FONT color="green">1535</FONT>                try<a name="line.1535"></a>
<FONT color="green">1536</FONT>                {<a name="line.1536"></a>
<FONT color="green">1537</FONT>                    // Clean up some pending issues.<a name="line.1537"></a>
<FONT color="green">1538</FONT>                    if (m_elemContext.m_startTagOpen)<a name="line.1538"></a>
<FONT color="green">1539</FONT>                    {<a name="line.1539"></a>
<FONT color="green">1540</FONT>                        closeStartTag();<a name="line.1540"></a>
<FONT color="green">1541</FONT>                        m_elemContext.m_startTagOpen = false;<a name="line.1541"></a>
<FONT color="green">1542</FONT>                    }<a name="line.1542"></a>
<FONT color="green">1543</FONT>                    <a name="line.1543"></a>
<FONT color="green">1544</FONT>                    m_ispreserve = true;<a name="line.1544"></a>
<FONT color="green">1545</FONT>                    <a name="line.1545"></a>
<FONT color="green">1546</FONT>                    writeNormalizedChars(chars, start, length, false, m_lineSepUse);<a name="line.1546"></a>
<FONT color="green">1547</FONT>                    <a name="line.1547"></a>
<FONT color="green">1548</FONT>                    // time to generate characters event<a name="line.1548"></a>
<FONT color="green">1549</FONT>                    if (m_tracer != null)<a name="line.1549"></a>
<FONT color="green">1550</FONT>                        super.fireCharEvent(chars, start, length);<a name="line.1550"></a>
<FONT color="green">1551</FONT>                    <a name="line.1551"></a>
<FONT color="green">1552</FONT>                    return;<a name="line.1552"></a>
<FONT color="green">1553</FONT>                }<a name="line.1553"></a>
<FONT color="green">1554</FONT>                catch (IOException ioe)<a name="line.1554"></a>
<FONT color="green">1555</FONT>                {<a name="line.1555"></a>
<FONT color="green">1556</FONT>                    throw new org.xml.sax.SAXException(<a name="line.1556"></a>
<FONT color="green">1557</FONT>                        Utils.messages.createMessage(MsgKey.ER_OIERROR,null),ioe);<a name="line.1557"></a>
<FONT color="green">1558</FONT>                }<a name="line.1558"></a>
<FONT color="green">1559</FONT>            }<a name="line.1559"></a>
<FONT color="green">1560</FONT>            else<a name="line.1560"></a>
<FONT color="green">1561</FONT>            {<a name="line.1561"></a>
<FONT color="green">1562</FONT>                super.characters(chars, start, length);<a name="line.1562"></a>
<FONT color="green">1563</FONT>            }<a name="line.1563"></a>
<FONT color="green">1564</FONT>        }<a name="line.1564"></a>
<FONT color="green">1565</FONT>    <a name="line.1565"></a>
<FONT color="green">1566</FONT>        /**<a name="line.1566"></a>
<FONT color="green">1567</FONT>         *  Receive notification of cdata.<a name="line.1567"></a>
<FONT color="green">1568</FONT>         *<a name="line.1568"></a>
<FONT color="green">1569</FONT>         *  &lt;p&gt;The Parser will call this method to report each chunk of<a name="line.1569"></a>
<FONT color="green">1570</FONT>         *  character data.  SAX parsers may return all contiguous character<a name="line.1570"></a>
<FONT color="green">1571</FONT>         *  data in a single chunk, or they may split it into several<a name="line.1571"></a>
<FONT color="green">1572</FONT>         *  chunks; however, all of the characters in any single event<a name="line.1572"></a>
<FONT color="green">1573</FONT>         *  must come from the same external entity, so that the Locator<a name="line.1573"></a>
<FONT color="green">1574</FONT>         *  provides useful information.&lt;/p&gt;<a name="line.1574"></a>
<FONT color="green">1575</FONT>         *<a name="line.1575"></a>
<FONT color="green">1576</FONT>         *  &lt;p&gt;The application must not attempt to read from the array<a name="line.1576"></a>
<FONT color="green">1577</FONT>         *  outside of the specified range.&lt;/p&gt;<a name="line.1577"></a>
<FONT color="green">1578</FONT>         *<a name="line.1578"></a>
<FONT color="green">1579</FONT>         *  &lt;p&gt;Note that some parsers will report whitespace using the<a name="line.1579"></a>
<FONT color="green">1580</FONT>         *  ignorableWhitespace() method rather than this one (validating<a name="line.1580"></a>
<FONT color="green">1581</FONT>         *  parsers must do so).&lt;/p&gt;<a name="line.1581"></a>
<FONT color="green">1582</FONT>         *<a name="line.1582"></a>
<FONT color="green">1583</FONT>         *  @param ch The characters from the XML document.<a name="line.1583"></a>
<FONT color="green">1584</FONT>         *  @param start The start position in the array.<a name="line.1584"></a>
<FONT color="green">1585</FONT>         *  @param length The number of characters to read from the array.<a name="line.1585"></a>
<FONT color="green">1586</FONT>         *  @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.1586"></a>
<FONT color="green">1587</FONT>         *             wrapping another exception.<a name="line.1587"></a>
<FONT color="green">1588</FONT>         *  @see #ignorableWhitespace<a name="line.1588"></a>
<FONT color="green">1589</FONT>         *  @see org.xml.sax.Locator<a name="line.1589"></a>
<FONT color="green">1590</FONT>         *<a name="line.1590"></a>
<FONT color="green">1591</FONT>         * @throws org.xml.sax.SAXException<a name="line.1591"></a>
<FONT color="green">1592</FONT>         */<a name="line.1592"></a>
<FONT color="green">1593</FONT>        public final void cdata(char ch[], int start, int length)<a name="line.1593"></a>
<FONT color="green">1594</FONT>            throws org.xml.sax.SAXException<a name="line.1594"></a>
<FONT color="green">1595</FONT>        {<a name="line.1595"></a>
<FONT color="green">1596</FONT>    <a name="line.1596"></a>
<FONT color="green">1597</FONT>            if ((null != m_elemContext.m_elementName)<a name="line.1597"></a>
<FONT color="green">1598</FONT>                &amp;&amp; (m_elemContext.m_elementName.equalsIgnoreCase("SCRIPT")<a name="line.1598"></a>
<FONT color="green">1599</FONT>                    || m_elemContext.m_elementName.equalsIgnoreCase("STYLE")))<a name="line.1599"></a>
<FONT color="green">1600</FONT>            {<a name="line.1600"></a>
<FONT color="green">1601</FONT>                try<a name="line.1601"></a>
<FONT color="green">1602</FONT>                {<a name="line.1602"></a>
<FONT color="green">1603</FONT>                    if (m_elemContext.m_startTagOpen)<a name="line.1603"></a>
<FONT color="green">1604</FONT>                    {<a name="line.1604"></a>
<FONT color="green">1605</FONT>                        closeStartTag();<a name="line.1605"></a>
<FONT color="green">1606</FONT>                        m_elemContext.m_startTagOpen = false;<a name="line.1606"></a>
<FONT color="green">1607</FONT>                    }<a name="line.1607"></a>
<FONT color="green">1608</FONT>    <a name="line.1608"></a>
<FONT color="green">1609</FONT>                    m_ispreserve = true;<a name="line.1609"></a>
<FONT color="green">1610</FONT>    <a name="line.1610"></a>
<FONT color="green">1611</FONT>                    if (shouldIndent())<a name="line.1611"></a>
<FONT color="green">1612</FONT>                        indent();<a name="line.1612"></a>
<FONT color="green">1613</FONT>    <a name="line.1613"></a>
<FONT color="green">1614</FONT>                    // writer.write(ch, start, length);<a name="line.1614"></a>
<FONT color="green">1615</FONT>                    writeNormalizedChars(ch, start, length, true, m_lineSepUse);<a name="line.1615"></a>
<FONT color="green">1616</FONT>                }<a name="line.1616"></a>
<FONT color="green">1617</FONT>                catch (IOException ioe)<a name="line.1617"></a>
<FONT color="green">1618</FONT>                {<a name="line.1618"></a>
<FONT color="green">1619</FONT>                    throw new org.xml.sax.SAXException(<a name="line.1619"></a>
<FONT color="green">1620</FONT>                        Utils.messages.createMessage(<a name="line.1620"></a>
<FONT color="green">1621</FONT>                            MsgKey.ER_OIERROR,<a name="line.1621"></a>
<FONT color="green">1622</FONT>                            null),<a name="line.1622"></a>
<FONT color="green">1623</FONT>                        ioe);<a name="line.1623"></a>
<FONT color="green">1624</FONT>                    //"IO error", ioe);<a name="line.1624"></a>
<FONT color="green">1625</FONT>                }<a name="line.1625"></a>
<FONT color="green">1626</FONT>            }<a name="line.1626"></a>
<FONT color="green">1627</FONT>            else<a name="line.1627"></a>
<FONT color="green">1628</FONT>            {<a name="line.1628"></a>
<FONT color="green">1629</FONT>                super.cdata(ch, start, length);<a name="line.1629"></a>
<FONT color="green">1630</FONT>            }<a name="line.1630"></a>
<FONT color="green">1631</FONT>        }<a name="line.1631"></a>
<FONT color="green">1632</FONT>    <a name="line.1632"></a>
<FONT color="green">1633</FONT>        /**<a name="line.1633"></a>
<FONT color="green">1634</FONT>         *  Receive notification of a processing instruction.<a name="line.1634"></a>
<FONT color="green">1635</FONT>         *<a name="line.1635"></a>
<FONT color="green">1636</FONT>         *  @param target The processing instruction target.<a name="line.1636"></a>
<FONT color="green">1637</FONT>         *  @param data The processing instruction data, or null if<a name="line.1637"></a>
<FONT color="green">1638</FONT>         *         none was supplied.<a name="line.1638"></a>
<FONT color="green">1639</FONT>         *  @throws org.xml.sax.SAXException Any SAX exception, possibly<a name="line.1639"></a>
<FONT color="green">1640</FONT>         *             wrapping another exception.<a name="line.1640"></a>
<FONT color="green">1641</FONT>         *<a name="line.1641"></a>
<FONT color="green">1642</FONT>         * @throws org.xml.sax.SAXException<a name="line.1642"></a>
<FONT color="green">1643</FONT>         */<a name="line.1643"></a>
<FONT color="green">1644</FONT>        public void processingInstruction(String target, String data)<a name="line.1644"></a>
<FONT color="green">1645</FONT>            throws org.xml.sax.SAXException<a name="line.1645"></a>
<FONT color="green">1646</FONT>        {<a name="line.1646"></a>
<FONT color="green">1647</FONT>    <a name="line.1647"></a>
<FONT color="green">1648</FONT>            // Process any pending starDocument and startElement first.<a name="line.1648"></a>
<FONT color="green">1649</FONT>            flushPending(); <a name="line.1649"></a>
<FONT color="green">1650</FONT>            <a name="line.1650"></a>
<FONT color="green">1651</FONT>            // Use a fairly nasty hack to tell if the next node is supposed to be <a name="line.1651"></a>
<FONT color="green">1652</FONT>            // unescaped text.<a name="line.1652"></a>
<FONT color="green">1653</FONT>            if (target.equals(Result.PI_DISABLE_OUTPUT_ESCAPING))<a name="line.1653"></a>
<FONT color="green">1654</FONT>            {<a name="line.1654"></a>
<FONT color="green">1655</FONT>                startNonEscaping();<a name="line.1655"></a>
<FONT color="green">1656</FONT>            }<a name="line.1656"></a>
<FONT color="green">1657</FONT>            else if (target.equals(Result.PI_ENABLE_OUTPUT_ESCAPING))<a name="line.1657"></a>
<FONT color="green">1658</FONT>            {<a name="line.1658"></a>
<FONT color="green">1659</FONT>                endNonEscaping();<a name="line.1659"></a>
<FONT color="green">1660</FONT>            }<a name="line.1660"></a>
<FONT color="green">1661</FONT>            else<a name="line.1661"></a>
<FONT color="green">1662</FONT>            {<a name="line.1662"></a>
<FONT color="green">1663</FONT>                try<a name="line.1663"></a>
<FONT color="green">1664</FONT>                {<a name="line.1664"></a>
<FONT color="green">1665</FONT>                    // clean up any pending things first<a name="line.1665"></a>
<FONT color="green">1666</FONT>                    if (m_elemContext.m_startTagOpen)<a name="line.1666"></a>
<FONT color="green">1667</FONT>                    {<a name="line.1667"></a>
<FONT color="green">1668</FONT>                        closeStartTag();<a name="line.1668"></a>
<FONT color="green">1669</FONT>                        m_elemContext.m_startTagOpen = false;<a name="line.1669"></a>
<FONT color="green">1670</FONT>                    }<a name="line.1670"></a>
<FONT color="green">1671</FONT>                    else if (m_cdataTagOpen)<a name="line.1671"></a>
<FONT color="green">1672</FONT>                    {<a name="line.1672"></a>
<FONT color="green">1673</FONT>                        closeCDATA();<a name="line.1673"></a>
<FONT color="green">1674</FONT>                    }<a name="line.1674"></a>
<FONT color="green">1675</FONT>                    else if (m_needToCallStartDocument)<a name="line.1675"></a>
<FONT color="green">1676</FONT>                    {<a name="line.1676"></a>
<FONT color="green">1677</FONT>                        startDocumentInternal();<a name="line.1677"></a>
<FONT color="green">1678</FONT>                    }<a name="line.1678"></a>
<FONT color="green">1679</FONT>                <a name="line.1679"></a>
<FONT color="green">1680</FONT>    <a name="line.1680"></a>
<FONT color="green">1681</FONT>                /*<a name="line.1681"></a>
<FONT color="green">1682</FONT>                 * Perhaps processing instructions can be written out in HTML before<a name="line.1682"></a>
<FONT color="green">1683</FONT>                 * the DOCTYPE, in which case this could be emitted with the<a name="line.1683"></a>
<FONT color="green">1684</FONT>                 * startElement call, that knows the name of the document element<a name="line.1684"></a>
<FONT color="green">1685</FONT>                 * doing it right.<a name="line.1685"></a>
<FONT color="green">1686</FONT>                 */<a name="line.1686"></a>
<FONT color="green">1687</FONT>                if (true == m_needToOutputDocTypeDecl)<a name="line.1687"></a>
<FONT color="green">1688</FONT>                    outputDocTypeDecl("html"); // best guess for the upcoming element<a name="line.1688"></a>
<FONT color="green">1689</FONT>    <a name="line.1689"></a>
<FONT color="green">1690</FONT>     <a name="line.1690"></a>
<FONT color="green">1691</FONT>                if (shouldIndent())<a name="line.1691"></a>
<FONT color="green">1692</FONT>                    indent();<a name="line.1692"></a>
<FONT color="green">1693</FONT>    <a name="line.1693"></a>
<FONT color="green">1694</FONT>                final java.io.Writer writer = m_writer;<a name="line.1694"></a>
<FONT color="green">1695</FONT>                //writer.write("&lt;?" + target);<a name="line.1695"></a>
<FONT color="green">1696</FONT>                writer.write("&lt;?");<a name="line.1696"></a>
<FONT color="green">1697</FONT>                writer.write(target);<a name="line.1697"></a>
<FONT color="green">1698</FONT>    <a name="line.1698"></a>
<FONT color="green">1699</FONT>                if (data.length() &gt; 0 &amp;&amp; !Character.isSpaceChar(data.charAt(0)))<a name="line.1699"></a>
<FONT color="green">1700</FONT>                    writer.write(' '); <a name="line.1700"></a>
<FONT color="green">1701</FONT>    <a name="line.1701"></a>
<FONT color="green">1702</FONT>                //writer.write(data + "&gt;"); // different from XML<a name="line.1702"></a>
<FONT color="green">1703</FONT>                writer.write(data); // different from XML<a name="line.1703"></a>
<FONT color="green">1704</FONT>                writer.write('&gt;'); // different from XML<a name="line.1704"></a>
<FONT color="green">1705</FONT>    <a name="line.1705"></a>
<FONT color="green">1706</FONT>                // Always output a newline char if not inside of an <a name="line.1706"></a>
<FONT color="green">1707</FONT>                // element. The whitespace is not significant in that<a name="line.1707"></a>
<FONT color="green">1708</FONT>                // case.<a name="line.1708"></a>
<FONT color="green">1709</FONT>                if (m_elemContext.m_currentElemDepth &lt;= 0)<a name="line.1709"></a>
<FONT color="green">1710</FONT>                    outputLineSep();<a name="line.1710"></a>
<FONT color="green">1711</FONT>    <a name="line.1711"></a>
<FONT color="green">1712</FONT>                m_startNewLine = true;<a name="line.1712"></a>
<FONT color="green">1713</FONT>                }<a name="line.1713"></a>
<FONT color="green">1714</FONT>                catch(IOException e)<a name="line.1714"></a>
<FONT color="green">1715</FONT>                {<a name="line.1715"></a>
<FONT color="green">1716</FONT>                    throw new SAXException(e);<a name="line.1716"></a>
<FONT color="green">1717</FONT>                }<a name="line.1717"></a>
<FONT color="green">1718</FONT>            }<a name="line.1718"></a>
<FONT color="green">1719</FONT>                   <a name="line.1719"></a>
<FONT color="green">1720</FONT>            // now generate the PI event<a name="line.1720"></a>
<FONT color="green">1721</FONT>            if (m_tracer != null)<a name="line.1721"></a>
<FONT color="green">1722</FONT>                super.fireEscapingEvent(target, data);<a name="line.1722"></a>
<FONT color="green">1723</FONT>         }<a name="line.1723"></a>
<FONT color="green">1724</FONT>    <a name="line.1724"></a>
<FONT color="green">1725</FONT>        /**<a name="line.1725"></a>
<FONT color="green">1726</FONT>         * Receive notivication of a entityReference.<a name="line.1726"></a>
<FONT color="green">1727</FONT>         *<a name="line.1727"></a>
<FONT color="green">1728</FONT>         * @param name non-null reference to entity name string.<a name="line.1728"></a>
<FONT color="green">1729</FONT>         *<a name="line.1729"></a>
<FONT color="green">1730</FONT>         * @throws org.xml.sax.SAXException<a name="line.1730"></a>
<FONT color="green">1731</FONT>         */<a name="line.1731"></a>
<FONT color="green">1732</FONT>        public final void entityReference(String name)<a name="line.1732"></a>
<FONT color="green">1733</FONT>            throws org.xml.sax.SAXException<a name="line.1733"></a>
<FONT color="green">1734</FONT>        {<a name="line.1734"></a>
<FONT color="green">1735</FONT>            try<a name="line.1735"></a>
<FONT color="green">1736</FONT>            {<a name="line.1736"></a>
<FONT color="green">1737</FONT>    <a name="line.1737"></a>
<FONT color="green">1738</FONT>            final java.io.Writer writer = m_writer;<a name="line.1738"></a>
<FONT color="green">1739</FONT>            writer.write('&amp;');<a name="line.1739"></a>
<FONT color="green">1740</FONT>            writer.write(name);<a name="line.1740"></a>
<FONT color="green">1741</FONT>            writer.write(';');<a name="line.1741"></a>
<FONT color="green">1742</FONT>            <a name="line.1742"></a>
<FONT color="green">1743</FONT>            } catch(IOException e)<a name="line.1743"></a>
<FONT color="green">1744</FONT>            {<a name="line.1744"></a>
<FONT color="green">1745</FONT>                throw new SAXException(e);<a name="line.1745"></a>
<FONT color="green">1746</FONT>            }<a name="line.1746"></a>
<FONT color="green">1747</FONT>        }<a name="line.1747"></a>
<FONT color="green">1748</FONT>        /**<a name="line.1748"></a>
<FONT color="green">1749</FONT>         * @see ExtendedContentHandler#endElement(String)<a name="line.1749"></a>
<FONT color="green">1750</FONT>         */<a name="line.1750"></a>
<FONT color="green">1751</FONT>        public final void endElement(String elemName) throws SAXException<a name="line.1751"></a>
<FONT color="green">1752</FONT>        {<a name="line.1752"></a>
<FONT color="green">1753</FONT>            endElement(null, null, elemName);<a name="line.1753"></a>
<FONT color="green">1754</FONT>        }<a name="line.1754"></a>
<FONT color="green">1755</FONT>    <a name="line.1755"></a>
<FONT color="green">1756</FONT>        /**<a name="line.1756"></a>
<FONT color="green">1757</FONT>         * Process the attributes, which means to write out the currently<a name="line.1757"></a>
<FONT color="green">1758</FONT>         * collected attributes to the writer. The attributes are not<a name="line.1758"></a>
<FONT color="green">1759</FONT>         * cleared by this method<a name="line.1759"></a>
<FONT color="green">1760</FONT>         * <a name="line.1760"></a>
<FONT color="green">1761</FONT>         * @param writer the writer to write processed attributes to.<a name="line.1761"></a>
<FONT color="green">1762</FONT>         * @param nAttrs the number of attributes in m_attributes <a name="line.1762"></a>
<FONT color="green">1763</FONT>         * to be processed<a name="line.1763"></a>
<FONT color="green">1764</FONT>         *<a name="line.1764"></a>
<FONT color="green">1765</FONT>         * @throws org.xml.sax.SAXException<a name="line.1765"></a>
<FONT color="green">1766</FONT>         */<a name="line.1766"></a>
<FONT color="green">1767</FONT>        public void processAttributes(java.io.Writer writer, int nAttrs)<a name="line.1767"></a>
<FONT color="green">1768</FONT>            throws IOException,SAXException<a name="line.1768"></a>
<FONT color="green">1769</FONT>        {<a name="line.1769"></a>
<FONT color="green">1770</FONT>                /* <a name="line.1770"></a>
<FONT color="green">1771</FONT>                 * process the collected attributes<a name="line.1771"></a>
<FONT color="green">1772</FONT>                 */<a name="line.1772"></a>
<FONT color="green">1773</FONT>                for (int i = 0; i &lt; nAttrs; i++)<a name="line.1773"></a>
<FONT color="green">1774</FONT>                {<a name="line.1774"></a>
<FONT color="green">1775</FONT>                    processAttribute(<a name="line.1775"></a>
<FONT color="green">1776</FONT>                        writer,<a name="line.1776"></a>
<FONT color="green">1777</FONT>                        m_attributes.getQName(i),<a name="line.1777"></a>
<FONT color="green">1778</FONT>                        m_attributes.getValue(i),<a name="line.1778"></a>
<FONT color="green">1779</FONT>                        m_elemContext.m_elementDesc);<a name="line.1779"></a>
<FONT color="green">1780</FONT>                }<a name="line.1780"></a>
<FONT color="green">1781</FONT>        }<a name="line.1781"></a>
<FONT color="green">1782</FONT>    <a name="line.1782"></a>
<FONT color="green">1783</FONT>        /**<a name="line.1783"></a>
<FONT color="green">1784</FONT>         * For the enclosing elements starting tag write out out any attributes<a name="line.1784"></a>
<FONT color="green">1785</FONT>         * followed by "&gt;". At this point we also mark if this element is<a name="line.1785"></a>
<FONT color="green">1786</FONT>         * a cdata-section-element.<a name="line.1786"></a>
<FONT color="green">1787</FONT>         *<a name="line.1787"></a>
<FONT color="green">1788</FONT>         *@throws org.xml.sax.SAXException<a name="line.1788"></a>
<FONT color="green">1789</FONT>         */<a name="line.1789"></a>
<FONT color="green">1790</FONT>        protected void closeStartTag() throws SAXException<a name="line.1790"></a>
<FONT color="green">1791</FONT>        {<a name="line.1791"></a>
<FONT color="green">1792</FONT>                try<a name="line.1792"></a>
<FONT color="green">1793</FONT>                {<a name="line.1793"></a>
<FONT color="green">1794</FONT>    <a name="line.1794"></a>
<FONT color="green">1795</FONT>                // finish processing attributes, time to fire off the start element event<a name="line.1795"></a>
<FONT color="green">1796</FONT>                if (m_tracer != null)<a name="line.1796"></a>
<FONT color="green">1797</FONT>                    super.fireStartElem(m_elemContext.m_elementName);  <a name="line.1797"></a>
<FONT color="green">1798</FONT>                <a name="line.1798"></a>
<FONT color="green">1799</FONT>                int nAttrs = m_attributes.getLength();   <a name="line.1799"></a>
<FONT color="green">1800</FONT>                if (nAttrs&gt;0)<a name="line.1800"></a>
<FONT color="green">1801</FONT>                {<a name="line.1801"></a>
<FONT color="green">1802</FONT>                    processAttributes(m_writer, nAttrs);<a name="line.1802"></a>
<FONT color="green">1803</FONT>                    // clear attributes object for re-use with next element<a name="line.1803"></a>
<FONT color="green">1804</FONT>                    m_attributes.clear();<a name="line.1804"></a>
<FONT color="green">1805</FONT>                }<a name="line.1805"></a>
<FONT color="green">1806</FONT>    <a name="line.1806"></a>
<FONT color="green">1807</FONT>                m_writer.write('&gt;');<a name="line.1807"></a>
<FONT color="green">1808</FONT>    <a name="line.1808"></a>
<FONT color="green">1809</FONT>                /* At this point we have the prefix mappings now, so<a name="line.1809"></a>
<FONT color="green">1810</FONT>                 * lets determine if the current element is specified in the cdata-<a name="line.1810"></a>
<FONT color="green">1811</FONT>                 * section-elements list.<a name="line.1811"></a>
<FONT color="green">1812</FONT>                 */<a name="line.1812"></a>
<FONT color="green">1813</FONT>                if (m_CdataElems != null) // if there are any cdata sections<a name="line.1813"></a>
<FONT color="green">1814</FONT>                    m_elemContext.m_isCdataSection = isCdataSection();<a name="line.1814"></a>
<FONT color="green">1815</FONT>                if (m_doIndent)<a name="line.1815"></a>
<FONT color="green">1816</FONT>                {<a name="line.1816"></a>
<FONT color="green">1817</FONT>                    m_isprevtext = false;<a name="line.1817"></a>
<FONT color="green">1818</FONT>                    m_preserves.push(m_ispreserve);<a name="line.1818"></a>
<FONT color="green">1819</FONT>                }<a name="line.1819"></a>
<FONT color="green">1820</FONT>                <a name="line.1820"></a>
<FONT color="green">1821</FONT>                }<a name="line.1821"></a>
<FONT color="green">1822</FONT>                catch(IOException e)<a name="line.1822"></a>
<FONT color="green">1823</FONT>                {<a name="line.1823"></a>
<FONT color="green">1824</FONT>                    throw new SAXException(e);<a name="line.1824"></a>
<FONT color="green">1825</FONT>                }<a name="line.1825"></a>
<FONT color="green">1826</FONT>        }<a name="line.1826"></a>
<FONT color="green">1827</FONT>        <a name="line.1827"></a>
<FONT color="green">1828</FONT>    <a name="line.1828"></a>
<FONT color="green">1829</FONT>       <a name="line.1829"></a>
<FONT color="green">1830</FONT>            /**<a name="line.1830"></a>
<FONT color="green">1831</FONT>             * This method is used when a prefix/uri namespace mapping<a name="line.1831"></a>
<FONT color="green">1832</FONT>             * is indicated after the element was started with a<a name="line.1832"></a>
<FONT color="green">1833</FONT>             * startElement() and before and endElement().<a name="line.1833"></a>
<FONT color="green">1834</FONT>             * startPrefixMapping(prefix,uri) would be used before the<a name="line.1834"></a>
<FONT color="green">1835</FONT>             * startElement() call.<a name="line.1835"></a>
<FONT color="green">1836</FONT>             * @param uri the URI of the namespace<a name="line.1836"></a>
<FONT color="green">1837</FONT>             * @param prefix the prefix associated with the given URI.<a name="line.1837"></a>
<FONT color="green">1838</FONT>             *<a name="line.1838"></a>
<FONT color="green">1839</FONT>             * @see ExtendedContentHandler#namespaceAfterStartElement(String, String)<a name="line.1839"></a>
<FONT color="green">1840</FONT>             */<a name="line.1840"></a>
<FONT color="green">1841</FONT>            public void namespaceAfterStartElement(String prefix, String uri)<a name="line.1841"></a>
<FONT color="green">1842</FONT>                throws SAXException<a name="line.1842"></a>
<FONT color="green">1843</FONT>            {<a name="line.1843"></a>
<FONT color="green">1844</FONT>                // hack for XSLTC with finding URI for default namespace<a name="line.1844"></a>
<FONT color="green">1845</FONT>                if (m_elemContext.m_elementURI == null)<a name="line.1845"></a>
<FONT color="green">1846</FONT>                {<a name="line.1846"></a>
<FONT color="green">1847</FONT>                    String prefix1 = getPrefixPart(m_elemContext.m_elementName);<a name="line.1847"></a>
<FONT color="green">1848</FONT>                    if (prefix1 == null &amp;&amp; EMPTYSTRING.equals(prefix))<a name="line.1848"></a>
<FONT color="green">1849</FONT>                    {<a name="line.1849"></a>
<FONT color="green">1850</FONT>                        // the elements URI is not known yet, and it<a name="line.1850"></a>
<FONT color="green">1851</FONT>                        // doesn't have a prefix, and we are currently<a name="line.1851"></a>
<FONT color="green">1852</FONT>                        // setting the uri for prefix "", so we have<a name="line.1852"></a>
<FONT color="green">1853</FONT>                        // the uri for the element... lets remember it<a name="line.1853"></a>
<FONT color="green">1854</FONT>                        m_elemContext.m_elementURI = uri;<a name="line.1854"></a>
<FONT color="green">1855</FONT>                    }<a name="line.1855"></a>
<FONT color="green">1856</FONT>                }            <a name="line.1856"></a>
<FONT color="green">1857</FONT>                startPrefixMapping(prefix,uri,false);<a name="line.1857"></a>
<FONT color="green">1858</FONT>            }<a name="line.1858"></a>
<FONT color="green">1859</FONT>    <a name="line.1859"></a>
<FONT color="green">1860</FONT>        public void startDTD(String name, String publicId, String systemId)<a name="line.1860"></a>
<FONT color="green">1861</FONT>            throws SAXException<a name="line.1861"></a>
<FONT color="green">1862</FONT>        {<a name="line.1862"></a>
<FONT color="green">1863</FONT>            m_inDTD = true;<a name="line.1863"></a>
<FONT color="green">1864</FONT>            super.startDTD(name, publicId, systemId);<a name="line.1864"></a>
<FONT color="green">1865</FONT>        }<a name="line.1865"></a>
<FONT color="green">1866</FONT>    <a name="line.1866"></a>
<FONT color="green">1867</FONT>        /**<a name="line.1867"></a>
<FONT color="green">1868</FONT>         * Report the end of DTD declarations.<a name="line.1868"></a>
<FONT color="green">1869</FONT>         * @throws org.xml.sax.SAXException The application may raise an exception.<a name="line.1869"></a>
<FONT color="green">1870</FONT>         * @see #startDTD<a name="line.1870"></a>
<FONT color="green">1871</FONT>         */<a name="line.1871"></a>
<FONT color="green">1872</FONT>        public void endDTD() throws org.xml.sax.SAXException<a name="line.1872"></a>
<FONT color="green">1873</FONT>        {<a name="line.1873"></a>
<FONT color="green">1874</FONT>            m_inDTD = false;<a name="line.1874"></a>
<FONT color="green">1875</FONT>            /* for ToHTMLStream the DOCTYPE is entirely output in the<a name="line.1875"></a>
<FONT color="green">1876</FONT>             * startDocumentInternal() method, so don't do anything here<a name="line.1876"></a>
<FONT color="green">1877</FONT>             */<a name="line.1877"></a>
<FONT color="green">1878</FONT>        }<a name="line.1878"></a>
<FONT color="green">1879</FONT>        /**<a name="line.1879"></a>
<FONT color="green">1880</FONT>         * This method does nothing.<a name="line.1880"></a>
<FONT color="green">1881</FONT>         */<a name="line.1881"></a>
<FONT color="green">1882</FONT>        public void attributeDecl(<a name="line.1882"></a>
<FONT color="green">1883</FONT>            String eName,<a name="line.1883"></a>
<FONT color="green">1884</FONT>            String aName,<a name="line.1884"></a>
<FONT color="green">1885</FONT>            String type,<a name="line.1885"></a>
<FONT color="green">1886</FONT>            String valueDefault,<a name="line.1886"></a>
<FONT color="green">1887</FONT>            String value)<a name="line.1887"></a>
<FONT color="green">1888</FONT>            throws SAXException<a name="line.1888"></a>
<FONT color="green">1889</FONT>        {<a name="line.1889"></a>
<FONT color="green">1890</FONT>            // The internal DTD subset is not serialized by the ToHTMLStream serializer<a name="line.1890"></a>
<FONT color="green">1891</FONT>        }<a name="line.1891"></a>
<FONT color="green">1892</FONT>    <a name="line.1892"></a>
<FONT color="green">1893</FONT>        /**<a name="line.1893"></a>
<FONT color="green">1894</FONT>         * This method does nothing.<a name="line.1894"></a>
<FONT color="green">1895</FONT>         */<a name="line.1895"></a>
<FONT color="green">1896</FONT>        public void elementDecl(String name, String model) throws SAXException<a name="line.1896"></a>
<FONT color="green">1897</FONT>        {<a name="line.1897"></a>
<FONT color="green">1898</FONT>            // The internal DTD subset is not serialized by the ToHTMLStream serializer<a name="line.1898"></a>
<FONT color="green">1899</FONT>        }<a name="line.1899"></a>
<FONT color="green">1900</FONT>        /**<a name="line.1900"></a>
<FONT color="green">1901</FONT>         * This method does nothing.<a name="line.1901"></a>
<FONT color="green">1902</FONT>         */<a name="line.1902"></a>
<FONT color="green">1903</FONT>        public void internalEntityDecl(String name, String value)<a name="line.1903"></a>
<FONT color="green">1904</FONT>            throws SAXException<a name="line.1904"></a>
<FONT color="green">1905</FONT>        {<a name="line.1905"></a>
<FONT color="green">1906</FONT>            // The internal DTD subset is not serialized by the ToHTMLStream serializer<a name="line.1906"></a>
<FONT color="green">1907</FONT>        }<a name="line.1907"></a>
<FONT color="green">1908</FONT>        /**<a name="line.1908"></a>
<FONT color="green">1909</FONT>         * This method does nothing.<a name="line.1909"></a>
<FONT color="green">1910</FONT>         */<a name="line.1910"></a>
<FONT color="green">1911</FONT>        public void externalEntityDecl(<a name="line.1911"></a>
<FONT color="green">1912</FONT>            String name,<a name="line.1912"></a>
<FONT color="green">1913</FONT>            String publicId,<a name="line.1913"></a>
<FONT color="green">1914</FONT>            String systemId)<a name="line.1914"></a>
<FONT color="green">1915</FONT>            throws SAXException<a name="line.1915"></a>
<FONT color="green">1916</FONT>        {<a name="line.1916"></a>
<FONT color="green">1917</FONT>            // The internal DTD subset is not serialized by the ToHTMLStream serializer<a name="line.1917"></a>
<FONT color="green">1918</FONT>        }<a name="line.1918"></a>
<FONT color="green">1919</FONT>    <a name="line.1919"></a>
<FONT color="green">1920</FONT>        /**<a name="line.1920"></a>
<FONT color="green">1921</FONT>         * This method is used to add an attribute to the currently open element. <a name="line.1921"></a>
<FONT color="green">1922</FONT>         * The caller has guaranted that this attribute is unique, which means that it<a name="line.1922"></a>
<FONT color="green">1923</FONT>         * not been seen before and will not be seen again.<a name="line.1923"></a>
<FONT color="green">1924</FONT>         * <a name="line.1924"></a>
<FONT color="green">1925</FONT>         * @param name the qualified name of the attribute<a name="line.1925"></a>
<FONT color="green">1926</FONT>         * @param value the value of the attribute which can contain only<a name="line.1926"></a>
<FONT color="green">1927</FONT>         * ASCII printable characters characters in the range 32 to 127 inclusive.<a name="line.1927"></a>
<FONT color="green">1928</FONT>         * @param flags the bit values of this integer give optimization information.<a name="line.1928"></a>
<FONT color="green">1929</FONT>         */<a name="line.1929"></a>
<FONT color="green">1930</FONT>        public void addUniqueAttribute(String name, String value, int flags)<a name="line.1930"></a>
<FONT color="green">1931</FONT>            throws SAXException<a name="line.1931"></a>
<FONT color="green">1932</FONT>        {<a name="line.1932"></a>
<FONT color="green">1933</FONT>            try<a name="line.1933"></a>
<FONT color="green">1934</FONT>            {<a name="line.1934"></a>
<FONT color="green">1935</FONT>                final java.io.Writer writer = m_writer;<a name="line.1935"></a>
<FONT color="green">1936</FONT>                if ((flags &amp; NO_BAD_CHARS) &gt; 0 &amp;&amp; m_htmlcharInfo.onlyQuotAmpLtGt)<a name="line.1936"></a>
<FONT color="green">1937</FONT>                {<a name="line.1937"></a>
<FONT color="green">1938</FONT>                    // "flags" has indicated that the characters<a name="line.1938"></a>
<FONT color="green">1939</FONT>                    // '&gt;'  '&lt;'   '&amp;'  and '"' are not in the value and<a name="line.1939"></a>
<FONT color="green">1940</FONT>                    // m_htmlcharInfo has recorded that there are no other<a name="line.1940"></a>
<FONT color="green">1941</FONT>                    // entities in the range 0 to 127 so we write out the<a name="line.1941"></a>
<FONT color="green">1942</FONT>                    // value directly<a name="line.1942"></a>
<FONT color="green">1943</FONT>                    writer.write(' ');<a name="line.1943"></a>
<FONT color="green">1944</FONT>                    writer.write(name);<a name="line.1944"></a>
<FONT color="green">1945</FONT>                    writer.write("=\"");<a name="line.1945"></a>
<FONT color="green">1946</FONT>                    writer.write(value);<a name="line.1946"></a>
<FONT color="green">1947</FONT>                    writer.write('"');<a name="line.1947"></a>
<FONT color="green">1948</FONT>                }<a name="line.1948"></a>
<FONT color="green">1949</FONT>                else if (<a name="line.1949"></a>
<FONT color="green">1950</FONT>                    (flags &amp; HTML_ATTREMPTY) &gt; 0<a name="line.1950"></a>
<FONT color="green">1951</FONT>                        &amp;&amp; (value.length() == 0 || value.equalsIgnoreCase(name)))<a name="line.1951"></a>
<FONT color="green">1952</FONT>                {<a name="line.1952"></a>
<FONT color="green">1953</FONT>                    writer.write(' ');<a name="line.1953"></a>
<FONT color="green">1954</FONT>                    writer.write(name);<a name="line.1954"></a>
<FONT color="green">1955</FONT>                }<a name="line.1955"></a>
<FONT color="green">1956</FONT>                else<a name="line.1956"></a>
<FONT color="green">1957</FONT>                {<a name="line.1957"></a>
<FONT color="green">1958</FONT>                    writer.write(' ');<a name="line.1958"></a>
<FONT color="green">1959</FONT>                    writer.write(name);<a name="line.1959"></a>
<FONT color="green">1960</FONT>                    writer.write("=\"");<a name="line.1960"></a>
<FONT color="green">1961</FONT>                    if ((flags &amp; HTML_ATTRURL) &gt; 0)<a name="line.1961"></a>
<FONT color="green">1962</FONT>                    {<a name="line.1962"></a>
<FONT color="green">1963</FONT>                        writeAttrURI(writer, value, m_specialEscapeURLs);<a name="line.1963"></a>
<FONT color="green">1964</FONT>                    }<a name="line.1964"></a>
<FONT color="green">1965</FONT>                    else<a name="line.1965"></a>
<FONT color="green">1966</FONT>                    {<a name="line.1966"></a>
<FONT color="green">1967</FONT>                        writeAttrString(writer, value, this.getEncoding());<a name="line.1967"></a>
<FONT color="green">1968</FONT>                    }<a name="line.1968"></a>
<FONT color="green">1969</FONT>                    writer.write('"');<a name="line.1969"></a>
<FONT color="green">1970</FONT>                }<a name="line.1970"></a>
<FONT color="green">1971</FONT>            } catch (IOException e) {<a name="line.1971"></a>
<FONT color="green">1972</FONT>                throw new SAXException(e);<a name="line.1972"></a>
<FONT color="green">1973</FONT>            }<a name="line.1973"></a>
<FONT color="green">1974</FONT>        }<a name="line.1974"></a>
<FONT color="green">1975</FONT>    <a name="line.1975"></a>
<FONT color="green">1976</FONT>        public void comment(char ch[], int start, int length)<a name="line.1976"></a>
<FONT color="green">1977</FONT>                throws SAXException<a name="line.1977"></a>
<FONT color="green">1978</FONT>        {<a name="line.1978"></a>
<FONT color="green">1979</FONT>            // The internal DTD subset is not serialized by the ToHTMLStream serializer<a name="line.1979"></a>
<FONT color="green">1980</FONT>            if (m_inDTD)<a name="line.1980"></a>
<FONT color="green">1981</FONT>                return;<a name="line.1981"></a>
<FONT color="green">1982</FONT>            <a name="line.1982"></a>
<FONT color="green">1983</FONT>            // Clean up some pending issues, just in case<a name="line.1983"></a>
<FONT color="green">1984</FONT>            // this call is coming right after a startElement()<a name="line.1984"></a>
<FONT color="green">1985</FONT>            // or we are in the middle of writing out CDATA<a name="line.1985"></a>
<FONT color="green">1986</FONT>            // or if a startDocument() call was not received<a name="line.1986"></a>
<FONT color="green">1987</FONT>            if (m_elemContext.m_startTagOpen)<a name="line.1987"></a>
<FONT color="green">1988</FONT>            {<a name="line.1988"></a>
<FONT color="green">1989</FONT>                closeStartTag();<a name="line.1989"></a>
<FONT color="green">1990</FONT>                m_elemContext.m_startTagOpen = false;<a name="line.1990"></a>
<FONT color="green">1991</FONT>            }<a name="line.1991"></a>
<FONT color="green">1992</FONT>            else if (m_cdataTagOpen)<a name="line.1992"></a>
<FONT color="green">1993</FONT>            {<a name="line.1993"></a>
<FONT color="green">1994</FONT>                closeCDATA();<a name="line.1994"></a>
<FONT color="green">1995</FONT>            }<a name="line.1995"></a>
<FONT color="green">1996</FONT>            else if (m_needToCallStartDocument)<a name="line.1996"></a>
<FONT color="green">1997</FONT>            {<a name="line.1997"></a>
<FONT color="green">1998</FONT>                startDocumentInternal();<a name="line.1998"></a>
<FONT color="green">1999</FONT>            }<a name="line.1999"></a>
<FONT color="green">2000</FONT>    <a name="line.2000"></a>
<FONT color="green">2001</FONT>            /*<a name="line.2001"></a>
<FONT color="green">2002</FONT>             * Perhaps comments can be written out in HTML before the DOCTYPE.<a name="line.2002"></a>
<FONT color="green">2003</FONT>             * In this case we might delete this call to writeOutDOCTYPE, and<a name="line.2003"></a>
<FONT color="green">2004</FONT>             * it would be handled within the startElement() call.<a name="line.2004"></a>
<FONT color="green">2005</FONT>             */<a name="line.2005"></a>
<FONT color="green">2006</FONT>            if (m_needToOutputDocTypeDecl)<a name="line.2006"></a>
<FONT color="green">2007</FONT>                outputDocTypeDecl("html"); // best guess for the upcoming element<a name="line.2007"></a>
<FONT color="green">2008</FONT>    <a name="line.2008"></a>
<FONT color="green">2009</FONT>            super.comment(ch, start, length);<a name="line.2009"></a>
<FONT color="green">2010</FONT>        }<a name="line.2010"></a>
<FONT color="green">2011</FONT>        <a name="line.2011"></a>
<FONT color="green">2012</FONT>        public boolean reset()<a name="line.2012"></a>
<FONT color="green">2013</FONT>        {<a name="line.2013"></a>
<FONT color="green">2014</FONT>            boolean ret = super.reset();<a name="line.2014"></a>
<FONT color="green">2015</FONT>            if (!ret)<a name="line.2015"></a>
<FONT color="green">2016</FONT>                return false;<a name="line.2016"></a>
<FONT color="green">2017</FONT>            resetToHTMLStream();<a name="line.2017"></a>
<FONT color="green">2018</FONT>            return true;        <a name="line.2018"></a>
<FONT color="green">2019</FONT>        }<a name="line.2019"></a>
<FONT color="green">2020</FONT>        <a name="line.2020"></a>
<FONT color="green">2021</FONT>        private void resetToHTMLStream()<a name="line.2021"></a>
<FONT color="green">2022</FONT>        {<a name="line.2022"></a>
<FONT color="green">2023</FONT>            // m_htmlcharInfo remains unchanged<a name="line.2023"></a>
<FONT color="green">2024</FONT>            // m_htmlInfo = null;  // Don't reset<a name="line.2024"></a>
<FONT color="green">2025</FONT>            m_inBlockElem = false;<a name="line.2025"></a>
<FONT color="green">2026</FONT>            m_inDTD = false;<a name="line.2026"></a>
<FONT color="green">2027</FONT>            m_omitMetaTag = false;<a name="line.2027"></a>
<FONT color="green">2028</FONT>            m_specialEscapeURLs = true;     <a name="line.2028"></a>
<FONT color="green">2029</FONT>        }<a name="line.2029"></a>
<FONT color="green">2030</FONT>        <a name="line.2030"></a>
<FONT color="green">2031</FONT>        static class Trie<a name="line.2031"></a>
<FONT color="green">2032</FONT>        {<a name="line.2032"></a>
<FONT color="green">2033</FONT>            /**<a name="line.2033"></a>
<FONT color="green">2034</FONT>             * A digital search trie for 7-bit ASCII text<a name="line.2034"></a>
<FONT color="green">2035</FONT>             * The API is a subset of java.util.Hashtable<a name="line.2035"></a>
<FONT color="green">2036</FONT>             * The key must be a 7-bit ASCII string<a name="line.2036"></a>
<FONT color="green">2037</FONT>             * The value may be any Java Object<a name="line.2037"></a>
<FONT color="green">2038</FONT>             * One can get an object stored in a trie from its key, <a name="line.2038"></a>
<FONT color="green">2039</FONT>             * but the search is either case sensitive or case <a name="line.2039"></a>
<FONT color="green">2040</FONT>             * insensitive to the characters in the key, and this<a name="line.2040"></a>
<FONT color="green">2041</FONT>             * choice of sensitivity or insensitivity is made when<a name="line.2041"></a>
<FONT color="green">2042</FONT>             * the Trie is created, before any objects are put in it.<a name="line.2042"></a>
<FONT color="green">2043</FONT>             * <a name="line.2043"></a>
<FONT color="green">2044</FONT>             * This class is a copy of the one in org.apache.xml.utils. <a name="line.2044"></a>
<FONT color="green">2045</FONT>             * It exists to cut the serializers dependancy on that package.<a name="line.2045"></a>
<FONT color="green">2046</FONT>             *  <a name="line.2046"></a>
<FONT color="green">2047</FONT>             * @xsl.usage internal<a name="line.2047"></a>
<FONT color="green">2048</FONT>             */<a name="line.2048"></a>
<FONT color="green">2049</FONT>    <a name="line.2049"></a>
<FONT color="green">2050</FONT>            /** Size of the m_nextChar array.  */<a name="line.2050"></a>
<FONT color="green">2051</FONT>            public static final int ALPHA_SIZE = 128;<a name="line.2051"></a>
<FONT color="green">2052</FONT>    <a name="line.2052"></a>
<FONT color="green">2053</FONT>            /** The root node of the tree.    */<a name="line.2053"></a>
<FONT color="green">2054</FONT>            final Node m_Root;<a name="line.2054"></a>
<FONT color="green">2055</FONT>    <a name="line.2055"></a>
<FONT color="green">2056</FONT>            /** helper buffer to convert Strings to char arrays */<a name="line.2056"></a>
<FONT color="green">2057</FONT>            private char[] m_charBuffer = new char[0];<a name="line.2057"></a>
<FONT color="green">2058</FONT>    <a name="line.2058"></a>
<FONT color="green">2059</FONT>            /** true if the search for an object is lower case only with the key */<a name="line.2059"></a>
<FONT color="green">2060</FONT>            private final boolean m_lowerCaseOnly;<a name="line.2060"></a>
<FONT color="green">2061</FONT>    <a name="line.2061"></a>
<FONT color="green">2062</FONT>            /**<a name="line.2062"></a>
<FONT color="green">2063</FONT>             * Construct the trie that has a case insensitive search.<a name="line.2063"></a>
<FONT color="green">2064</FONT>             */<a name="line.2064"></a>
<FONT color="green">2065</FONT>            public Trie()<a name="line.2065"></a>
<FONT color="green">2066</FONT>            {<a name="line.2066"></a>
<FONT color="green">2067</FONT>                m_Root = new Node();<a name="line.2067"></a>
<FONT color="green">2068</FONT>                m_lowerCaseOnly = false;<a name="line.2068"></a>
<FONT color="green">2069</FONT>            }<a name="line.2069"></a>
<FONT color="green">2070</FONT>    <a name="line.2070"></a>
<FONT color="green">2071</FONT>            /**<a name="line.2071"></a>
<FONT color="green">2072</FONT>             * Construct the trie given the desired case sensitivity with the key.<a name="line.2072"></a>
<FONT color="green">2073</FONT>             * @param lowerCaseOnly true if the search keys are to be loser case only,<a name="line.2073"></a>
<FONT color="green">2074</FONT>             * not case insensitive.<a name="line.2074"></a>
<FONT color="green">2075</FONT>             */<a name="line.2075"></a>
<FONT color="green">2076</FONT>            public Trie(boolean lowerCaseOnly)<a name="line.2076"></a>
<FONT color="green">2077</FONT>            {<a name="line.2077"></a>
<FONT color="green">2078</FONT>                m_Root = new Node();<a name="line.2078"></a>
<FONT color="green">2079</FONT>                m_lowerCaseOnly = lowerCaseOnly;<a name="line.2079"></a>
<FONT color="green">2080</FONT>            }<a name="line.2080"></a>
<FONT color="green">2081</FONT>    <a name="line.2081"></a>
<FONT color="green">2082</FONT>            /**<a name="line.2082"></a>
<FONT color="green">2083</FONT>             * Put an object into the trie for lookup.<a name="line.2083"></a>
<FONT color="green">2084</FONT>             *<a name="line.2084"></a>
<FONT color="green">2085</FONT>             * @param key must be a 7-bit ASCII string<a name="line.2085"></a>
<FONT color="green">2086</FONT>             * @param value any java object.<a name="line.2086"></a>
<FONT color="green">2087</FONT>             *<a name="line.2087"></a>
<FONT color="green">2088</FONT>             * @return The old object that matched key, or null.<a name="line.2088"></a>
<FONT color="green">2089</FONT>             */<a name="line.2089"></a>
<FONT color="green">2090</FONT>            public Object put(String key, Object value)<a name="line.2090"></a>
<FONT color="green">2091</FONT>            {<a name="line.2091"></a>
<FONT color="green">2092</FONT>    <a name="line.2092"></a>
<FONT color="green">2093</FONT>                final int len = key.length();<a name="line.2093"></a>
<FONT color="green">2094</FONT>                if (len &gt; m_charBuffer.length)<a name="line.2094"></a>
<FONT color="green">2095</FONT>                {<a name="line.2095"></a>
<FONT color="green">2096</FONT>                    // make the biggest buffer ever needed in get(String)<a name="line.2096"></a>
<FONT color="green">2097</FONT>                    m_charBuffer = new char[len];<a name="line.2097"></a>
<FONT color="green">2098</FONT>                }<a name="line.2098"></a>
<FONT color="green">2099</FONT>    <a name="line.2099"></a>
<FONT color="green">2100</FONT>                Node node = m_Root;<a name="line.2100"></a>
<FONT color="green">2101</FONT>    <a name="line.2101"></a>
<FONT color="green">2102</FONT>                for (int i = 0; i &lt; len; i++)<a name="line.2102"></a>
<FONT color="green">2103</FONT>                {<a name="line.2103"></a>
<FONT color="green">2104</FONT>                    Node nextNode =<a name="line.2104"></a>
<FONT color="green">2105</FONT>                        node.m_nextChar[Character.toLowerCase(key.charAt(i))];<a name="line.2105"></a>
<FONT color="green">2106</FONT>    <a name="line.2106"></a>
<FONT color="green">2107</FONT>                    if (nextNode != null)<a name="line.2107"></a>
<FONT color="green">2108</FONT>                    {<a name="line.2108"></a>
<FONT color="green">2109</FONT>                        node = nextNode;<a name="line.2109"></a>
<FONT color="green">2110</FONT>                    }<a name="line.2110"></a>
<FONT color="green">2111</FONT>                    else<a name="line.2111"></a>
<FONT color="green">2112</FONT>                    {<a name="line.2112"></a>
<FONT color="green">2113</FONT>                        for (; i &lt; len; i++)<a name="line.2113"></a>
<FONT color="green">2114</FONT>                        {<a name="line.2114"></a>
<FONT color="green">2115</FONT>                            Node newNode = new Node();<a name="line.2115"></a>
<FONT color="green">2116</FONT>                            if (m_lowerCaseOnly)<a name="line.2116"></a>
<FONT color="green">2117</FONT>                            {<a name="line.2117"></a>
<FONT color="green">2118</FONT>                                // put this value into the tree only with a lower case key <a name="line.2118"></a>
<FONT color="green">2119</FONT>                                node.m_nextChar[Character.toLowerCase(<a name="line.2119"></a>
<FONT color="green">2120</FONT>                                    key.charAt(i))] =<a name="line.2120"></a>
<FONT color="green">2121</FONT>                                    newNode;<a name="line.2121"></a>
<FONT color="green">2122</FONT>                            }<a name="line.2122"></a>
<FONT color="green">2123</FONT>                            else<a name="line.2123"></a>
<FONT color="green">2124</FONT>                            {<a name="line.2124"></a>
<FONT color="green">2125</FONT>                                // put this value into the tree with a case insensitive key<a name="line.2125"></a>
<FONT color="green">2126</FONT>                                node.m_nextChar[Character.toUpperCase(<a name="line.2126"></a>
<FONT color="green">2127</FONT>                                    key.charAt(i))] =<a name="line.2127"></a>
<FONT color="green">2128</FONT>                                    newNode;<a name="line.2128"></a>
<FONT color="green">2129</FONT>                                node.m_nextChar[Character.toLowerCase(<a name="line.2129"></a>
<FONT color="green">2130</FONT>                                    key.charAt(i))] =<a name="line.2130"></a>
<FONT color="green">2131</FONT>                                    newNode;<a name="line.2131"></a>
<FONT color="green">2132</FONT>                            }<a name="line.2132"></a>
<FONT color="green">2133</FONT>                            node = newNode;<a name="line.2133"></a>
<FONT color="green">2134</FONT>                        }<a name="line.2134"></a>
<FONT color="green">2135</FONT>                        break;<a name="line.2135"></a>
<FONT color="green">2136</FONT>                    }<a name="line.2136"></a>
<FONT color="green">2137</FONT>                }<a name="line.2137"></a>
<FONT color="green">2138</FONT>    <a name="line.2138"></a>
<FONT color="green">2139</FONT>                Object ret = node.m_Value;<a name="line.2139"></a>
<FONT color="green">2140</FONT>    <a name="line.2140"></a>
<FONT color="green">2141</FONT>                node.m_Value = value;<a name="line.2141"></a>
<FONT color="green">2142</FONT>    <a name="line.2142"></a>
<FONT color="green">2143</FONT>                return ret;<a name="line.2143"></a>
<FONT color="green">2144</FONT>            }<a name="line.2144"></a>
<FONT color="green">2145</FONT>    <a name="line.2145"></a>
<FONT color="green">2146</FONT>            /**<a name="line.2146"></a>
<FONT color="green">2147</FONT>             * Get an object that matches the key.<a name="line.2147"></a>
<FONT color="green">2148</FONT>             *<a name="line.2148"></a>
<FONT color="green">2149</FONT>             * @param key must be a 7-bit ASCII string<a name="line.2149"></a>
<FONT color="green">2150</FONT>             *<a name="line.2150"></a>
<FONT color="green">2151</FONT>             * @return The object that matches the key, or null.<a name="line.2151"></a>
<FONT color="green">2152</FONT>             */<a name="line.2152"></a>
<FONT color="green">2153</FONT>            public Object get(final String key)<a name="line.2153"></a>
<FONT color="green">2154</FONT>            {<a name="line.2154"></a>
<FONT color="green">2155</FONT>    <a name="line.2155"></a>
<FONT color="green">2156</FONT>                final int len = key.length();<a name="line.2156"></a>
<FONT color="green">2157</FONT>    <a name="line.2157"></a>
<FONT color="green">2158</FONT>                /* If the name is too long, we won't find it, this also keeps us<a name="line.2158"></a>
<FONT color="green">2159</FONT>                 * from overflowing m_charBuffer<a name="line.2159"></a>
<FONT color="green">2160</FONT>                 */<a name="line.2160"></a>
<FONT color="green">2161</FONT>                if (m_charBuffer.length &lt; len)<a name="line.2161"></a>
<FONT color="green">2162</FONT>                    return null;<a name="line.2162"></a>
<FONT color="green">2163</FONT>    <a name="line.2163"></a>
<FONT color="green">2164</FONT>                Node node = m_Root;<a name="line.2164"></a>
<FONT color="green">2165</FONT>                switch (len) // optimize the look up based on the number of chars<a name="line.2165"></a>
<FONT color="green">2166</FONT>                {<a name="line.2166"></a>
<FONT color="green">2167</FONT>                    // case 0 looks silly, but the generated bytecode runs<a name="line.2167"></a>
<FONT color="green">2168</FONT>                    // faster for lookup of elements of length 2 with this in<a name="line.2168"></a>
<FONT color="green">2169</FONT>                    // and a fair bit faster.  Don't know why.<a name="line.2169"></a>
<FONT color="green">2170</FONT>                    case 0 :<a name="line.2170"></a>
<FONT color="green">2171</FONT>                        {<a name="line.2171"></a>
<FONT color="green">2172</FONT>                            return null;<a name="line.2172"></a>
<FONT color="green">2173</FONT>                        }<a name="line.2173"></a>
<FONT color="green">2174</FONT>    <a name="line.2174"></a>
<FONT color="green">2175</FONT>                    case 1 :<a name="line.2175"></a>
<FONT color="green">2176</FONT>                        {<a name="line.2176"></a>
<FONT color="green">2177</FONT>                            final char ch = key.charAt(0);<a name="line.2177"></a>
<FONT color="green">2178</FONT>                            if (ch &lt; ALPHA_SIZE)<a name="line.2178"></a>
<FONT color="green">2179</FONT>                            {<a name="line.2179"></a>
<FONT color="green">2180</FONT>                                node = node.m_nextChar[ch];<a name="line.2180"></a>
<FONT color="green">2181</FONT>                                if (node != null)<a name="line.2181"></a>
<FONT color="green">2182</FONT>                                    return node.m_Value;<a name="line.2182"></a>
<FONT color="green">2183</FONT>                            }<a name="line.2183"></a>
<FONT color="green">2184</FONT>                            return null;<a name="line.2184"></a>
<FONT color="green">2185</FONT>                        }<a name="line.2185"></a>
<FONT color="green">2186</FONT>                        //                comment out case 2 because the default is faster            <a name="line.2186"></a>
<FONT color="green">2187</FONT>                        //                case 2 :<a name="line.2187"></a>
<FONT color="green">2188</FONT>                        //                    {<a name="line.2188"></a>
<FONT color="green">2189</FONT>                        //                        final char ch0 = key.charAt(0);<a name="line.2189"></a>
<FONT color="green">2190</FONT>                        //                        final char ch1 = key.charAt(1);<a name="line.2190"></a>
<FONT color="green">2191</FONT>                        //                        if (ch0 &lt; ALPHA_SIZE &amp;&amp; ch1 &lt; ALPHA_SIZE)<a name="line.2191"></a>
<FONT color="green">2192</FONT>                        //                        {<a name="line.2192"></a>
<FONT color="green">2193</FONT>                        //                            node = node.m_nextChar[ch0];<a name="line.2193"></a>
<FONT color="green">2194</FONT>                        //                            if (node != null)<a name="line.2194"></a>
<FONT color="green">2195</FONT>                        //                            {<a name="line.2195"></a>
<FONT color="green">2196</FONT>                        //                        <a name="line.2196"></a>
<FONT color="green">2197</FONT>                        //                                if (ch1 &lt; ALPHA_SIZE) <a name="line.2197"></a>
<FONT color="green">2198</FONT>                        //                                {<a name="line.2198"></a>
<FONT color="green">2199</FONT>                        //                                    node = node.m_nextChar[ch1];<a name="line.2199"></a>
<FONT color="green">2200</FONT>                        //                                    if (node != null)<a name="line.2200"></a>
<FONT color="green">2201</FONT>                        //                                        return node.m_Value;<a name="line.2201"></a>
<FONT color="green">2202</FONT>                        //                                }<a name="line.2202"></a>
<FONT color="green">2203</FONT>                        //                            }<a name="line.2203"></a>
<FONT color="green">2204</FONT>                        //                        }<a name="line.2204"></a>
<FONT color="green">2205</FONT>                        //                        return null;<a name="line.2205"></a>
<FONT color="green">2206</FONT>                        //                   }<a name="line.2206"></a>
<FONT color="green">2207</FONT>                    default :<a name="line.2207"></a>
<FONT color="green">2208</FONT>                        {<a name="line.2208"></a>
<FONT color="green">2209</FONT>                            for (int i = 0; i &lt; len; i++)<a name="line.2209"></a>
<FONT color="green">2210</FONT>                            {<a name="line.2210"></a>
<FONT color="green">2211</FONT>                                // A thread-safe way to loop over the characters<a name="line.2211"></a>
<FONT color="green">2212</FONT>                                final char ch = key.charAt(i);<a name="line.2212"></a>
<FONT color="green">2213</FONT>                                if (ALPHA_SIZE &lt;= ch)<a name="line.2213"></a>
<FONT color="green">2214</FONT>                                {<a name="line.2214"></a>
<FONT color="green">2215</FONT>                                    // the key is not 7-bit ASCII so we won't find it here<a name="line.2215"></a>
<FONT color="green">2216</FONT>                                    return null;<a name="line.2216"></a>
<FONT color="green">2217</FONT>                                }<a name="line.2217"></a>
<FONT color="green">2218</FONT>    <a name="line.2218"></a>
<FONT color="green">2219</FONT>                                node = node.m_nextChar[ch];<a name="line.2219"></a>
<FONT color="green">2220</FONT>                                if (node == null)<a name="line.2220"></a>
<FONT color="green">2221</FONT>                                    return null;<a name="line.2221"></a>
<FONT color="green">2222</FONT>                            }<a name="line.2222"></a>
<FONT color="green">2223</FONT>    <a name="line.2223"></a>
<FONT color="green">2224</FONT>                            return node.m_Value;<a name="line.2224"></a>
<FONT color="green">2225</FONT>                        }<a name="line.2225"></a>
<FONT color="green">2226</FONT>                }<a name="line.2226"></a>
<FONT color="green">2227</FONT>            }<a name="line.2227"></a>
<FONT color="green">2228</FONT>    <a name="line.2228"></a>
<FONT color="green">2229</FONT>            /**<a name="line.2229"></a>
<FONT color="green">2230</FONT>             * The node representation for the trie.<a name="line.2230"></a>
<FONT color="green">2231</FONT>             * @xsl.usage internal<a name="line.2231"></a>
<FONT color="green">2232</FONT>             */<a name="line.2232"></a>
<FONT color="green">2233</FONT>            private static class Node<a name="line.2233"></a>
<FONT color="green">2234</FONT>            {<a name="line.2234"></a>
<FONT color="green">2235</FONT>    <a name="line.2235"></a>
<FONT color="green">2236</FONT>                /**<a name="line.2236"></a>
<FONT color="green">2237</FONT>                 * Constructor, creates a Node[ALPHA_SIZE].<a name="line.2237"></a>
<FONT color="green">2238</FONT>                 */<a name="line.2238"></a>
<FONT color="green">2239</FONT>                Node()<a name="line.2239"></a>
<FONT color="green">2240</FONT>                {<a name="line.2240"></a>
<FONT color="green">2241</FONT>                    m_nextChar = new Node[ALPHA_SIZE];<a name="line.2241"></a>
<FONT color="green">2242</FONT>                    m_Value = null;<a name="line.2242"></a>
<FONT color="green">2243</FONT>                }<a name="line.2243"></a>
<FONT color="green">2244</FONT>    <a name="line.2244"></a>
<FONT color="green">2245</FONT>                /** The next nodes.   */<a name="line.2245"></a>
<FONT color="green">2246</FONT>                final Node m_nextChar[];<a name="line.2246"></a>
<FONT color="green">2247</FONT>    <a name="line.2247"></a>
<FONT color="green">2248</FONT>                /** The value.   */<a name="line.2248"></a>
<FONT color="green">2249</FONT>                Object m_Value;<a name="line.2249"></a>
<FONT color="green">2250</FONT>            }<a name="line.2250"></a>
<FONT color="green">2251</FONT>            /**<a name="line.2251"></a>
<FONT color="green">2252</FONT>             * Construct the trie from another Trie.<a name="line.2252"></a>
<FONT color="green">2253</FONT>             * Both the existing Trie and this new one share the same table for<a name="line.2253"></a>
<FONT color="green">2254</FONT>             * lookup, and it is assumed that the table is fully populated and<a name="line.2254"></a>
<FONT color="green">2255</FONT>             * not changing anymore.<a name="line.2255"></a>
<FONT color="green">2256</FONT>             * <a name="line.2256"></a>
<FONT color="green">2257</FONT>             * @param existingTrie the Trie that this one is a copy of.<a name="line.2257"></a>
<FONT color="green">2258</FONT>             */<a name="line.2258"></a>
<FONT color="green">2259</FONT>            public Trie(Trie existingTrie)<a name="line.2259"></a>
<FONT color="green">2260</FONT>            {<a name="line.2260"></a>
<FONT color="green">2261</FONT>                // copy some fields from the existing Trie into this one.<a name="line.2261"></a>
<FONT color="green">2262</FONT>                m_Root = existingTrie.m_Root;<a name="line.2262"></a>
<FONT color="green">2263</FONT>                m_lowerCaseOnly = existingTrie.m_lowerCaseOnly;<a name="line.2263"></a>
<FONT color="green">2264</FONT>    <a name="line.2264"></a>
<FONT color="green">2265</FONT>                // get a buffer just big enough to hold the longest key in the table.<a name="line.2265"></a>
<FONT color="green">2266</FONT>                int max = existingTrie.getLongestKeyLength();<a name="line.2266"></a>
<FONT color="green">2267</FONT>                m_charBuffer = new char[max];<a name="line.2267"></a>
<FONT color="green">2268</FONT>            }<a name="line.2268"></a>
<FONT color="green">2269</FONT>    <a name="line.2269"></a>
<FONT color="green">2270</FONT>            /**<a name="line.2270"></a>
<FONT color="green">2271</FONT>             * Get an object that matches the key.<a name="line.2271"></a>
<FONT color="green">2272</FONT>             * This method is faster than get(), but is not thread-safe.<a name="line.2272"></a>
<FONT color="green">2273</FONT>             *<a name="line.2273"></a>
<FONT color="green">2274</FONT>             * @param key must be a 7-bit ASCII string<a name="line.2274"></a>
<FONT color="green">2275</FONT>             *<a name="line.2275"></a>
<FONT color="green">2276</FONT>             * @return The object that matches the key, or null.<a name="line.2276"></a>
<FONT color="green">2277</FONT>             */<a name="line.2277"></a>
<FONT color="green">2278</FONT>            public Object get2(final String key)<a name="line.2278"></a>
<FONT color="green">2279</FONT>            {<a name="line.2279"></a>
<FONT color="green">2280</FONT>    <a name="line.2280"></a>
<FONT color="green">2281</FONT>                final int len = key.length();<a name="line.2281"></a>
<FONT color="green">2282</FONT>    <a name="line.2282"></a>
<FONT color="green">2283</FONT>                /* If the name is too long, we won't find it, this also keeps us<a name="line.2283"></a>
<FONT color="green">2284</FONT>                 * from overflowing m_charBuffer<a name="line.2284"></a>
<FONT color="green">2285</FONT>                 */<a name="line.2285"></a>
<FONT color="green">2286</FONT>                if (m_charBuffer.length &lt; len)<a name="line.2286"></a>
<FONT color="green">2287</FONT>                    return null;<a name="line.2287"></a>
<FONT color="green">2288</FONT>    <a name="line.2288"></a>
<FONT color="green">2289</FONT>                Node node = m_Root;<a name="line.2289"></a>
<FONT color="green">2290</FONT>                switch (len) // optimize the look up based on the number of chars<a name="line.2290"></a>
<FONT color="green">2291</FONT>                {<a name="line.2291"></a>
<FONT color="green">2292</FONT>                    // case 0 looks silly, but the generated bytecode runs<a name="line.2292"></a>
<FONT color="green">2293</FONT>                    // faster for lookup of elements of length 2 with this in<a name="line.2293"></a>
<FONT color="green">2294</FONT>                    // and a fair bit faster.  Don't know why.<a name="line.2294"></a>
<FONT color="green">2295</FONT>                    case 0 :<a name="line.2295"></a>
<FONT color="green">2296</FONT>                        {<a name="line.2296"></a>
<FONT color="green">2297</FONT>                            return null;<a name="line.2297"></a>
<FONT color="green">2298</FONT>                        }<a name="line.2298"></a>
<FONT color="green">2299</FONT>    <a name="line.2299"></a>
<FONT color="green">2300</FONT>                    case 1 :<a name="line.2300"></a>
<FONT color="green">2301</FONT>                        {<a name="line.2301"></a>
<FONT color="green">2302</FONT>                            final char ch = key.charAt(0);<a name="line.2302"></a>
<FONT color="green">2303</FONT>                            if (ch &lt; ALPHA_SIZE)<a name="line.2303"></a>
<FONT color="green">2304</FONT>                            {<a name="line.2304"></a>
<FONT color="green">2305</FONT>                                node = node.m_nextChar[ch];<a name="line.2305"></a>
<FONT color="green">2306</FONT>                                if (node != null)<a name="line.2306"></a>
<FONT color="green">2307</FONT>                                    return node.m_Value;<a name="line.2307"></a>
<FONT color="green">2308</FONT>                            }<a name="line.2308"></a>
<FONT color="green">2309</FONT>                            return null;<a name="line.2309"></a>
<FONT color="green">2310</FONT>                        }<a name="line.2310"></a>
<FONT color="green">2311</FONT>                    default :<a name="line.2311"></a>
<FONT color="green">2312</FONT>                        {<a name="line.2312"></a>
<FONT color="green">2313</FONT>                            /* Copy string into array. This is not thread-safe because<a name="line.2313"></a>
<FONT color="green">2314</FONT>                             * it modifies the contents of m_charBuffer. If multiple<a name="line.2314"></a>
<FONT color="green">2315</FONT>                             * threads were to use this Trie they all would be<a name="line.2315"></a>
<FONT color="green">2316</FONT>                             * using this same array (not good). So this <a name="line.2316"></a>
<FONT color="green">2317</FONT>                             * method is not thread-safe, but it is faster because<a name="line.2317"></a>
<FONT color="green">2318</FONT>                             * converting to a char[] and looping over elements of<a name="line.2318"></a>
<FONT color="green">2319</FONT>                             * the array is faster than a String's charAt(i).<a name="line.2319"></a>
<FONT color="green">2320</FONT>                             */<a name="line.2320"></a>
<FONT color="green">2321</FONT>                            key.getChars(0, len, m_charBuffer, 0);<a name="line.2321"></a>
<FONT color="green">2322</FONT>    <a name="line.2322"></a>
<FONT color="green">2323</FONT>                            for (int i = 0; i &lt; len; i++)<a name="line.2323"></a>
<FONT color="green">2324</FONT>                            {<a name="line.2324"></a>
<FONT color="green">2325</FONT>                                final char ch = m_charBuffer[i];<a name="line.2325"></a>
<FONT color="green">2326</FONT>                                if (ALPHA_SIZE &lt;= ch)<a name="line.2326"></a>
<FONT color="green">2327</FONT>                                {<a name="line.2327"></a>
<FONT color="green">2328</FONT>                                    // the key is not 7-bit ASCII so we won't find it here<a name="line.2328"></a>
<FONT color="green">2329</FONT>                                    return null;<a name="line.2329"></a>
<FONT color="green">2330</FONT>                                }<a name="line.2330"></a>
<FONT color="green">2331</FONT>    <a name="line.2331"></a>
<FONT color="green">2332</FONT>                                node = node.m_nextChar[ch];<a name="line.2332"></a>
<FONT color="green">2333</FONT>                                if (node == null)<a name="line.2333"></a>
<FONT color="green">2334</FONT>                                    return null;<a name="line.2334"></a>
<FONT color="green">2335</FONT>                            }<a name="line.2335"></a>
<FONT color="green">2336</FONT>    <a name="line.2336"></a>
<FONT color="green">2337</FONT>                            return node.m_Value;<a name="line.2337"></a>
<FONT color="green">2338</FONT>                        }<a name="line.2338"></a>
<FONT color="green">2339</FONT>                }<a name="line.2339"></a>
<FONT color="green">2340</FONT>            }<a name="line.2340"></a>
<FONT color="green">2341</FONT>    <a name="line.2341"></a>
<FONT color="green">2342</FONT>            /**<a name="line.2342"></a>
<FONT color="green">2343</FONT>             * Get the length of the longest key used in the table. <a name="line.2343"></a>
<FONT color="green">2344</FONT>             */<a name="line.2344"></a>
<FONT color="green">2345</FONT>            public int getLongestKeyLength()<a name="line.2345"></a>
<FONT color="green">2346</FONT>            {<a name="line.2346"></a>
<FONT color="green">2347</FONT>                return m_charBuffer.length;<a name="line.2347"></a>
<FONT color="green">2348</FONT>            }<a name="line.2348"></a>
<FONT color="green">2349</FONT>        }<a name="line.2349"></a>
<FONT color="green">2350</FONT>    }<a name="line.2350"></a>




























































</PRE>
</BODY>
</HTML>
