X4O: Fixed html void element auto folding to allowed tags only
This commit is contained in:
parent
c71f8c0a82
commit
045f6d07f6
2 changed files with 77 additions and 32 deletions
|
|
@ -24,7 +24,10 @@ package org.x4o.sax3;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.x4o.sax3.io.ContentCloseable;
|
||||
import org.x4o.sax3.io.SAX3PropertyConfig;
|
||||
|
|
@ -40,8 +43,11 @@ import org.xml.sax.helpers.AttributesImpl;
|
|||
*/
|
||||
public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3WriterXml> {
|
||||
|
||||
static public final List<String> HTML_VOID_TAGS = Collections.unmodifiableList(Tag.valuesVoidElement());
|
||||
|
||||
public SAX3WriterHtml(Writer out, String encoding) {
|
||||
super(new SAX3WriterXml(out, encoding), "", SAX3XMLConstants.NULL_NS_URI);
|
||||
getPropertyConfig().setProperty(SAX3WriterXml.OUTPUT_FOLD_EMPTY_TAGS, HTML_VOID_TAGS);
|
||||
}
|
||||
|
||||
public SAX3PropertyConfig getPropertyConfig() {
|
||||
|
|
@ -247,7 +253,7 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
|
||||
/* Deprecated TAGS */
|
||||
frameset,
|
||||
frame,
|
||||
frame(true),
|
||||
noframes,
|
||||
tt,
|
||||
font,
|
||||
|
|
@ -259,14 +265,17 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
acronym,
|
||||
applet,
|
||||
iframe,
|
||||
menuitem(true),
|
||||
keygen(true),
|
||||
command(true),
|
||||
|
||||
/* HTML 4 TAGS */
|
||||
html,
|
||||
head,
|
||||
title,
|
||||
meta,
|
||||
link,
|
||||
base,
|
||||
meta(true),
|
||||
link(true),
|
||||
base(true),
|
||||
body,
|
||||
script,
|
||||
style,
|
||||
|
|
@ -282,9 +291,9 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
span,
|
||||
p,
|
||||
pre,
|
||||
img,
|
||||
hr,
|
||||
br,
|
||||
img(true),
|
||||
hr(true),
|
||||
br(true),
|
||||
b,
|
||||
em,
|
||||
strong,
|
||||
|
|
@ -308,12 +317,12 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
|
||||
abbr,
|
||||
address,
|
||||
area,
|
||||
area(true),
|
||||
bdo,
|
||||
blockquote,
|
||||
cite,
|
||||
code,
|
||||
col,
|
||||
col(true),
|
||||
colgroup,
|
||||
del,
|
||||
dfn,
|
||||
|
|
@ -324,7 +333,7 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
map,
|
||||
menu,
|
||||
object,
|
||||
param,
|
||||
param(true),
|
||||
optgroup,
|
||||
q,
|
||||
s,
|
||||
|
|
@ -335,7 +344,7 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
|
||||
form,
|
||||
fieldset,
|
||||
input,
|
||||
input(true),
|
||||
option,
|
||||
label,
|
||||
button,
|
||||
|
|
@ -346,16 +355,14 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
canvas,
|
||||
audio,
|
||||
video,
|
||||
source,
|
||||
embed,
|
||||
track,
|
||||
source(true),
|
||||
embed(true),
|
||||
track(true),
|
||||
datalist,
|
||||
keygen,
|
||||
output,
|
||||
article,
|
||||
aside,
|
||||
bdi,
|
||||
command,
|
||||
details,
|
||||
dialog,
|
||||
summary,
|
||||
|
|
@ -373,7 +380,26 @@ public class SAX3WriterHtml extends SAX3WriterEnum<SAX3WriterHtml.Tag, SAX3Write
|
|||
rp,
|
||||
section,
|
||||
time,
|
||||
wbr,;
|
||||
wbr(true),
|
||||
;
|
||||
|
||||
private final boolean voidElement;
|
||||
|
||||
private Tag() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
private Tag(boolean voidElement) {
|
||||
this.voidElement = voidElement;
|
||||
}
|
||||
|
||||
public boolean voidElement() {
|
||||
return voidElement;
|
||||
}
|
||||
|
||||
static public List<String> valuesVoidElement() {
|
||||
return Arrays.stream(values()).filter(v -> v.voidElement()).map(v -> v.name()).toList();
|
||||
}
|
||||
}
|
||||
|
||||
private final static String DOCTYPE_NAME = "HTML PUBLIC";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue