Package org.htmlcleaner
Class TagInfo
- java.lang.Object
-
- org.htmlcleaner.TagInfo
-
public class TagInfo extends java.lang.Object
Class contains information about single HTML tag.
It also contains rules for tag balancing. For each tag, list of dependent tags may be defined. There are several kinds of dependencies used to reorder tags:- fatal tags - required outer tag - the tag will be ignored during parsing (will be skipped) if this fatal tag is missing. For example, most web browsers ignore elements TD, TR, TBODY if they are not in the context of TABLE tag.
- required enclosing tags - if there is no such, it is implicitly created. For example if TD is out of TR - open TR is created before.
- forbidden tags - it is not allowed to occur inside - for example FORM cannot be inside other FORM and it will be ignored during cleanup.
- allowed children tags - for example TR allows TD and TH. If there are some dependent allowed tags defined then cleaner ignores other tags, treating them as not allowed, unless they are in some other relationship with this tag.
- preferred child tag - where a child tag doesn't match, but we want to by default insert an intervening tag rather than just move it outside. For example, LI in UL, TD in TR.
- higher level tags - for example for TR higher tags are THEAD, TBODY, TFOOT.
-
tags that must be closed and copied - for example, in
<a href="#"><div>....
tag A must be closed before DIV but copied again inside DIV. -
tags that must be closed before closing this tag and copied again after -
for example, in
<i><b>at</i> first</b> text
tag B must be closed before closing I, but it must be copied again after resulting finally in sequence:<i><b>at</b></i><b> first</b> text
.
Tag TR for instance (table row) may define the following dependencies:
- fatal tag is
table
- required enclosing tag is
tbody
- allowed children tags are
td,th
- higher level tags are
thead,tfoot
- tags that muste be closed before are
tr,td,th,caption,colgroup
tr
must be in context oftable
, otherwise it will be ignored,tr
may can be directly insidetbody
,tfoot
andthead
, otherwisetbody
will be implicitly created in front of it.tr
can containtd
andth
, all other tags and content will be pushed out of current limiting context, in the case of html tables, in front of enclosingtable
tag.- if previous open tag is one of
tr
,caption
orcolgroup
, it will be implicitly closed.
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
assumedNamespace
private java.lang.String
assumedNamespacePrefix
private BelongsTo
belongsTo
private java.util.Set<java.lang.String>
childTags
private CloseTag
closeTag
private ContentType
contentType
private java.util.Set<java.lang.String>
continueAfterTags
private java.util.Set<java.lang.String>
copyTags
private boolean
deprecated
private Display
display
private java.util.Set<java.lang.String>
fatalTags
private java.util.Set<java.lang.String>
higherTags
private java.util.Set<java.lang.String>
mustCloseTags
private java.lang.String
name
private java.util.Set<java.lang.String>
permittedTags
private java.lang.String
preferredChildTag
private java.util.Set<java.lang.String>
requiredParentTags
private boolean
unique
-
Constructor Summary
Constructors Constructor Description TagInfo(java.lang.String name, ContentType contentType, BelongsTo belongsTo, boolean deprecated, boolean unique, boolean ignorePermitted, CloseTag closeTag, Display display)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) boolean
allowsAnything()
(package private) boolean
allowsBody()
(package private) boolean
allowsItem(BaseToken token)
void
defineAllowedChildrenTags(java.lang.String commaSeparatedListOfTags)
void
defineCloseBeforeCopyInsideTags(java.lang.String commaSeparatedListOfTags)
void
defineCloseBeforeTags(java.lang.String commaSeparatedListOfTags)
void
defineCloseInsideCopyAfterTags(java.lang.String commaSeparatedListOfTags)
void
defineFatalTags(java.lang.String commaSeparatedListOfTags)
void
defineForbiddenTags(java.lang.String commaSeparatedListOfTags)
void
defineHigherLevelTags(java.lang.String commaSeparatedListOfTags)
void
defineRequiredEnclosingTags(java.lang.String commaSeparatedListOfTags)
java.lang.String
getAssumedNamespace()
java.lang.String
getAssumedNamespacePrefix()
BelongsTo
getBelongsTo()
java.util.Set<java.lang.String>
getChildTags()
ContentType
getContentType()
java.util.Set<java.lang.String>
getContinueAfterTags()
java.util.Set<java.lang.String>
getCopyTags()
Display
getDisplay()
java.util.Set<java.lang.String>
getFatalTags()
java.util.Set<java.lang.String>
getHigherTags()
java.util.Set<java.lang.String>
getMustCloseTags()
java.lang.String
getName()
java.util.Set<java.lang.String>
getPermittedTags()
java.lang.String
getPreferredChildTag()
java.util.Set<java.lang.String>
getRequiredParentTags()
(package private) boolean
hasCopyTags()
(package private) boolean
hasPermittedTags()
(package private) boolean
isContinueAfter(java.lang.String tagName)
(package private) boolean
isCopy(java.lang.String tagName)
boolean
isDeprecated()
boolean
isEmptyTag()
boolean
isFatalTag(java.lang.String tag)
(package private) boolean
isHeadAndBodyTag()
(package private) boolean
isHeadTag()
(package private) boolean
isHigher(java.lang.String tagName)
boolean
isMinimizedTagPermitted()
(package private) boolean
isMustCloseTag(TagInfo tagInfo)
boolean
isUnique()
void
setAssumedNamespace(java.lang.String assumedNamespace)
void
setAssumedNamespacePrefix(java.lang.String assumedNamespacePrefix)
void
setBelongsTo(BelongsTo belongsTo)
void
setChildTags(java.util.Set<java.lang.String> childTags)
void
setContinueAfterTags(java.util.Set<java.lang.String> continueAfterTags)
void
setCopyTags(java.util.Set<java.lang.String> copyTags)
void
setDeprecated(boolean deprecated)
void
setDisplay(Display display)
void
setFatalTag(java.lang.String fatalTag)
void
setHigherTags(java.util.Set<java.lang.String> higherTags)
void
setMustCloseTags(java.util.Set<java.lang.String> mustCloseTags)
void
setName(java.lang.String name)
void
setPermittedTags(java.util.Set<java.lang.String> permittedTags)
void
setPreferredChildTag(java.lang.String preferredChildTag)
void
setRequiredParent(java.lang.String requiredParent)
void
setUnique(boolean unique)
-
-
-
Field Detail
-
name
private java.lang.String name
-
contentType
private ContentType contentType
-
mustCloseTags
private java.util.Set<java.lang.String> mustCloseTags
-
higherTags
private java.util.Set<java.lang.String> higherTags
-
childTags
private java.util.Set<java.lang.String> childTags
-
permittedTags
private java.util.Set<java.lang.String> permittedTags
-
copyTags
private java.util.Set<java.lang.String> copyTags
-
continueAfterTags
private java.util.Set<java.lang.String> continueAfterTags
-
belongsTo
private BelongsTo belongsTo
-
requiredParentTags
private java.util.Set<java.lang.String> requiredParentTags
-
fatalTags
private java.util.Set<java.lang.String> fatalTags
-
preferredChildTag
private java.lang.String preferredChildTag
-
assumedNamespace
private java.lang.String assumedNamespace
-
assumedNamespacePrefix
private java.lang.String assumedNamespacePrefix
-
deprecated
private boolean deprecated
-
unique
private boolean unique
-
closeTag
private CloseTag closeTag
-
display
private Display display
-
-
Constructor Detail
-
TagInfo
public TagInfo(java.lang.String name, ContentType contentType, BelongsTo belongsTo, boolean deprecated, boolean unique, boolean ignorePermitted, CloseTag closeTag, Display display)
-
-
Method Detail
-
getAssumedNamespace
public java.lang.String getAssumedNamespace()
-
setAssumedNamespace
public void setAssumedNamespace(java.lang.String assumedNamespace)
-
getAssumedNamespacePrefix
public java.lang.String getAssumedNamespacePrefix()
-
setAssumedNamespacePrefix
public void setAssumedNamespacePrefix(java.lang.String assumedNamespacePrefix)
-
defineFatalTags
public void defineFatalTags(java.lang.String commaSeparatedListOfTags)
-
defineRequiredEnclosingTags
public void defineRequiredEnclosingTags(java.lang.String commaSeparatedListOfTags)
-
defineForbiddenTags
public void defineForbiddenTags(java.lang.String commaSeparatedListOfTags)
-
defineAllowedChildrenTags
public void defineAllowedChildrenTags(java.lang.String commaSeparatedListOfTags)
-
defineHigherLevelTags
public void defineHigherLevelTags(java.lang.String commaSeparatedListOfTags)
-
defineCloseBeforeCopyInsideTags
public void defineCloseBeforeCopyInsideTags(java.lang.String commaSeparatedListOfTags)
-
defineCloseInsideCopyAfterTags
public void defineCloseInsideCopyAfterTags(java.lang.String commaSeparatedListOfTags)
-
defineCloseBeforeTags
public void defineCloseBeforeTags(java.lang.String commaSeparatedListOfTags)
-
getDisplay
public Display getDisplay()
-
setDisplay
public void setDisplay(Display display)
-
getName
public java.lang.String getName()
-
setName
public void setName(java.lang.String name)
-
getContentType
public ContentType getContentType()
-
getMustCloseTags
public java.util.Set<java.lang.String> getMustCloseTags()
-
setMustCloseTags
public void setMustCloseTags(java.util.Set<java.lang.String> mustCloseTags)
-
getHigherTags
public java.util.Set<java.lang.String> getHigherTags()
-
setHigherTags
public void setHigherTags(java.util.Set<java.lang.String> higherTags)
-
getChildTags
public java.util.Set<java.lang.String> getChildTags()
-
setChildTags
public void setChildTags(java.util.Set<java.lang.String> childTags)
-
getPermittedTags
public java.util.Set<java.lang.String> getPermittedTags()
-
setPermittedTags
public void setPermittedTags(java.util.Set<java.lang.String> permittedTags)
-
getCopyTags
public java.util.Set<java.lang.String> getCopyTags()
-
setCopyTags
public void setCopyTags(java.util.Set<java.lang.String> copyTags)
-
getContinueAfterTags
public java.util.Set<java.lang.String> getContinueAfterTags()
-
setContinueAfterTags
public void setContinueAfterTags(java.util.Set<java.lang.String> continueAfterTags)
-
getRequiredParentTags
public java.util.Set<java.lang.String> getRequiredParentTags()
-
setRequiredParent
public void setRequiredParent(java.lang.String requiredParent)
-
getBelongsTo
public BelongsTo getBelongsTo()
-
setBelongsTo
public void setBelongsTo(BelongsTo belongsTo)
-
getFatalTags
public java.util.Set<java.lang.String> getFatalTags()
-
isFatalTag
public boolean isFatalTag(java.lang.String tag)
-
setFatalTag
public void setFatalTag(java.lang.String fatalTag)
-
isDeprecated
public boolean isDeprecated()
-
setDeprecated
public void setDeprecated(boolean deprecated)
-
isUnique
public boolean isUnique()
-
setUnique
public void setUnique(boolean unique)
-
isEmptyTag
public boolean isEmptyTag()
-
allowsBody
boolean allowsBody()
-
isHigher
boolean isHigher(java.lang.String tagName)
-
isCopy
boolean isCopy(java.lang.String tagName)
-
hasCopyTags
boolean hasCopyTags()
-
isContinueAfter
boolean isContinueAfter(java.lang.String tagName)
-
hasPermittedTags
boolean hasPermittedTags()
-
isHeadTag
boolean isHeadTag()
-
isHeadAndBodyTag
boolean isHeadAndBodyTag()
-
isMustCloseTag
boolean isMustCloseTag(TagInfo tagInfo)
-
allowsItem
boolean allowsItem(BaseToken token)
- Parameters:
token
-- Returns:
- true if the passed token is allowed to be nested in a Tag with this TagInfo.
-
allowsAnything
boolean allowsAnything()
-
isMinimizedTagPermitted
public boolean isMinimizedTagPermitted()
- Returns:
- True if the tag can be minimized
-
getPreferredChildTag
public java.lang.String getPreferredChildTag()
-
setPreferredChildTag
public void setPreferredChildTag(java.lang.String preferredChildTag)
-
-