public final class DOMBuilder
extends java.lang.Object
List of (fixed) Tokens and builds a (raw) XHTML + MathML
DOM tree branch from them.
SnuggleSession.buildDOMSubtree(Element, DOMOutputOptions) and friends.
An instance of this class is intended to be used once and then discarded so can be stateful.
This contains a number of callbacks that CommandHandlers and EnvironmentHandlers
can use to do their magic.
TokenFixer,
DOMBuildingController| 限定符和类型 | 类和说明 |
|---|---|
static interface |
DOMBuilder.MathContentBuilderCallback
Internal callback interface that specifies how to build the real content of a MathML
element.
|
static class |
DOMBuilder.OutputContext
Trivial enumeration to keep track of where we are in the outgoing DOM.
|
| 构造器和说明 |
|---|
DOMBuilder(SessionContext sessionContext,
org.w3c.dom.Element buildRootElement,
DOMOutputOptions options) |
| 限定符和类型 | 方法和说明 |
|---|---|
org.w3c.dom.Element |
appendErrorElement(org.w3c.dom.Element parentElement,
ErrorToken errorToken) |
void |
appendMathCharacter(org.w3c.dom.Element parentElement,
MathCharacter character) |
org.w3c.dom.Element |
appendMathMLElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName) |
org.w3c.dom.Element |
appendMathMLIdentifierElement(org.w3c.dom.Element parentElement,
java.lang.String name)
Creates a MathML identifier element, which may either be a single character or multiple
characters (e.g.
|
org.w3c.dom.Element |
appendMathMLNumberElement(org.w3c.dom.Element parentElement,
java.lang.String number) |
org.w3c.dom.Element |
appendMathMLOperatorElement(org.w3c.dom.Element parentElement,
java.lang.String content) |
org.w3c.dom.Element |
appendMathMLSpace(org.w3c.dom.Element parentElement,
java.lang.String width) |
org.w3c.dom.Element |
appendMathMLTextElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName,
java.lang.String content,
boolean trim) |
org.w3c.dom.Element |
appendOrThrowError(org.w3c.dom.Element parentElement,
Token token,
ErrorCode errorCode,
java.lang.Object... arguments) |
void |
appendSimpleMathElement(org.w3c.dom.Element parentElement,
Token token) |
org.w3c.dom.Element |
appendSnuggleElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName) |
org.w3c.dom.Node |
appendTextNode(org.w3c.dom.Element parentElement,
java.lang.String content,
boolean trim) |
org.w3c.dom.Element |
appendXHTMLElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName) |
org.w3c.dom.Element |
appendXHTMLTextElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName,
java.lang.String content,
boolean trim) |
void |
applyCSSStyle(org.w3c.dom.Element xhtmlElement,
java.lang.String... cssClassNames) |
void |
buildDOMSubtree(java.util.List<FlowToken> fixedTokens)
This is the external entry point used by
SnuggleSession only. |
void |
buildMathElement(org.w3c.dom.Element parentElement,
Token token,
ArgumentContainerToken mathContentToken,
boolean isDisplayMath)
Builds a MathML
math element for the given Token token, using contentToken
to provide the content, descending into child Nodes as normal. |
void |
buildMathElement(org.w3c.dom.Element parentElement,
Token token,
ArgumentContainerToken mathContentToken,
boolean isDisplayMath,
DOMBuilder.MathContentBuilderCallback mathContentBuilderCallback)
Builds a MathML
math element for the given Token token, using contentToken
to provide the content, using the given DOMBuilder.MathContentBuilderCallback to
supply the content. |
ComputedStyle |
closeStyle() |
org.w3c.dom.NodeList |
extractNodeListValue(ArgumentContainerToken token) |
java.lang.String |
extractStringValue(ArgumentContainerToken token)
This "converts" the given token to a String by performing
{
handleTokens(Element, ArgumentContainerToken, boolean)}
with a fake root element and then extracting the String value of the resulting Text Node(s). |
org.w3c.dom.Element |
findNearestXHTMLAncestorOrSelf(org.w3c.dom.Element element) |
org.w3c.dom.Document |
getDocument()
Gets at the underlying DOM Document.
|
ArrayListStack<MathVariantMap> |
getMathVariantMapStack() |
DOMOutputOptions |
getOptions() |
DOMBuilder.OutputContext |
getOutputContext() |
SessionContext |
getSessionContext() |
VariableManager |
getVariableManager() |
void |
handleMathTokensAsSingleElement(org.w3c.dom.Element parentElement,
ArgumentContainerToken containerToken) |
void |
handleMathTokensAsSingleElement(org.w3c.dom.Element parentElement,
java.util.List<FlowToken> tokens) |
void |
handleTextToken(org.w3c.dom.Element parentElement,
SimpleToken textToken) |
void |
handleToken(org.w3c.dom.Element parentElement,
FlowToken token)
Creates a single Node from the given token.
|
void |
handleTokens(org.w3c.dom.Element parentElement,
ArgumentContainerToken containerToken,
boolean trimWhitespace) |
void |
handleTokens(org.w3c.dom.Element parentElement,
java.util.List<FlowToken> siblingTokens,
boolean trimWhitespace) |
boolean |
isBuildingMathMLIsland()
Returns whether or not we're building a MathML island by checking the current
DOMBuilder.OutputContext. |
boolean |
isParentElement(org.w3c.dom.Element parentElement,
java.lang.String requiredNamespaceUri,
java.lang.String... requiredLocalNames) |
org.w3c.dom.Element |
openStyle(org.w3c.dom.Element parentElement,
ComputedStyle newStyle,
boolean hasBlockContent,
boolean hasEmptyContent) |
java.net.URI |
resolveLink(org.w3c.dom.Element parentElement,
Token token,
java.lang.String rawHref) |
void |
setOutputContext(org.w3c.dom.Element parentElement,
DOMBuilder.OutputContext outputContext) |
java.net.URI |
validateURI(org.w3c.dom.Element parentElement,
Token token,
java.lang.String rawURI)
Checks the given raw URI to ensure that it is valid, returning a
URI Object if
valid or null if not. |
java.lang.String |
validateXMLId(org.w3c.dom.Element parentElement,
Token nameToken,
java.lang.String rawName)
Checks the given XML Name as in
validateXMLName(Element, Token, String), additionally
checking that an ID of the same name is not already in use in the output DOM. |
java.lang.String |
validateXMLName(org.w3c.dom.Element parentElement,
Token nameToken,
java.lang.String rawName)
Checks the given raw XML Name to ensure that it confirms to the correct syntax, returning
it unchanged if successful.
|
public DOMBuilder(SessionContext sessionContext, org.w3c.dom.Element buildRootElement, DOMOutputOptions options)
public void buildDOMSubtree(java.util.List<FlowToken> fixedTokens) throws SnuggleParseException
SnuggleSession only. If you are using
DOMBuilder as a callback to implementing your own built-in commands and
environments, then you shouldn't call this method.SnuggleParseExceptionorg.w3c.dom.DOMExceptionpublic SessionContext getSessionContext()
public DOMOutputOptions getOptions()
public org.w3c.dom.Document getDocument()
public VariableManager getVariableManager()
public ArrayListStack<MathVariantMap> getMathVariantMapStack()
public DOMBuilder.OutputContext getOutputContext()
public void setOutputContext(org.w3c.dom.Element parentElement,
DOMBuilder.OutputContext outputContext)
public boolean isBuildingMathMLIsland()
DOMBuilder.OutputContext.public void handleTokens(org.w3c.dom.Element parentElement,
ArgumentContainerToken containerToken,
boolean trimWhitespace)
throws SnuggleParseException
trimWhitespace - removes leading whitespace from the first resulting Node if it is a Text Node and
removes trailing whitespace from the last Node if it is a Text Node.SnuggleParseExceptionpublic void handleTokens(org.w3c.dom.Element parentElement,
java.util.List<FlowToken> siblingTokens,
boolean trimWhitespace)
throws SnuggleParseException
trimWhitespace - removes leading whitespace from the first resulting Node if it is a Text Node and
removes trailing whitespace from the last Node if it is a Text Node.SnuggleParseExceptionpublic void handleToken(org.w3c.dom.Element parentElement,
FlowToken token)
throws SnuggleParseException
parentElement - token - org.w3c.dom.DOMExceptionSnuggleParseExceptionpublic void handleTextToken(org.w3c.dom.Element parentElement,
SimpleToken textToken)
public void appendMathCharacter(org.w3c.dom.Element parentElement,
MathCharacter character)
public void appendSimpleMathElement(org.w3c.dom.Element parentElement,
Token token)
public org.w3c.dom.Node appendTextNode(org.w3c.dom.Element parentElement,
java.lang.String content,
boolean trim)
public org.w3c.dom.Element appendSnuggleElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName)
public org.w3c.dom.Element appendXHTMLElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName)
public org.w3c.dom.Element appendXHTMLTextElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName,
java.lang.String content,
boolean trim)
public org.w3c.dom.Element appendMathMLElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName)
public org.w3c.dom.Element appendMathMLTextElement(org.w3c.dom.Element parentElement,
java.lang.String elementLocalName,
java.lang.String content,
boolean trim)
public org.w3c.dom.Element appendMathMLSpace(org.w3c.dom.Element parentElement,
java.lang.String width)
public org.w3c.dom.Element appendMathMLOperatorElement(org.w3c.dom.Element parentElement,
java.lang.String content)
public org.w3c.dom.Element appendMathMLNumberElement(org.w3c.dom.Element parentElement,
java.lang.String number)
public org.w3c.dom.Element appendMathMLIdentifierElement(org.w3c.dom.Element parentElement,
java.lang.String name)
parentElement - name - DOMOutputOptions.isMathVariantMapping()public void handleMathTokensAsSingleElement(org.w3c.dom.Element parentElement,
ArgumentContainerToken containerToken)
throws SnuggleParseException
public void handleMathTokensAsSingleElement(org.w3c.dom.Element parentElement,
java.util.List<FlowToken> tokens)
throws SnuggleParseException
public org.w3c.dom.NodeList extractNodeListValue(ArgumentContainerToken token) throws SnuggleParseException
public java.lang.String extractStringValue(ArgumentContainerToken token) throws SnuggleParseException
handleTokens(Element, ArgumentContainerToken, boolean)}
with a fake root element and then extracting the String value of the resulting Text Node(s).org.w3c.dom.DOMExceptionSnuggleParseExceptionpublic org.w3c.dom.Element openStyle(org.w3c.dom.Element parentElement,
ComputedStyle newStyle,
boolean hasBlockContent,
boolean hasEmptyContent)
public ComputedStyle closeStyle()
public void applyCSSStyle(org.w3c.dom.Element xhtmlElement,
java.lang.String... cssClassNames)
public void buildMathElement(org.w3c.dom.Element parentElement,
Token token,
ArgumentContainerToken mathContentToken,
boolean isDisplayMath)
throws SnuggleParseException
math element for the given Token token, using contentToken
to provide the content, descending into child Nodes as normal.public void buildMathElement(org.w3c.dom.Element parentElement,
Token token,
ArgumentContainerToken mathContentToken,
boolean isDisplayMath,
DOMBuilder.MathContentBuilderCallback mathContentBuilderCallback)
throws SnuggleParseException
math element for the given Token token, using contentToken
to provide the content, using the given DOMBuilder.MathContentBuilderCallback to
supply the content.
This is useful for things like EqnArrayHandler which generate a rather specific
structure.
public org.w3c.dom.Element findNearestXHTMLAncestorOrSelf(org.w3c.dom.Element element)
public boolean isParentElement(org.w3c.dom.Element parentElement,
java.lang.String requiredNamespaceUri,
java.lang.String... requiredLocalNames)
public java.lang.String validateXMLName(org.w3c.dom.Element parentElement,
Token nameToken,
java.lang.String rawName)
throws SnuggleParseException
CoreErrorCode.TDEX03 is recorded.public java.lang.String validateXMLId(org.w3c.dom.Element parentElement,
Token nameToken,
java.lang.String rawName)
throws SnuggleParseException
validateXMLName(Element, Token, String), additionally
checking that an ID of the same name is not already in use in the output DOM. If it is,
CoreErrorCode.TDEX05 is recorded. Returns non-null on success, null on error.public java.net.URI validateURI(org.w3c.dom.Element parentElement,
Token token,
java.lang.String rawURI)
throws SnuggleParseException
URI Object if
valid or null if not. If not valid, the CoreErrorCode.TDEX04 is recorded.public java.net.URI resolveLink(org.w3c.dom.Element parentElement,
Token token,
java.lang.String rawHref)
throws SnuggleParseException
public org.w3c.dom.Element appendOrThrowError(org.w3c.dom.Element parentElement,
Token token,
ErrorCode errorCode,
java.lang.Object... arguments)
throws SnuggleParseException
public org.w3c.dom.Element appendErrorElement(org.w3c.dom.Element parentElement,
ErrorToken errorToken)