/* * * This file is part of the iText (R) project. Copyright (c) 1998-2017 iText Group NV * Authors: Balder Van Camp, Emiel Ackermann, et al. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License version 3 * as published by the Free Software Foundation with the addition of the * following permission added to Section 15 as permitted in Section 7(a): * FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY * ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT * OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. You should have received a copy of the GNU Affero General Public * License along with this program; if not, see http://www.gnu.org/licenses or * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA, 02110-1301 USA, or download the license from the following URL: * http://itextpdf.com/terms-of-use/ * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License. * * In accordance with Section 7(b) of the GNU Affero General Public License, a * covered work must retain the producer line in every PDF that is created or * manipulated using iText. * * You can be released from the requirements of the license by purchasing a * commercial license. Buying such a license is mandatory as soon as you develop * commercial activities involving the iText software without disclosing the * source code of your own applications. These activities include: offering paid * services to customers as an ASP, serving PDFs on the fly in a web * application, shipping iText with a closed source product. * * For more information, please contact iText Software Corp. at this address: * sales@itextpdf.com */ package com.itextpdf.tool.xml.html; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * Contains Strings of all used HTML tags and attributes. * * @author redlab_b * */ @SuppressWarnings("javadoc") public final class HTML { /** * */ private HTML() { } /** * * All Tags used in HTML. * */ public final static class Tag { private Tag() { } public static final String XML = "xml"; public static final String THEAD = "thead"; public static final String TBODY = "tbody"; public static final String TFOOT = "tfoot"; public static final String OL = "ol"; public static final String UL = "ul"; public static final String CAPTION = "caption"; public static final String PRE = "pre"; public static final String P = "p"; public static final String DIV = "div"; public static final String H1 = "h1"; public static final String H2 = "h2"; public static final String H3 = "h3"; public static final String H4 = "h4"; public static final String H5 = "h5"; public static final String H6 = "h6"; public static final String TD = "td"; public static final String BR = "br"; public static final String LI = "li"; public static final String DD = "dd"; public static final String DT = "dt"; public static final String TH = "th"; public static final String HR = "hr"; public static final String BODY = "body"; public static final String HTML = "html"; public static final String TABLE = "table"; public static final String SCRIPT = "script"; public static final String HEAD = "head"; public static final String LINK = "link"; public static final String META = "meta"; public static final String STYLE = "style"; public static final String ADDRESS = "address"; public static final String ARTICLE = "article"; public static final String ASIDE = "aside"; public static final String AUDIO = "audio"; public static final String BLOCKQUOTE = "blockquote"; public static final String CANVAS = "canvas"; public static final String FIELDSET = "fieldset"; public static final String FIGCAPTION = "figcaption"; public static final String FIGURE = "figure"; public static final String FOOTER = "footer"; public static final String FONT = "font"; public static final String FORM = "form"; public static final String HEADER = "header"; public static final String HGROUP = "hgroup"; public static final String NOSCRIPT = "noscript"; public static final String OUTPUT = "output"; public static final String SECTION = "section"; public static final String VIDEO = "video"; public static final String BASE = "base"; public static final String COMMAND = "command"; public static final String TITLE = "title"; public static final String A = "a"; public static final String ABBR = "abbr"; public static final String B = "b"; public static final String BDO = "bdo"; public static final String BUTTON = "button"; public static final String DETAILS = "details"; public static final String CODE = "code"; public static final String DEL = "del"; public static final String DATALIST = "datalist"; public static final String DFN = "dfn"; public static final String EMBED = "embed"; public static final String CITE = "cite"; public static final String DL = "dl"; public static final String EM = "em"; public static final String I = "i"; public static final String IFRAME = "iframe"; public static final String INPUT = "input"; public static final String IMG = "img"; public static final String INS = "ins"; public static final String MAP = "map"; public static final String KEYGEN = "keygen"; public static final String METER = "meter"; public static final String MENU = "menu"; public static final String NAV = "nav"; public static final String KBD = "kbd"; public static final String MATH = "math"; public static final String MARK = "mark"; public static final String LABEL = "label"; public static final String Q = "q"; public static final String SAMP = "samp"; public static final String PROGRESS = "progress"; public static final String RUBY = "ruby"; public static final String OBJECT = "object"; public static final String SMALL = "small"; public static final String SUB = "sub"; public static final String SUP = "sup"; public static final String STRONG = "strong"; public static final String SELECT = "select"; public static final String SPAN = "span"; public static final String SVG = "svg"; public static final String WBR = "wbr"; public static final String TIME = "time"; public static final String TEXTAREA = "textarea"; public static final String VAR = "var"; public static final String TR = "tr"; public static final String BIG = "big"; public static final String S = "s"; public static final String STRIKE = "strike"; public static final String TT = "tt"; public static final String U = "u"; } /** * Collections that combine different tags. * */ public static final class Category { private Category() { } /** * List with the tags that are not visible in the browser.<br /> * Tag.HTML, Tag.HEAD, Tag.META, Tag.SCRIPT, Tag.LINK, Tag.STYLE, * Tag.TITLE */ public static final Set<String> NOT_VISIBLE = new HashSet<String>(Arrays.asList(new String[] { Tag.HTML, Tag.HEAD, Tag.META, Tag.SCRIPT, Tag.LINK, Tag.STYLE, Tag.TITLE })); /** * Groups all tags that are block level tags by default.<br /> * Tag.ADDRESS, Tag.ARTICLE, Tag.ASIDE, Tag.AUDIO, Tag.BLOCKQUOTE, * Tag.CANVAS, Tag.DD, Tag.DIV, Tag.FIELDSET, Tag.FIGCAPTION, * Tag.FIGURE, Tag.FOOTER, Tag.FORM, Tag.H1, Tag.H2, Tag.H3, Tag.H4, * Tag.H5, Tag.H6, Tag.HEADER, Tag.HGROUP, Tag.HR, Tag.NOSCRIPT, Tag.OL, * Tag.OUTPUT, Tag.P, Tag.PRE, Tag.SECTION, Tag.TABLE, Tag.UL, Tag.VIDEO */ public static final Set<String> BLOCK_LEVEL = new HashSet<String>(Arrays.asList(new String[] { Tag.ADDRESS, Tag.ARTICLE, Tag.ASIDE, Tag.AUDIO, Tag.BLOCKQUOTE, Tag.CANVAS, Tag.DD, Tag.DIV, Tag.FIELDSET, Tag.FIGCAPTION, Tag.FIGURE, Tag.FOOTER, Tag.FORM, Tag.H1, Tag.H2, Tag.H3, Tag.H4, Tag.H5, Tag.H6, Tag.HEADER, Tag.HGROUP, Tag.HR, Tag.NOSCRIPT, Tag.OL, Tag.OUTPUT, Tag.P, Tag.PRE, Tag.SECTION, Tag.TABLE, Tag.UL, Tag.VIDEO })); /** * HTML5<br /> * Elements belonging to the <em>metadata content</em> category modify * the presentation or the behavior of the rest of the document, set up * links to others documents, or convey other <em>out of band</em> * information.<br /> * Tag.BASE, Tag.COMMAND, Tag.LINK, Tag.META, Tag.NOSCRIPT, Tag.STYLE, * Tag.TITLE */ public static final Set<String> METADATA = new HashSet<String>(Arrays.asList(new String[] { Tag.BASE, Tag.COMMAND, Tag.LINK, Tag.META, Tag.NOSCRIPT, Tag.STYLE, Tag.TITLE })); /** * HTML5<br /> * Elements belonging to the flow content category typically contain * text or embedded content.<br /> * Tag.A, Tag.ABBR, Tag.ADDRESS, Tag.ARTICLE, Tag.ASIDE, Tag.AUDIO, * Tag.B, Tag.BDO, Tag.BLOCKQUOTE, Tag.BR, Tag.BUTTON, Tag.CANVAS, * Tag.CITE, Tag.CODE, Tag.COMMAND, Tag.DATALIST, Tag.DEL, Tag.DETAILS, * Tag.DFN, Tag.DIV, Tag.DL, Tag.EM, Tag.EMBED, Tag.FIELDSET, * Tag.FIGURE, Tag.FOOTER, Tag.FORM, Tag.H1, Tag.H2, Tag.H3, Tag.H4, * Tag.H5, Tag.H6, Tag.HEADER, Tag.HGROUP, Tag.HR, Tag.I, Tag.IFRAME, * Tag.IMG, Tag.INPUT, Tag.INS, Tag.KBD, Tag.KEYGEN, Tag.LABEL, Tag.MAP, * Tag.MARK, Tag.MATH, Tag.MENU, Tag.METER, Tag.NAV, Tag.NOSCRIPT, * Tag.OBJECT, Tag.OL, Tag.OUTPUT, Tag.P, Tag.PRE, Tag.PROGRESS, Tag.Q, * Tag.RUBY, Tag.SAMP, Tag.SCRIPT, Tag.SECTION, Tag.SELECT, Tag.SMALL, * Tag.SPAN, Tag.STRONG, Tag.SUB, Tag.SUP, Tag.SVG, Tag.TABLE, * Tag.TEXTAREA, Tag.TIME, Tag.UL, Tag.VAR, Tag.VIDEO, Tag.WBR */ public static final Set<String> FLOW_CONTENT = new HashSet<String>(Arrays.asList(new String[] { Tag.A, Tag.ABBR, Tag.ADDRESS, Tag.ARTICLE, Tag.ASIDE, Tag.AUDIO, Tag.B, Tag.BDO, Tag.BLOCKQUOTE, Tag.BR, Tag.BUTTON, Tag.CANVAS, Tag.CITE, Tag.CODE, Tag.COMMAND, Tag.DATALIST, Tag.DEL, Tag.DETAILS, Tag.DFN, Tag.DIV, Tag.DL, Tag.EM, Tag.EMBED, Tag.FIELDSET, Tag.FIGURE, Tag.FOOTER, Tag.FORM, Tag.H1, Tag.H2, Tag.H3, Tag.H4, Tag.H5, Tag.H6, Tag.HEADER, Tag.HGROUP, Tag.HR, Tag.I, Tag.IFRAME, Tag.IMG, Tag.INPUT, Tag.INS, Tag.KBD, Tag.KEYGEN, Tag.LABEL, Tag.MAP, Tag.MARK, Tag.MATH, Tag.MENU, Tag.METER, Tag.NAV, Tag.NOSCRIPT, Tag.OBJECT, Tag.OL, Tag.OUTPUT, Tag.P, Tag.PRE, Tag.PROGRESS, Tag.Q, Tag.RUBY, Tag.SAMP, Tag.SCRIPT, Tag.SECTION, Tag.SELECT, Tag.SMALL, Tag.SPAN, Tag.FONT, Tag.STRONG, Tag.SUB, Tag.SUP, Tag.SVG, Tag.TABLE, Tag.TEXTAREA, Tag.TIME, Tag.UL, Tag.VAR, Tag.VIDEO, Tag.WBR })); /** * HTML5<br /> * Elements belonging to the sectioning content model create a <a * rel="internal" href= * "https://developer.mozilla.org/en/Sections_and_Outlines_of_an_HTML5_document" * >section in the current outline</a> that defines the scope of  * <code><a rel="custom" href="https://developer.mozilla.org/en/HTML/Element/header"><header></a></code> * elements, * <code><a rel="custom" href="https://developer.mozilla.org/en/HTML/Element/footer"><footer></a></code> * elements, and <a rel="internal" * href="https://developer.mozilla.org/#heading_content">heading * content</a>. <footer> elements, and heading content.<br /> * Tag.ARTICLE, Tag.ASIDE, Tag.NAV, Tag.SECTION */ public static final Set<String> SECTIONING_CONTENT = new HashSet<String>(Arrays.asList(new String[] { Tag.ARTICLE, Tag.ASIDE, Tag.NAV, Tag.SECTION })); /** * HTML5<br /> * Heading content defines the title of a section, whether marked by an * explicit <a * href="https://developer.mozilla.org/#sectioning_content">sectioning * content</a> element or implicitly defined by the heading content * itself.<br /> * Tag.H1, Tag.H2, Tag.H3, Tag.H4, Tag.H5, Tag.H6, Tag.HGROUP */ public static final Set<String> HEADING_CONTENT = new HashSet<String>(Arrays.asList(new String[] { Tag.H1, Tag.H2, Tag.H3, Tag.H4, Tag.H5, Tag.H6, Tag.HGROUP })); /** * HTML5<br /> * Phrasing content defines the text and the mark-up it contains. Runs * of phrasing content make up paragraphs.<br /> * Tag.ABBR, Tag.AUDIO, Tag.B, Tag.BDO, Tag.BR, Tag.BUTTON, Tag.CANVAS, * Tag.CITE, Tag.CODE, Tag.COMMAND, Tag.DATALIST, Tag.DFN, Tag.EM, * Tag.EMBED, Tag.I, Tag.IFRAME, Tag.IMG, Tag.INPUT, Tag.KBD, * Tag.KEYGEN, Tag.LABEL, Tag.MARK, Tag.MATH, Tag.METER, Tag.NOSCRIPT, * Tag.OBJECT, Tag.OUTPUT, Tag.PROGRESS, Tag.Q, Tag.RUBY, Tag.SAMP, * Tag.SCRIPT, Tag.SELECT, Tag.SMALL, Tag.SPAN, Tag.STRONG, Tag.SUB, * Tag.SUP, Tag.SVG, Tag.TEXTAREA, Tag.TIME, Tag.VAR, Tag.VIDEO, Tag.WBR */ public static final Set<String> PHRASING_CONTENT = new HashSet<String>(Arrays.asList(new String[] { Tag.ABBR, Tag.AUDIO, Tag.B, Tag.BDO, Tag.BR, Tag.BUTTON, Tag.CANVAS, Tag.CITE, Tag.CODE, Tag.COMMAND, Tag.DATALIST, Tag.DFN, Tag.EM, Tag.EMBED, Tag.I, Tag.IFRAME, Tag.IMG, Tag.INPUT, Tag.KBD, Tag.KEYGEN, Tag.LABEL, Tag.MARK, Tag.MATH, Tag.METER, Tag.NOSCRIPT, Tag.OBJECT, Tag.OUTPUT, Tag.PROGRESS, Tag.Q, Tag.RUBY, Tag.SAMP, Tag.SCRIPT, Tag.SELECT, Tag.SMALL, Tag.SPAN, Tag.FONT, Tag.STRONG, Tag.SUB, Tag.SUP, Tag.SVG, Tag.TEXTAREA, Tag.TIME, Tag.VAR, Tag.VIDEO, Tag.WBR })); /** * HTML5<br /> * Embedded content imports another resource or inserts content from * another mark-up language or namespace into the document.<br /> * Tag.AUDIO, Tag.CANVAS, Tag.EMBED, Tag.IFRAME, Tag.IMG, Tag.MATH, * Tag.OBJECT, Tag.SVG, Tag.VIDEO */ public static final Set<String> EMBEDDED_CONTENT = new HashSet<String>(Arrays.asList(new String[] { Tag.AUDIO, Tag.CANVAS, Tag.EMBED, Tag.IFRAME, Tag.IMG, Tag.MATH, Tag.OBJECT, Tag.SVG, Tag.VIDEO })); } /** * Attributes used in HTML tags. */ public final static class Attribute { /** * */ private Attribute() { } public static final String ALT = "alt"; public static final String CELLPADDING = "cellpadding"; public static final String CELLSPACING = "cellspacing"; public static final String STYLE = "style"; public static final String CLASS = "class"; public static final String ID = "id"; public static final String HREF = "href"; public static final String NAME = "name"; public static final String SRC = "src"; public static final String WIDTH = "width"; public static final String HEIGHT = "height"; public static final String TYPE = "type"; public static final String COLSPAN = "colspan"; public static final String ROWSPAN = "rowspan"; public static final String VALIGN = "valign"; public static final String ALIGN = "align"; public static final String FACE = "face"; public static final String SIZE = "size"; public static final String COLOR = "color"; public static final String START = "start"; public static final String DIR = "dir"; /** * Possible attribute values. * * @author itextpdf.com * */ public static final class Value { public static final String TEXTCSS = "text/css"; private Value() { }; } } }