Hi Fu., Am Dienstag, den 17.10.2006, 22:15 +0900 schrieb fchoong@xxxxxxxxxxx: > Hi Roman, > Thanks! That makes it much clearer! But I Still do not understand what is > meant by "Unwanted" in the closeOutUnwantedEmbeddedTags()... :( Well. The API docs for writeEmbeddedTags() says: <<Searches for embedded tags in the AttributeSet and writes them out. It also stores these tags in a vector so that when appropriate the corresponding end tags can be written out.>> Then, the API docs for closeOutUnwantedEmbeddedTags() says the following: <<Searches the attribute set and for each tag that is stored in the tag vector. If the tag isnt found, then the tag is removed from the vector and a corresponding end tag is written out.>> This means to me that writeEmbeddedtag() writes the opening tags for the embedded tags in the AttributeSet and stores them in a datastructure (they say vector, but I suppose its better to use an HashSet since this is not public, and HashSet seems much more efficient here). Actually, in my understanding, we should only write an opening tag for an embedded tag that is in the AttributeSet, but not yet in the datastructure. Now, for the following tags the closeOutUnwantedEmbeddedTags() does the opposite: For each tag in the vector that is _not_ in the AttributeSet, it writes out the end tag (because for an embedded tag not present in the AttributeSet it means it must be closed). I hope that this helps. (And also note that this is only my interpretation of the specs in the light of the underlying modeling of HTML). Cheers, Roman