--- a/content/base/public/nsINode.h
+++ b/content/base/public/nsINode.h
@@ -434,20 +434,23 @@ public:
/**
* Remove a child from this node. This method handles calling UnbindFromTree
* on the child appropriately.
*
* @param aIndex the index of the child to remove
* @param aNotify whether to notify the document (current document for
* nsIContent, and |this| for nsIDocument) that the remove has
* occurred
+ * @param aMutationEvent whether to fire a mutation event
*
* Note: If there is no child at aIndex, this method will simply do nothing.
*/
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify) = 0;
+ virtual nsresult RemoveChildAt(PRUint32 aIndex,
+ PRBool aNotify,
+ PRBool aMutationEvent = PR_TRUE) = 0;
/**
* Get a property associated with this node.
*
* @param aPropertyName name of property to get.
* @param aStatus out parameter for storing resulting status.
* Set to NS_PROPTABLE_PROP_NOT_THERE if the property
* is not set.
--- a/content/base/src/Makefile.in
+++ b/content/base/src/Makefile.in
@@ -79,16 +79,17 @@ REQUIRES = xpcom \
uriloader \
rdf \
xultmpl \
util \
appshell \
shistory \
editor \
windowwatcher \
+ html5 \
$(NULL)
ifdef ACCESSIBILITY
REQUIRES += accessibility
endif
EXPORTS = \
nsAtomListUtils.h \
--- a/content/base/src/nsContentSink.cpp
+++ b/content/base/src/nsContentSink.cpp
@@ -789,32 +789,42 @@ nsContentSink::ProcessStyleLink(nsIConte
return NS_OK;
}
nsresult
nsContentSink::ProcessMETATag(nsIContent* aContent)
{
- NS_ASSERTION(aContent, "missing base-element");
+ NS_ASSERTION(aContent, "missing meta-element");
nsresult rv = NS_OK;
// set any HTTP-EQUIV data into document's header data as well as url
nsAutoString header;
aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::httpEquiv, header);
if (!header.IsEmpty()) {
nsAutoString result;
aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, result);
if (!result.IsEmpty()) {
ToLowerCase(header);
nsCOMPtr<nsIAtom> fieldAtom(do_GetAtom(header));
rv = ProcessHeaderData(fieldAtom, result, aContent);
}
}
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ /* Look for the viewport meta tag. If we find it, process it and put the
+ * data into the document header. */
+ if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
+ nsGkAtoms::viewport, eIgnoreCase)) {
+ nsAutoString value;
+ aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
+ rv = nsContentUtils::ProcessViewportInfo(mDocument, value);
+ }
return rv;
}
void
nsContentSink::PrefetchHref(const nsAString &aHref,
nsIContent *aSource,
--- a/content/base/src/nsContentSink.h
+++ b/content/base/src/nsContentSink.h
@@ -141,16 +141,18 @@ class nsContentSink : public nsICSSLoade
void NotifyAppend(nsIContent* aContent, PRUint32 aStartIndex);
// nsIDocumentObserver
virtual void BeginUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType);
virtual void EndUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType);
virtual void UpdateChildCounts() = 0;
+ PRBool IsTimeToNotify();
+
protected:
nsContentSink();
virtual ~nsContentSink();
enum CacheSelectionAction {
// There is no offline cache manifest specified by the document,
// or the document was loaded from a cache other than the one it
// specifies via its manifest attribute and IS NOT a top-level
@@ -236,34 +238,35 @@ protected:
// was selected.
// @param aAction
// Out parameter, returns the action that should be performed
// by the calling function.
nsresult SelectDocAppCacheNoManifest(nsIApplicationCache *aLoadApplicationCache,
nsIURI **aManifestURI,
CacheSelectionAction *aAction);
+public:
// Searches for the offline cache manifest attribute and calls one
// of the above defined methods to select the document's application
// cache, let it be associated with the document and eventually
// schedule the cache update process.
void ProcessOfflineManifest(nsIContent *aElement);
+protected:
// Tries to scroll to the URI's named anchor. Once we've successfully
// done that, further calls to this method will be ignored.
void ScrollToRef();
nsresult RefreshIfEnabled(nsIViewManager* vm);
// Start layout. If aIgnorePendingSheets is true, this will happen even if
// we still have stylesheet loads pending. Otherwise, we'll wait until the
// stylesheets are all done loading.
+public:
void StartLayout(PRBool aIgnorePendingSheets);
-
- PRBool IsTimeToNotify();
-
+protected:
void
FavorPerformanceHint(PRBool perfOverStarvation, PRUint32 starvationDelay);
inline PRInt32 GetNotificationInterval()
{
if (mDynamicLowerValue) {
return 1000;
}
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -159,16 +159,17 @@ static NS_DEFINE_CID(kXTFServiceCID, NS_
#include "nsIChannelEventSink.h"
#include "nsIInterfaceRequestor.h"
#include "nsIOfflineCacheUpdate.h"
#include "nsCPrefetchService.h"
#include "nsIChromeRegistry.h"
#include "nsIMIMEHeaderParam.h"
#include "nsIDOMDragEvent.h"
#include "nsDOMDataTransfer.h"
+#include "nsHtml5Module.h"
#ifdef IBMBIDI
#include "nsIBidiKeyboard.h"
#endif
#include "nsCycleCollectionParticipant.h"
// for ReportToConsole
#include "nsIStringBundle.h"
@@ -3573,16 +3574,68 @@ nsContentUtils::CreateContextualFragment
nsresult rv;
nsCOMPtr<nsINode> node = do_QueryInterface(aContextNode);
NS_ENSURE_TRUE(node, NS_ERROR_NOT_AVAILABLE);
// If we don't have a document here, we can't get the right security context
// for compiling event handlers... so just bail out.
nsCOMPtr<nsIDocument> document = node->GetOwnerDoc();
NS_ENSURE_TRUE(document, NS_ERROR_NOT_AVAILABLE);
+
+ PRBool bCaseSensitive = document->IsCaseSensitive();
+
+ nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(document));
+ PRBool bHTML = htmlDoc && !bCaseSensitive;
+
+ if (bHTML && nsHtml5Module::Enabled) {
+ // See if the document has a cached fragment parser. nsHTMLDocument is the
+ // only one that should really have one at the moment.
+ nsCOMPtr<nsIParser> parser = document->GetFragmentParser();
+ if (parser) {
+ // Get the parser ready to use.
+ parser->Reset();
+ }
+ else {
+ // Create a new parser for this operation.
+ parser = nsHtml5Module::NewHtml5Parser();
+ if (!parser) {
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+ document->SetFragmentParser(parser);
+ }
+ nsCOMPtr<nsIDOMDocumentFragment> frag;
+ rv = NS_NewDocumentFragment(getter_AddRefs(frag), document->NodeInfoManager());
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIContent> contextAsContent = do_QueryInterface(aContextNode);
+ if (contextAsContent && !contextAsContent->IsNodeOfType(nsINode::eELEMENT)) {
+ contextAsContent = contextAsContent->GetParent();
+ if (contextAsContent && !contextAsContent->IsNodeOfType(nsINode::eELEMENT)) {
+ // can this even happen?
+ contextAsContent = nsnull;
+ }
+ }
+
+ if (contextAsContent) {
+ parser->ParseFragment(aFragment,
+ frag,
+ contextAsContent->Tag(),
+ contextAsContent->GetNameSpaceID(),
+ (document->GetCompatibilityMode() == eCompatibility_NavQuirks));
+ } else {
+ parser->ParseFragment(aFragment,
+ frag,
+ nsGkAtoms::body,
+ kNameSpaceID_XHTML,
+ (document->GetCompatibilityMode() == eCompatibility_NavQuirks));
+ }
+
+ NS_ADDREF(*aReturn = frag);
+ return NS_OK;
+ }
nsAutoTArray<nsString, 32> tagStack;
nsAutoString uriStr, nameStr;
nsCOMPtr<nsIContent> content = do_QueryInterface(aContextNode);
// just in case we have a text node
if (content && !content->IsNodeOfType(nsINode::eELEMENT))
content = content->GetParent();
@@ -3630,24 +3683,19 @@ nsContentUtils::CreateContextualFragment
NS_LITERAL_STRING("\""));
}
}
content = content->GetParent();
}
nsCAutoString contentType;
- PRBool bCaseSensitive = PR_TRUE;
nsAutoString buf;
document->GetContentType(buf);
LossyCopyUTF16toASCII(buf, contentType);
- bCaseSensitive = document->IsCaseSensitive();
-
- nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(document));
- PRBool bHTML = htmlDoc && !bCaseSensitive;
// See if the document has a cached fragment parser. nsHTMLDocument is the
// only one that should really have one at the moment.
nsCOMPtr<nsIParser> parser = document->GetFragmentParser();
if (parser) {
// Get the parser ready to use.
parser->Reset();
}
--- a/content/base/src/nsDOMAttribute.cpp
+++ b/content/base/src/nsDOMAttribute.cpp
@@ -694,18 +694,19 @@ nsDOMAttribute::InsertChildAt(nsIContent
nsresult
nsDOMAttribute::AppendChildTo(nsIContent* aKid, PRBool aNotify)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult
-nsDOMAttribute::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
+nsDOMAttribute::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
{
+ NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutations on attribute child removal.");
if (aIndex != 0 || !mChild) {
return NS_OK;
}
nsCOMPtr<nsIContent> child = mChild;
nsMutationGuard::DidMutate();
mozAutoDocUpdate updateBatch(GetOwnerDoc(), UPDATE_CONTENT_MODEL, aNotify);
nsMutationGuard guard;
--- a/content/base/src/nsDOMAttribute.h
+++ b/content/base/src/nsDOMAttribute.h
@@ -93,17 +93,17 @@ public:
virtual PRBool IsNodeOfType(PRUint32 aFlags) const;
virtual PRUint32 GetChildCount() const;
virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify);
virtual nsresult AppendChildTo(nsIContent* aKid, PRBool aNotify);
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
+ virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -3216,30 +3216,32 @@ nsDocument::AppendChildTo(nsIContent* aK
// subclasses wanted to hook into this stuff, they would have
// overridden AppendChildTo.
// XXXbz maybe this should just be a non-virtual method on nsINode?
// Feels that way to me...
return nsDocument::InsertChildAt(aKid, GetChildCount(), aNotify);
}
nsresult
-nsDocument::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
-{
+nsDocument::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
+{
+ NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutations on document child removal.");
nsCOMPtr<nsIContent> oldKid = GetChildAt(aIndex);
if (!oldKid) {
return NS_OK;
}
if (oldKid->IsNodeOfType(nsINode::eELEMENT)) {
// Destroy the link map up front before we mess with the child list.
DestroyLinkMap();
}
nsresult rv = nsGenericElement::doRemoveChildAt(aIndex, aNotify, oldKid,
- nsnull, this, mChildren);
+ nsnull, this, mChildren,
+ aMutationEvent);
mCachedRootContent = nsnull;
return rv;
}
PRInt32
nsDocument::GetNumberOfStyleSheets() const
{
return mStyleSheets.Count();
--- a/content/base/src/nsDocument.h
+++ b/content/base/src/nsDocument.h
@@ -805,17 +805,17 @@ public:
virtual PRBool IsNodeOfType(PRUint32 aFlags) const;
virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
virtual PRUint32 GetChildCount() const;
virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify);
virtual nsresult AppendChildTo(nsIContent* aKid, PRBool aNotify);
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
+ virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
--- a/content/base/src/nsGenericDOMDataNode.cpp
+++ b/content/base/src/nsGenericDOMDataNode.cpp
@@ -747,17 +747,17 @@ nsGenericDOMDataNode::IndexOf(nsINode* a
nsresult
nsGenericDOMDataNode::InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify)
{
return NS_OK;
}
nsresult
-nsGenericDOMDataNode::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
+nsGenericDOMDataNode::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
{
return NS_OK;
}
// virtual
PRBool
nsGenericDOMDataNode::MayHaveFrame() const
{
--- a/content/base/src/nsGenericDOMDataNode.h
+++ b/content/base/src/nsGenericDOMDataNode.h
@@ -161,17 +161,17 @@ public:
// nsINode methods
virtual PRUint32 GetChildCount() const;
virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify);
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
+ virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
--- a/content/base/src/nsGenericElement.cpp
+++ b/content/base/src/nsGenericElement.cpp
@@ -3241,35 +3241,36 @@ nsGenericElement::doInsertChildAt(nsICon
nsEventDispatcher::Dispatch(aKid, nsnull, &mutation);
}
}
return NS_OK;
}
nsresult
-nsGenericElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
+nsGenericElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
{
nsCOMPtr<nsIContent> oldKid = mAttrsAndChildren.GetSafeChildAt(aIndex);
NS_ASSERTION(oldKid == GetChildAt(aIndex), "Unexpected child in RemoveChildAt");
if (oldKid) {
return doRemoveChildAt(aIndex, aNotify, oldKid, this, GetCurrentDoc(),
- mAttrsAndChildren);
+ mAttrsAndChildren, aMutationEvent);
}
return NS_OK;
}
/* static */
nsresult
nsGenericElement::doRemoveChildAt(PRUint32 aIndex, PRBool aNotify,
nsIContent* aKid, nsIContent* aParent,
nsIDocument* aDocument,
- nsAttrAndChildArray& aChildArray)
+ nsAttrAndChildArray& aChildArray,
+ PRBool aMutationEvent)
{
NS_PRECONDITION(aParent || aDocument, "Must have document if no parent!");
NS_PRECONDITION(!aParent || aParent->GetCurrentDoc() == aDocument,
"Incorrect aDocument");
#ifdef ACCESSIBILITY
// A11y needs to be notified of content removals first, so accessibility
// events can be fired before any changes occur
@@ -3295,16 +3296,17 @@ nsGenericElement::doRemoveChildAt(PRUint
container->IndexOf(aKid) == (PRInt32)aIndex, "Bogus aKid");
mozAutoDocUpdate updateBatch(aDocument, UPDATE_CONTENT_MODEL, aNotify);
nsMutationGuard guard;
mozAutoSubtreeModified subtree(nsnull, nsnull);
if (aNotify &&
+ aMutationEvent &&
nsContentUtils::HasMutationListeners(aKid,
NS_EVENT_BITS_MUTATION_NODEREMOVED, container)) {
mozAutoRemovableBlockerRemover blockerRemover;
nsMutationEvent mutation(PR_TRUE, NS_MUTATION_NODEREMOVED);
mutation.mRelatedNode = do_QueryInterface(container);
subtree.UpdateTarget(container->GetOwnerDoc(), container);
--- a/content/base/src/nsGenericElement.h
+++ b/content/base/src/nsGenericElement.h
@@ -349,17 +349,17 @@ public:
// nsINode interface methods
virtual PRUint32 GetChildCount() const;
virtual nsIContent *GetChildAt(PRUint32 aIndex) const;
virtual nsIContent * const * GetChildArray(PRUint32* aChildCount) const;
virtual PRInt32 IndexOf(nsINode* aPossibleChild) const;
virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify);
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
+ virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
virtual nsresult PostHandleEvent(nsEventChainPostVisitor& aVisitor);
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsIEventListenerManager* GetListenerManager(PRBool aCreateIfNotFound);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
@@ -649,17 +649,18 @@ public:
* non-null if aParent is null (in which case aKid is being
* removed as its child) and must match
* aParent->GetCurrentDoc() if aParent is not null.
* @param aChildArray The child array to work with
*/
static nsresult doRemoveChildAt(PRUint32 aIndex, PRBool aNotify,
nsIContent* aKid, nsIContent* aParent,
nsIDocument* aDocument,
- nsAttrAndChildArray& aChildArray);
+ nsAttrAndChildArray& aChildArray,
+ PRBool aMutationEvent);
/**
* Helper methods for implementing querySelector/querySelectorAll
*/
static nsresult doQuerySelector(nsINode* aRoot, const nsAString& aSelector,
nsIDOMElement **aReturn);
static nsresult doQuerySelectorAll(nsINode* aRoot,
const nsAString& aSelector,
--- a/content/base/src/nsHTMLContentSerializer.cpp
+++ b/content/base/src/nsHTMLContentSerializer.cpp
@@ -63,16 +63,17 @@
#include "nsEscape.h"
#include "nsITextToSubURI.h"
#include "nsCRT.h"
#include "nsIParserService.h"
#include "nsContentUtils.h"
#include "nsLWBrkCIID.h"
#include "nsIScriptElement.h"
#include "nsAttrName.h"
+#include "nsHtml5Module.h"
static const char kMozStr[] = "moz";
static const PRInt32 kLongLineLen = 128;
nsresult NS_NewHTMLContentSerializer(nsIContentSerializer** aSerializer)
{
nsHTMLContentSerializer* it = new nsHTMLContentSerializer();
@@ -95,37 +96,59 @@ nsHTMLContentSerializer::~nsHTMLContentS
NS_IMETHODIMP
nsHTMLContentSerializer::AppendDocumentStart(nsIDOMDocument *aDocument,
nsAString& aStr)
{
return NS_OK;
}
+#include "nsIHTMLDocument.h"
void
nsHTMLContentSerializer::SerializeAttributes(nsIContent* aContent,
nsIDOMElement *aOriginalElement,
nsAString& aTagPrefix,
const nsAString& aTagNamespaceURI,
nsIAtom* aTagName,
nsAString& aStr)
{
+ PRInt32 count = aContent->GetAttrCount();
+ if (!count)
+ return;
+
nsresult rv;
- PRUint32 index, count;
nsAutoString nameStr, valueStr;
-
- count = aContent->GetAttrCount();
-
NS_NAMED_LITERAL_STRING(_mozStr, "_moz");
- // Loop backward over the attributes, since the order they are stored in is
- // the opposite of the order they were parsed in (see bug 213347 for reason).
- // index is unsigned, hence index >= 0 is always true.
- for (index = count; index > 0; ) {
- --index;
+ // HTML5 parser stored them in the order they were parsed so we want to
+ // loop forward in that case.
+ nsIDocument* doc = aContent->GetOwnerDocument();
+ PRBool caseSensitive = doc && doc->IsCaseSensitive();
+ PRBool loopForward = PR_FALSE;
+ if (!caseSensitive) {
+ nsCOMPtr<nsIHTMLDocument> htmlDoc(do_QueryInterface(doc));
+ if (htmlDoc) {
+ loopForward = nsHtml5Module::Enabled;
+ }
+ }
+ PRInt32 index, limit, step;
+ if (loopForward) {
+ index = 0;
+ limit = count;
+ step = 1;
+ }
+ else {
+ // Loop backward over the attributes, since the order they are stored in is
+ // the opposite of the order they were parsed in (see bug 213347 for reason).
+ index = count - 1;
+ limit = -1;
+ step = -1;
+ }
+
+ for (; index != limit; index += step) {
const nsAttrName* name = aContent->GetAttrNameAt(index);
PRInt32 namespaceID = name->NamespaceID();
nsIAtom* attrName = name->LocalName();
// Filter out any attribute starting with [-|_]moz
const char* sharedName;
attrName->GetUTF8String(&sharedName);
if ((('_' == *sharedName) || ('-' == *sharedName)) &&
--- a/content/base/test/test_bug417255.html
+++ b/content/base/test/test_bug417255.html
@@ -10,30 +10,30 @@ https://bugzilla.mozilla.org/show_bug.cg
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<style>
.spacer { display:inline-block; height:10px; }
</style>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=417255">Mozilla Bug 417255</a>
-<p id="display" style="width:800px"></p>
+<div id="display" style="width:800px"></div>
-<p><span id="s1" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
+<div><span id="s1" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
<div style="width:500px; height:100px; background:yellow;"></div>
-<span class="spacer" style="width:200px"></span></span>
+<span class="spacer" style="width:200px"></span></span></div>
-<p><span id="s2" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
+<div><span id="s2" style="border:2px dotted red;"><span class="spacer" style="width:100px"></span>
<div style="width:150px; height:100px; background:yellow;"></div>
-<span class="spacer" style="width:200px"></span></span>
+<span class="spacer" style="width:200px"></span></span></div>
<!-- test nested spans around the IB split -->
-<p><span id="s3" style="border:2px dotted red;"><span><span class="spacer" style="width:100px"></span>
+<div><span id="s3" style="border:2px dotted red;"><span><span class="spacer" style="width:100px"></span>
<div style="width:500px; height:100px; background:yellow;"></div>
-<span class="spacer" style="width:200px"></span></span></span>
+<span class="spacer" style="width:200px"></span></span></span></div>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
--- a/content/html/content/src/nsHTMLOptGroupElement.cpp
+++ b/content/html/content/src/nsHTMLOptGroupElement.cpp
@@ -73,17 +73,17 @@ public:
NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLElement::)
// nsIDOMHTMLOptGroupElement
NS_DECL_NSIDOMHTMLOPTGROUPELEMENT
// nsGenericElement
virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify);
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
+ virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
// nsIContent
virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
virtual PRInt32 IntrinsicState() const;
virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
@@ -180,20 +180,21 @@ nsHTMLOptGroupElement::InsertChildAt(nsI
nsresult rv = nsGenericHTMLElement::InsertChildAt(aKid, aIndex, aNotify);
if (NS_FAILED(rv)) {
safeMutation.MutationFailed();
}
return rv;
}
nsresult
-nsHTMLOptGroupElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
+nsHTMLOptGroupElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
{
+ NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutation events on optgroup child removal.");
nsSafeOptionListMutation safeMutation(GetSelect(), this, nsnull, aIndex);
- nsresult rv = nsGenericHTMLElement::RemoveChildAt(aIndex, aNotify);
+ nsresult rv = nsGenericHTMLElement::RemoveChildAt(aIndex, aNotify, aMutationEvent);
if (NS_FAILED(rv)) {
safeMutation.MutationFailed();
}
return rv;
}
PRInt32
nsHTMLOptGroupElement::IntrinsicState() const
--- a/content/html/content/src/nsHTMLSelectElement.cpp
+++ b/content/html/content/src/nsHTMLSelectElement.cpp
@@ -203,20 +203,21 @@ nsHTMLSelectElement::InsertChildAt(nsICo
nsresult rv = nsGenericHTMLFormElement::InsertChildAt(aKid, aIndex, aNotify);
if (NS_FAILED(rv)) {
safeMutation.MutationFailed();
}
return rv;
}
nsresult
-nsHTMLSelectElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify)
+nsHTMLSelectElement::RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent)
{
+ NS_ASSERTION(aMutationEvent, "Someone tried to inhibit mutations on select child removal.");
nsSafeOptionListMutation safeMutation(this, this, nsnull, aIndex);
- nsresult rv = nsGenericHTMLFormElement::RemoveChildAt(aIndex, aNotify);
+ nsresult rv = nsGenericHTMLFormElement::RemoveChildAt(aIndex, aNotify, aMutationEvent);
if (NS_FAILED(rv)) {
safeMutation.MutationFailed();
}
return rv;
}
// SelectElement methods
--- a/content/html/content/src/nsHTMLSelectElement.h
+++ b/content/html/content/src/nsHTMLSelectElement.h
@@ -266,17 +266,17 @@ public:
NS_DECL_NSIDOMNSHTMLSELECTELEMENT
// nsIContent
virtual nsresult PreHandleEvent(nsEventChainPreVisitor& aVisitor);
virtual PRBool IsHTMLFocusable(PRBool *aIsFocusable, PRInt32 *aTabIndex);
virtual nsresult InsertChildAt(nsIContent* aKid, PRUint32 aIndex,
PRBool aNotify);
- virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify);
+ virtual nsresult RemoveChildAt(PRUint32 aIndex, PRBool aNotify, PRBool aMutationEvent = PR_TRUE);
// Overriden nsIFormControl methods
NS_IMETHOD_(PRInt32) GetType() const { return NS_FORM_SELECT; }
NS_IMETHOD Reset();
NS_IMETHOD SubmitNamesValues(nsIFormSubmission* aFormSubmission,
nsIContent* aSubmitElement);
NS_IMETHOD SaveState();
virtual PRBool RestoreState(nsPresState* aState);
deleted file mode 100644
--- a/content/html/document/reftests/bug448564-2_malformed.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<body>
- <s>
- <form>a</form>
- <iframe></iframe>
- <script src=a></script>
- <form></form>
- <table>
- <optgroup>
-</body>
-</html>
deleted file mode 100644
--- a/content/html/document/reftests/bug448564-2_well-formed.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
-<body>
- <s>
- <form>a</form>
- <iframe></iframe>
- </s>
- <form></form>
- <form>
- <select>
- <optgroup></optgroup>
- </select>
- </form>
-</body>
-</html>
deleted file mode 100644
--- a/content/html/document/reftests/bug448564-3_malformed.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<table>
- <th>head</th>
- <optgroup></optgroup>
-</table>
deleted file mode 100644
--- a/content/html/document/reftests/bug448564-3_well-formed.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<form>
- <select>
- <optgroup></optgroup>
- </select>
-</form>
-<table>
- <th>head</th>
-</table>
deleted file mode 100644
--- a/content/html/document/reftests/bug448564-5_malformed.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<html>
-<head>
- <link rel="stylesheet" type="text/css"
- href="bug448564_forms.css">
- </link>
-</head>
-<body>
- <form>
- <table>
- <optgroup></optgroup>
- </table>
- <input type="button" value="button"></input>
- </form>
- <b>asdf</b>
-</body>
-</html>
deleted file mode 100644
--- a/content/html/document/reftests/bug448564-5_well-formed.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head>
- <link rel="stylesheet" type="text/css"
- href="bug448564_forms.css">
- </link>
-</head>
-<body>
- <form>
- <select>
- <optgroup></optgroup>
- </select>
- <table></table>
- <input type="button" value="button"></input>
- </form>
- <b>asdf</b>
-</body>
-</html>
--- a/content/html/document/reftests/reftests.list
+++ b/content/html/document/reftests/reftests.list
@@ -1,10 +1,4 @@
== bug448564-1_malformed.html bug448564-1_well-formed.html
== bug448564-1_malformed.html bug448564-1_ideal.html
-== bug448564-2_malformed.html bug448564-2_well-formed.html
-
-== bug448564-3_malformed.html bug448564-3_well-formed.html
-
== bug448564-4a.html bug448564-4b.html
-
-== bug448564-5_malformed.html bug448564-5_well-formed.html
--- a/content/html/document/src/Makefile.in
+++ b/content/html/document/src/Makefile.in
@@ -71,16 +71,17 @@ REQUIRES = xpcom \
xpconnect \
unicharutil \
commandhandler \
composer \
editor \
plugin \
txtsvc \
uriloader \
+ html5 \
$(NULL)
CPPSRCS = \
nsHTMLContentSink.cpp \
nsHTMLFragmentContentSink.cpp \
nsHTMLDocument.cpp \
nsImageDocument.cpp \
nsMediaDocument.cpp \
--- a/content/html/document/src/nsHTMLContentSink.cpp
+++ b/content/html/document/src/nsHTMLContentSink.cpp
@@ -206,18 +206,16 @@ public:
NS_IMETHOD DidProcessAToken(void);
NS_IMETHOD NotifyTagObservers(nsIParserNode* aNode);
NS_IMETHOD BeginContext(PRInt32 aID);
NS_IMETHOD EndContext(PRInt32 aID);
NS_IMETHOD OpenHead();
NS_IMETHOD IsEnabled(PRInt32 aTag, PRBool* aReturn);
NS_IMETHOD_(PRBool) IsFormOnStack();
- virtual nsresult ProcessMETATag(nsIContent* aContent);
-
#ifdef DEBUG
// nsIDebugDumpContent
NS_IMETHOD DumpContentModel();
#endif
protected:
// If aCheckIfPresent is true, will only set an attribute in cases
// when it's not already set.
@@ -2950,43 +2948,16 @@ HTMLContentSink::ProcessLINKTag(const ns
}
}
}
}
return result;
}
-/*
- * Extends nsContentSink::ProcessMETATag to grab the 'viewport' meta tag. This
- * information is ignored by the generic content sink because it only stores
- * http-equiv meta tags.
- *
- * Initially implemented for bug #436083
- */
-nsresult
-HTMLContentSink::ProcessMETATag(nsIContent *aContent) {
-
- /* Call the superclass method. */
- nsContentSink::ProcessMETATag(aContent);
-
- nsresult rv = NS_OK;
-
- /* Look for the viewport meta tag. If we find it, process it and put the
- * data into the document header. */
- if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
- nsGkAtoms::viewport, eIgnoreCase)) {
- nsAutoString value;
- aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
- rv = nsContentUtils::ProcessViewportInfo(mDocument, value);
- }
-
- return rv;
-}
-
#ifdef DEBUG
void
HTMLContentSink::ForceReflow()
{
mCurrentContext->FlushTags();
}
#endif
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -136,16 +136,17 @@
#include "nsNodeInfoManager.h"
#include "nsIEditor.h"
#include "nsIEditorDocShell.h"
#include "nsIEditorStyleSheets.h"
#include "nsIInlineSpellChecker.h"
#include "nsRange.h"
#include "mozAutoDocUpdate.h"
#include "nsCCUncollectableMarker.h"
+#include "nsHtml5Module.h"
#include "prprf.h"
#define NS_MAX_DOCUMENT_WRITE_DEPTH 20
#define DETECTOR_CONTRACTID_MAX 127
static char g_detector_contractid[DETECTOR_CONTRACTID_MAX + 1];
static PRBool gInitDetector = PR_FALSE;
static PRBool gPlugDetector = PR_FALSE;
@@ -649,25 +650,35 @@ nsresult
nsHTMLDocument::StartDocumentLoad(const char* aCommand,
nsIChannel* aChannel,
nsILoadGroup* aLoadGroup,
nsISupports* aContainer,
nsIStreamListener **aDocListener,
PRBool aReset,
nsIContentSink* aSink)
{
+ PRBool loadAsHtml5 = nsHtml5Module::Enabled;
+ if (aSink) {
+ loadAsHtml5 = PR_FALSE;
+ }
+
nsCAutoString contentType;
aChannel->GetContentType(contentType);
if (contentType.Equals("application/xhtml+xml") &&
(!aCommand || nsCRT::strcmp(aCommand, "view-source") != 0)) {
// We're parsing XHTML as XML, remember that.
mIsRegularHTML = PR_FALSE;
mCompatMode = eCompatibility_FullStandards;
+ loadAsHtml5 = PR_FALSE;
+ }
+
+ if (!(contentType.Equals("text/html") && aCommand && !nsCRT::strcmp(aCommand, "view"))) {
+ loadAsHtml5 = PR_FALSE;
}
#ifdef DEBUG
else {
NS_ASSERTION(mIsRegularHTML,
"Hey, someone forgot to reset mIsRegularHTML!!!");
}
#endif
@@ -704,18 +715,22 @@ nsHTMLDocument::StartDocumentLoad(const
if (cachingChan) {
nsCOMPtr<nsISupports> cacheToken;
cachingChan->GetCacheToken(getter_AddRefs(cacheToken));
if (cacheToken)
cacheDescriptor = do_QueryInterface(cacheToken);
}
if (needsParser) {
- mParser = do_CreateInstance(kCParserCID, &rv);
- NS_ENSURE_SUCCESS(rv, rv);
+ if (loadAsHtml5) {
+ mParser = nsHtml5Module::NewHtml5Parser();
+ } else {
+ mParser = do_CreateInstance(kCParserCID, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
}
PRInt32 textType = GET_BIDI_OPTION_TEXTTYPE(GetBidiOptions());
// Look for the parent document. Note that at this point we don't have our
// content viewer set up yet, and therefore do not have a useful
// mParentDocument.
@@ -920,32 +935,38 @@ nsHTMLDocument::StartDocumentLoad(const
charset.get(), charsetSource);
#endif
mParser->SetDocumentCharset(parserCharset, parserCharsetSource);
mParser->SetCommand(aCommand);
// create the content sink
nsCOMPtr<nsIContentSink> sink;
- if (aSink)
+ if (aSink) {
+ NS_ASSERTION((!loadAsHtml5), "Panic: We are loading as HTML5 and someone tries to set an external sink!");
sink = aSink;
- else {
+ } else {
if (IsXHTML()) {
nsCOMPtr<nsIXMLContentSink> xmlsink;
rv = NS_NewXMLContentSink(getter_AddRefs(xmlsink), this, uri,
docShell, aChannel);
sink = xmlsink;
} else {
- nsCOMPtr<nsIHTMLContentSink> htmlsink;
-
- rv = NS_NewHTMLContentSink(getter_AddRefs(htmlsink), this, uri,
- docShell, aChannel);
-
- sink = htmlsink;
+ if (loadAsHtml5) {
+ nsHtml5Module::Initialize(mParser, this, uri, docShell, aChannel);
+ sink = mParser->GetContentSink();
+ } else {
+ nsCOMPtr<nsIHTMLContentSink> htmlsink;
+
+ rv = NS_NewHTMLContentSink(getter_AddRefs(htmlsink), this, uri,
+ docShell, aChannel);
+
+ sink = htmlsink;
+ }
}
NS_ENSURE_SUCCESS(rv, rv);
NS_ASSERTION(sink,
"null sink with successful result from factory method");
}
mParser->SetContentSink(sink);
@@ -1779,16 +1800,18 @@ nsresult
nsHTMLDocument::OpenCommon(const nsACString& aContentType, PRBool aReplace)
{
if (IsXHTML()) {
// No calling document.open() on XHTML
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
}
+ PRBool loadAsHtml5 = nsHtml5Module::Enabled;
+
nsresult rv = NS_OK;
// If we already have a parser we ignore the document.open call.
if (mParser) {
return NS_OK;
}
@@ -1930,36 +1953,45 @@ nsHTMLDocument::OpenCommon(const nsACStr
TurnEditingOff();
EditingStateChanged();
}
// Store the security info of the caller now that we're done
// resetting the document.
mSecurityInfo = securityInfo;
- mParser = do_CreateInstance(kCParserCID, &rv);
+ if (loadAsHtml5) {
+ mParser = nsHtml5Module::NewHtml5Parser();
+ rv = NS_OK;
+ } else {
+ mParser = do_CreateInstance(kCParserCID, &rv);
+ }
// This will be propagated to the parser when someone actually calls write()
mContentType = aContentType;
mWriteState = eDocumentOpened;
if (NS_SUCCEEDED(rv)) {
- nsCOMPtr<nsIHTMLContentSink> sink;
-
- rv = NS_NewHTMLContentSink(getter_AddRefs(sink), this, uri, shell,
- channel);
- if (NS_FAILED(rv)) {
- // Don't use a parser without a content sink.
- mParser = nsnull;
- mWriteState = eNotWriting;
- return rv;
+ if (loadAsHtml5) {
+ nsHtml5Module::Initialize(mParser, this, uri, shell, channel);
+ } else {
+ nsCOMPtr<nsIHTMLContentSink> sink;
+
+ rv = NS_NewHTMLContentSink(getter_AddRefs(sink), this, uri, shell,
+ channel);
+ if (NS_FAILED(rv)) {
+ // Don't use a parser without a content sink.
+ mParser = nsnull;
+ mWriteState = eNotWriting;
+ return rv;
+ }
+
+ mParser->SetContentSink(sink);
}
-
- mParser->SetContentSink(sink);
}
// Prepare the docshell and the document viewer for the impending
// out of band document.write()
shell->PrepareForNewContentModel();
// Now check whether we were opened with a "replace" argument. If
// so, we need to tell the docshell to not create a new history
new file mode 100644
--- /dev/null
+++ b/content/html/parser/Makefile.in
@@ -0,0 +1,52 @@
+#
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = public src
+
+# ifdef ENABLE_TESTS
+# DIRS += test
+# endif
+
+include $(topsrcdir)/config/rules.mk
+
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/AttributeName.java
@@ -0,0 +1,2793 @@
+/*
+ * Copyright (c) 2008-2009 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+import java.util.Arrays;
+
+import nu.validator.htmlparser.annotation.IdType;
+import nu.validator.htmlparser.annotation.Local;
+import nu.validator.htmlparser.annotation.NoLength;
+import nu.validator.htmlparser.annotation.NsUri;
+import nu.validator.htmlparser.annotation.Prefix;
+import nu.validator.htmlparser.annotation.QName;
+import nu.validator.htmlparser.annotation.Virtual;
+
+public final class AttributeName
+// Uncomment to regenerate
+// implements Comparable<AttributeName>
+{
+
+ private static final @NoLength @NsUri String[] ALL_NO_NS = { "", "", "",
+ // [NOCPP[
+ ""
+ // ]NOCPP]
+ };
+
+ private static final @NoLength @NsUri String[] XMLNS_NS = { "",
+ "http://www.w3.org/2000/xmlns/", "http://www.w3.org/2000/xmlns/",
+ // [NOCPP[
+ ""
+ // ]NOCPP]
+ };
+
+ private static final @NoLength @NsUri String[] XML_NS = { "",
+ "http://www.w3.org/XML/1998/namespace",
+ "http://www.w3.org/XML/1998/namespace",
+ // [NOCPP[
+ ""
+ // ]NOCPP]
+ };
+
+ private static final @NoLength @NsUri String[] XLINK_NS = { "",
+ "http://www.w3.org/1999/xlink", "http://www.w3.org/1999/xlink",
+ // [NOCPP[
+ ""
+ // ]NOCPP]
+ };
+
+ // [NOCPP[
+ private static final @NoLength @NsUri String[] LANG_NS = { "", "", "",
+ "http://www.w3.org/XML/1998/namespace" };
+
+ // ]NOCPP]
+
+ private static final @NoLength @Prefix String[] ALL_NO_PREFIX = { null,
+ null, null,
+ // [NOCPP[
+ null
+ // ]NOCPP]
+ };
+
+ private static final @NoLength @Prefix String[] XMLNS_PREFIX = { null,
+ "xmlns", "xmlns",
+ // [NOCPP[
+ null
+ // ]NOCPP]
+ };
+
+ private static final @NoLength @Prefix String[] XLINK_PREFIX = { null,
+ "xlink", "xlink",
+ // [NOCPP[
+ null
+ // ]NOCPP]
+ };
+
+ private static final @NoLength @Prefix String[] XML_PREFIX = { null, "xml",
+ "xml",
+ // [NOCPP[
+ null
+ // ]NOCPP]
+ };
+
+ // [NOCPP[
+
+ private static final @NoLength @Prefix String[] LANG_PREFIX = { null, null,
+ null, "xml" };
+
+ private static final boolean[] ALL_NCNAME = { true, true, true, true };
+
+ private static final boolean[] ALL_NO_NCNAME = { false, false, false, false };
+
+ private static @QName String[] COMPUTE_QNAME(String[] local, String[] prefix) {
+ @QName String[] rv = new String[4];
+ for (int i = 0; i < rv.length; i++) {
+ if (prefix[i] == null) {
+ rv[i] = local[i];
+ } else {
+ rv[i] = (prefix[i] + ':' + local[i]).intern();
+ }
+ }
+ return rv;
+ }
+
+ // ]NOCPP]
+
+ private static @NoLength @Local String[] SVG_DIFFERENT(@Local String name,
+ @Local String camel) {
+ @NoLength @Local String[] rv = new String[4];
+ rv[0] = name;
+ rv[1] = name;
+ rv[2] = camel;
+ // [NOCPP[
+ rv[3] = name;
+ // ]NOCPP]
+ return rv;
+ }
+
+ private static @NoLength @Local String[] MATH_DIFFERENT(@Local String name,
+ @Local String camel) {
+ @NoLength @Local String[] rv = new String[4];
+ rv[0] = name;
+ rv[1] = camel;
+ rv[2] = name;
+ // [NOCPP[
+ rv[3] = name;
+ // ]NOCPP]
+ return rv;
+ }
+
+ private static @NoLength @Local String[] COLONIFIED_LOCAL(
+ @Local String name, @Local String suffix) {
+ @NoLength @Local String[] rv = new String[4];
+ rv[0] = name;
+ rv[1] = suffix;
+ rv[2] = suffix;
+ // [NOCPP[
+ rv[3] = name;
+ // ]NOCPP]
+ return rv;
+ }
+
+ private static @NoLength @Local String[] SAME_LOCAL(@Local String name) {
+ @NoLength @Local String[] rv = new String[4];
+ rv[0] = name;
+ rv[1] = name;
+ rv[2] = name;
+ // [NOCPP[
+ rv[3] = name;
+ // ]NOCPP]
+ return rv;
+ }
+
+ /**
+ * Returns an attribute name by buffer.
+ *
+ * <p>
+ * C++ ownership: The return value is either released by the caller if the
+ * attribute is a duplicate or the ownership is transferred to
+ * HtmlAttributes and released upon clearing or destroying that object.
+ *
+ * @param buf
+ * @param offset
+ * @param length
+ * @param checkNcName
+ * @return
+ */
+ static AttributeName nameByBuffer(@NoLength char[] buf, int offset,
+ int length
+ // [NOCPP[
+ , boolean checkNcName
+ // ]NOCPP]
+ ) {
+ // XXX deal with offset
+ int hash = AttributeName.bufToHash(buf, length);
+ int index = Arrays.binarySearch(AttributeName.ATTRIBUTE_HASHES, hash);
+ if (index < 0) {
+ return AttributeName.createAttributeName(
+ Portability.newLocalNameFromBuffer(buf, offset, length)
+ // [NOCPP[
+ , checkNcName
+ // ]NOCPP]
+ );
+ } else {
+ AttributeName rv = AttributeName.ATTRIBUTE_NAMES[index];
+ @Local String name = rv.getLocal(AttributeName.HTML);
+ if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
+ return AttributeName.createAttributeName(
+ Portability.newLocalNameFromBuffer(buf, offset, length)
+ // [NOCPP[
+ , checkNcName
+ // ]NOCPP]
+ );
+ }
+ return rv;
+ }
+ }
+
+ /**
+ * This method has to return a unique integer for each well-known
+ * lower-cased attribute name.
+ *
+ * @param buf
+ * @param len
+ * @return
+ */
+ private static int bufToHash(@NoLength char[] buf, int len) {
+ int hash2 = 0;
+ int hash = len;
+ hash <<= 5;
+ hash += buf[0] - 0x60;
+ int j = len;
+ for (int i = 0; i < 4 && j > 0; i++) {
+ j--;
+ hash <<= 5;
+ hash += buf[j] - 0x60;
+ hash2 <<= 6;
+ hash2 += buf[i] - 0x5F;
+ }
+ return hash ^ hash2;
+ }
+
+ public static final int HTML = 0;
+
+ public static final int MATHML = 1;
+
+ public static final int SVG = 2;
+
+ // [NOCPP[
+
+ public static final int HTML_LANG = 3;
+
+ private final @IdType String type;
+
+ // ]NOCPP]
+
+ private final @NsUri @NoLength String[] uri;
+
+ private final @Local @NoLength String[] local;
+
+ private final @Prefix @NoLength String[] prefix;
+
+ // [NOCPP[
+
+ private final @QName @NoLength String[] qName;
+
+ // XXX convert to bitfield
+ private final @NoLength boolean[] ncname;
+
+ private final boolean xmlns;
+
+ /**
+ * @param type
+ * @param uri
+ * @param local
+ * @param name
+ * @param ncname
+ * @param xmlns
+ */
+ private AttributeName(@NsUri @NoLength String[] uri,
+ @Local @NoLength String[] local, @Prefix @NoLength String[] prefix,
+ @NoLength boolean[] ncname, boolean xmlns, @IdType String type) {
+ this.type = type;
+ this.uri = uri;
+ this.local = local;
+ this.prefix = prefix;
+
+ this.qName = COMPUTE_QNAME(local, prefix);
+ this.ncname = ncname;
+ this.xmlns = xmlns;
+ }
+
+ // ]NOCPP]
+
+ protected AttributeName(@NsUri @NoLength String[] uri,
+ @Local @NoLength String[] local, @Prefix @NoLength String[] prefix
+ // [NOCPP[
+ , @NoLength boolean[] ncname, boolean xmlns
+ // ]NOCPP]
+ ) {
+ // [NOCPP[
+ this.type = "CDATA";
+ // ]NOCPP]
+ this.uri = uri;
+ this.local = local;
+ this.prefix = prefix;
+ // [NOCPP[
+ this.qName = COMPUTE_QNAME(local, prefix);
+ this.ncname = ncname;
+ this.xmlns = xmlns;
+ // ]NOCPP]
+ }
+
+ private static AttributeName createAttributeName(@Local String name
+ // [NOCPP[
+ , boolean checkNcName
+ // ]NOCPP]
+ ) {
+ // [NOCPP[
+ boolean ncName = true;
+ boolean xmlns = name.startsWith("xmlns:");
+ if (checkNcName) {
+ if (xmlns) {
+ ncName = false;
+ } else {
+ ncName = NCName.isNCName(name);
+ }
+ }
+ // ]NOCPP]
+ return new AttributeName(AttributeName.ALL_NO_NS,
+ AttributeName.SAME_LOCAL(name), ALL_NO_PREFIX
+ // ]NOCPP]
+ , (ncName ? AttributeName.ALL_NCNAME
+ : AttributeName.ALL_NO_NCNAME), xmlns
+ // ]NOCPP]
+ );
+ }
+
+ @Virtual void release() {
+ // No-op in Java.
+ // Implement as |delete this;| in subclass.
+ }
+
+ @SuppressWarnings("unused") private void destructor() {
+ Portability.releaseLocal(local[0]); // this must be a no-op for static
+ // locals
+ // for non-static cases the other array slots contain the same pointer
+ // as weak references.
+ Portability.deleteArray(local);
+ }
+
+ // [NOCPP[
+ static AttributeName create(@Local String name) {
+ return new AttributeName(AttributeName.ALL_NO_NS,
+ AttributeName.SAME_LOCAL(name), ALL_NO_PREFIX,
+ AttributeName.ALL_NCNAME, false);
+ }
+
+ public boolean isNcName(int mode) {
+ return ncname[mode];
+ }
+
+ public boolean isXmlns() {
+ return xmlns;
+ }
+
+ boolean isCaseFolded() {
+ return this == AttributeName.ACTIVE || this == AttributeName.ALIGN
+ || this == AttributeName.ASYNC
+ || this == AttributeName.AUTOCOMPLETE
+ || this == AttributeName.AUTOFOCUS
+ || this == AttributeName.AUTOSUBMIT
+ || this == AttributeName.CHECKED || this == AttributeName.CLEAR
+ || this == AttributeName.COMPACT
+ || this == AttributeName.DATAFORMATAS
+ || this == AttributeName.DECLARE
+ || this == AttributeName.DEFAULT || this == AttributeName.DEFER
+ || this == AttributeName.DIR || this == AttributeName.DISABLED
+ || this == AttributeName.ENCTYPE || this == AttributeName.FRAME
+ || this == AttributeName.ISMAP || this == AttributeName.METHOD
+ || this == AttributeName.MULTIPLE
+ || this == AttributeName.NOHREF
+ || this == AttributeName.NORESIZE
+ || this == AttributeName.NOSHADE
+ || this == AttributeName.NOWRAP
+ || this == AttributeName.READONLY
+ || this == AttributeName.REPLACE
+ || this == AttributeName.REQUIRED
+ || this == AttributeName.RULES || this == AttributeName.SCOPE
+ || this == AttributeName.SCROLLING
+ || this == AttributeName.SELECTED
+ || this == AttributeName.SHAPE || this == AttributeName.STEP
+ || this == AttributeName.TYPE || this == AttributeName.VALIGN
+ || this == AttributeName.VALUETYPE;
+ }
+
+ boolean isBoolean() {
+ return this == AttributeName.ACTIVE || this == AttributeName.ASYNC
+ || this == AttributeName.AUTOFOCUS
+ || this == AttributeName.AUTOSUBMIT
+ || this == AttributeName.CHECKED
+ || this == AttributeName.COMPACT
+ || this == AttributeName.DECLARE
+ || this == AttributeName.DEFAULT || this == AttributeName.DEFER
+ || this == AttributeName.DISABLED
+ || this == AttributeName.ISMAP
+ || this == AttributeName.MULTIPLE
+ || this == AttributeName.NOHREF
+ || this == AttributeName.NORESIZE
+ || this == AttributeName.NOSHADE
+ || this == AttributeName.NOWRAP
+ || this == AttributeName.READONLY
+ || this == AttributeName.REQUIRED
+ || this == AttributeName.SELECTED;
+ }
+
+ public @QName String getQName(int mode) {
+ return qName[mode];
+ }
+
+ public @IdType String getType(int mode) {
+ return type;
+ }
+
+ // ]NOCPP]
+
+ public @NsUri String getUri(int mode) {
+ return uri[mode];
+ }
+
+ public @Local String getLocal(int mode) {
+ return local[mode];
+ }
+
+ public @Prefix String getPrefix(int mode) {
+ return prefix[mode];
+ }
+
+ boolean equalsAnother(AttributeName another) {
+ return this.getLocal(AttributeName.HTML) == another.getLocal(AttributeName.HTML);
+ }
+
+ // START CODE ONLY USED FOR GENERATING CODE uncomment to regenerate
+//
+// /**
+// * @see java.lang.Object#toString()
+// */
+// @Override public String toString() {
+// return "(" + formatNs() + ", " + formatLocal() + ", " + formatPrefix()
+// + ", " + formatNcname() + ", " + (xmlns ? "true" : "false")
+// + ("ID" == type ? ", \"ID\"" : "") + ")";
+// }
+//
+// public int compareTo(AttributeName other) {
+// int thisHash = this.hash();
+// int otherHash = other.hash();
+// if (thisHash < otherHash) {
+// return -1;
+// } else if (thisHash == otherHash) {
+// return 0;
+// } else {
+// return 1;
+// }
+// }
+//
+// private String formatPrefix() {
+// if (prefix[0] == null && prefix[1] == null && prefix[2] == null
+// && prefix[3] == null) {
+// return "ALL_NO_PREFIX";
+// } else if (prefix[0] == null && prefix[1] == prefix[2]
+// && prefix[3] == null) {
+// if ("xmlns".equals(prefix[1])) {
+// return "XMLNS_PREFIX";
+// } else if ("xml".equals(prefix[1])) {
+// return "XML_PREFIX";
+// } else if ("xlink".equals(prefix[1])) {
+// return "XLINK_PREFIX";
+// } else {
+// throw new IllegalStateException();
+// }
+// } else if (prefix[0] == null && prefix[1] == null && prefix[2] == null
+// && prefix[3] == "xml") {
+// return "LANG_PREFIX";
+// } else {
+// throw new IllegalStateException();
+// }
+// }
+//
+// private String formatLocal() {
+// if (local[0] == local[1] && local[0] == local[3]
+// && local[0] != local[2]) {
+// return "SVG_DIFFERENT(\"" + local[0] + "\", \"" + local[2] + "\")";
+// }
+// if (local[0] == local[2] && local[0] == local[3]
+// && local[0] != local[1]) {
+// return "MATH_DIFFERENT(\"" + local[0] + "\", \"" + local[1] + "\")";
+// }
+// if (local[0] == local[3] && local[1] == local[2]
+// && local[0] != local[1]) {
+// return "COLONIFIED_LOCAL(\"" + local[0] + "\", \"" + local[1]
+// + "\")";
+// }
+// for (int i = 1; i < local.length; i++) {
+// if (local[0] != local[i]) {
+// throw new IllegalStateException();
+// }
+// }
+// return "SAME_LOCAL(\"" + local[0] + "\")";
+// }
+//
+// private String formatNs() {
+// if (uri[0] == "" && uri[1] == "" && uri[2] == "" && uri[3] == "") {
+// return "ALL_NO_NS";
+// } else if (uri[0] == "" && uri[1] == uri[2] && uri[3] == "") {
+// if ("http://www.w3.org/2000/xmlns/".equals(uri[1])) {
+// return "XMLNS_NS";
+// } else if ("http://www.w3.org/XML/1998/namespace".equals(uri[1])) {
+// return "XML_NS";
+// } else if ("http://www.w3.org/1999/xlink".equals(uri[1])) {
+// return "XLINK_NS";
+// } else {
+// throw new IllegalStateException();
+// }
+// } else if (uri[0] == "" && uri[1] == "" && uri[2] == ""
+// && uri[3] == "http://www.w3.org/XML/1998/namespace") {
+// return "LANG_NS";
+// } else {
+// throw new IllegalStateException();
+// }
+// }
+//
+// private String formatNcname() {
+// for (int i = 0; i < ncname.length; i++) {
+// if (!ncname[i]) {
+// return "new boolean[]{" + ncname[0] + ", " + ncname[1] + ", "
+// + ncname[2] + ", " + ncname[3] + "}";
+// }
+// }
+// return "ALL_NCNAME";
+// }
+//
+// private String constName() {
+// String name = getLocal(HTML);
+// char[] buf = new char[name.length()];
+// for (int i = 0; i < name.length(); i++) {
+// char c = name.charAt(i);
+// if (c == '-' || c == ':') {
+// buf[i] = '_';
+// } else if (c >= 'a' && c <= 'z') {
+// buf[i] = (char) (c - 0x20);
+// } else {
+// buf[i] = c;
+// }
+// }
+// String rv = new String(buf);
+// if ("UNICODE".equals(rv)) {
+// return "UNI_CODE";
+// }
+// return rv;
+// }
+//
+// private int hash() {
+// String name = getLocal(HTML);
+// return bufToHash(name.toCharArray(), name.length());
+// }
+//
+// /**
+// * Regenerate self
+// *
+// * @param args
+// */
+// public static void main(String[] args) {
+// Arrays.sort(ATTRIBUTE_NAMES);
+// for (int i = 1; i < ATTRIBUTE_NAMES.length; i++) {
+// if (ATTRIBUTE_NAMES[i].hash() == ATTRIBUTE_NAMES[i - 1].hash()) {
+// System.err.println("Hash collision: "
+// + ATTRIBUTE_NAMES[i].getLocal(HTML) + ", "
+// + ATTRIBUTE_NAMES[i - 1].getLocal(HTML));
+// return;
+// }
+// }
+// for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
+// AttributeName att = ATTRIBUTE_NAMES[i];
+// System.out.println("public static final AttributeName "
+// + att.constName() + " = new AttributeName" + att.toString()
+// + ";");
+// }
+// System.out.println("private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = {");
+// for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
+// AttributeName att = ATTRIBUTE_NAMES[i];
+// System.out.println(att.constName() + ",");
+// }
+// System.out.println("};");
+// System.out.println("private final static int[] ATTRIBUTE_HASHES = {");
+// for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
+// AttributeName att = ATTRIBUTE_NAMES[i];
+// System.out.println(Integer.toString(att.hash()) + ",");
+// }
+// System.out.println("};");
+// }
+
+ // START GENERATED CODE
+ public static final AttributeName D = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("d"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName K = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("k"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName R = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("r"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName X = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("x"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName Y = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("y"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName Z = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("z"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("by"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("cx"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("cy"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("dx"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("dy"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName G2 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("g2"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName G1 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("g1"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fx"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fy"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName K4 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("k4"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName K2 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("k2"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName K3 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("k3"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName K1 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("k1"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ID = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("id"), ALL_NO_PREFIX, ALL_NCNAME, false, "ID");
+
+ public static final AttributeName IN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("in"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName U2 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("u2"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName U1 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("u1"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rt"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rx"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ry"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TO = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("to"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName Y2 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("y2"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName Y1 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("y1"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName X1 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("x1"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName X2 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("x2"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ALT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("alt"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DIR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("dir"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DUR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("dur"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName END = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("end"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("for"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName IN2 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("in2"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MAX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("max"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MIN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("min"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LOW = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("low"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REL = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rel"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REV = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rev"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SRC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("src"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName AXIS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("axis"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ABBR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("abbr"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BBOX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("bbox"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CITE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("cite"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CODE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("code"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BIAS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("bias"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COLS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("cols"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLIP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("clip"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CHAR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("char"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BASE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("base"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName EDGE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("edge"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DATA = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("data"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FILL = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fill"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FROM = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("from"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FORM = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("form"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FACE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("face"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HIGH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("high"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HREF = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("href"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OPEN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("open"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ICON = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("icon"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NAME = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("name"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MODE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("mode"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MASK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("mask"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LINK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("link"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LANG = new AttributeName(LANG_NS,
+ SAME_LOCAL("lang"), LANG_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LIST = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("list"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TYPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("type"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName WHEN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("when"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName WRAP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("wrap"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TEXT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("text"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PATH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("path"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ping"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REFX = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("refx", "refX"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REFY = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("refy", "refY"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("size"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SEED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("seed"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROWS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rows"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SPAN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("span"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STEP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("step"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("role"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName XREF = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("xref"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ASYNC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("async"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ALINK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("alink"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ALIGN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("align"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLOSE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("close"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COLOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("color"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLASS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("class"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLEAR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("clear"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BEGIN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("begin"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DEPTH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("depth"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DEFER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("defer"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FENCE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fence"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FRAME = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("frame"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ISMAP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ismap"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONEND = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onend"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName INDEX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("index"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ORDER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("order"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OTHER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("other"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONCUT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("oncut"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NARGS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("nargs"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MEDIA = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("media"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LABEL = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("label"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LOCAL = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("local"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName WIDTH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("width"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TITLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("title"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VLINK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("vlink"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VALUE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("value"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SLOPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("slope"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SHAPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("shape"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCOPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("scope"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCALE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("scale"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SPEED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("speed"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STYLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("style"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RULES = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rules"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STEMH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("stemh"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STEMV = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("stemv"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName START = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("start"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName XMLNS = new AttributeName(XMLNS_NS,
+ SAME_LOCAL("xmlns"), ALL_NO_PREFIX, new boolean[] { false, false,
+ false, false }, true);
+
+ public static final AttributeName ACCEPT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("accept"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ACCENT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("accent"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ASCENT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ascent"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ACTIVE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("active"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ALTIMG = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("altimg"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ACTION = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("action"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BORDER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("border"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CURSOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("cursor"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COORDS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("coords"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FILTER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("filter"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FORMAT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("format"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HIDDEN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("hidden"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HSPACE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("hspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HEIGHT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("height"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONMOVE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onmove"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONLOAD = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onload"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDRAG = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ondrag"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ORIGIN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("origin"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONZOOM = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onzoom"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONHELP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onhelp"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONSTOP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onstop"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDROP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ondrop"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONBLUR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onblur"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OBJECT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("object"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OFFSET = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("offset"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ORIENT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("orient"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONCOPY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("oncopy"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NOWRAP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("nowrap"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NOHREF = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("nohref"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MACROS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("macros"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName METHOD = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("method"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LOWSRC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("lowsrc"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LSPACE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("lspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LQUOTE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("lquote"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName USEMAP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("usemap"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName WIDTHS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("widths"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TARGET = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("target"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VALUES = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("values"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VALIGN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("valign"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VSPACE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("vspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName POSTER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("poster"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName POINTS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("points"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PROMPT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("prompt"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCOPED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("scoped"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STRING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("string"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCHEME = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("scheme"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STROKE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("stroke"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RADIUS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("radius"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RESULT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("result"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REPEAT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("repeat"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RSPACE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rspace"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROTATE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rotate"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RQUOTE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rquote"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ALTTEXT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("alttext"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARCHIVE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("archive"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName AZIMUTH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("azimuth"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLOSURE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("closure"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CHECKED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("checked"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLASSID = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("classid"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CHAROFF = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("charoff"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BGCOLOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("bgcolor"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COLSPAN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("colspan"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CHARSET = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("charset"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COMPACT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("compact"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CONTENT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("content"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ENCTYPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("enctype"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DATASRC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("datasrc"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DATAFLD = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("datafld"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DECLARE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("declare"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DISPLAY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("display"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DIVISOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("divisor"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DEFAULT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("default"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DESCENT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("descent"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName KERNING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("kerning"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HANGING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("hanging"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HEADERS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("headers"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONPASTE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onpaste"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONCLICK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onclick"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OPTIMUM = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("optimum"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONBEGIN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onbegin"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONKEYUP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onkeyup"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONFOCUS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onfocus"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONERROR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onerror"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONINPUT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("oninput"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONABORT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onabort"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONSTART = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onstart"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONRESET = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onreset"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OPACITY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("opacity"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NOSHADE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("noshade"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MINSIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("minsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MAXSIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("maxsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LOOPEND = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("loopend"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LARGEOP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("largeop"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName UNI_CODE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("unicode"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TARGETX = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("targetx", "targetX"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName TARGETY = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("targety", "targetY"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName VIEWBOX = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("viewbox", "viewBox"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName VERSION = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("version"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PATTERN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("pattern"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PROFILE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("profile"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SPACING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("spacing"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RESTART = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("restart"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROWSPAN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rowspan"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SANDBOX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("sandbox"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SUMMARY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("summary"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STANDBY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("standby"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REPLACE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("replace"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName AUTOPLAY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("autoplay"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ADDITIVE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("additive"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CALCMODE = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("calcmode", "calcMode"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName CODETYPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("codetype"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CODEBASE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("codebase"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CONTROLS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("controls"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BEVELLED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("bevelled"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BASELINE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("baseline"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName EXPONENT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("exponent"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName EDGEMODE = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("edgemode", "edgeMode"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ENCODING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("encoding"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName GLYPHREF = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("glyphref", "glyphRef"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName DATETIME = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("datetime"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DISABLED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("disabled"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONTSIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fontsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName KEYTIMES = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("keytimes", "keyTimes"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName PANOSE_1 = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("panose-1"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName HREFLANG = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("hreflang"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONRESIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onresize"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONCHANGE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onchange"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONBOUNCE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onbounce"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONUNLOAD = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onunload"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONFINISH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onfinish"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONSCROLL = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onscroll"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OPERATOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("operator"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OVERFLOW = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("overflow"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONSUBMIT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onsubmit"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONREPEAT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onrepeat"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONSELECT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onselect"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NOTATION = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("notation"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NORESIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("noresize"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MANIFEST = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("manifest"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MATHSIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("mathsize"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MULTIPLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("multiple"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LONGDESC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("longdesc"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LANGUAGE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("language"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TEMPLATE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("template"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TABINDEX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("tabindex"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName READONLY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("readonly"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SELECTED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("selected"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROWLINES = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rowlines"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SEAMLESS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("seamless"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROWALIGN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rowalign"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STRETCHY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("stretchy"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REQUIRED = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("required"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName XML_BASE = new AttributeName(XML_NS,
+ COLONIFIED_LOCAL("xml:base", "base"), XML_PREFIX, new boolean[] {
+ false, true, true, false }, false);
+
+ public static final AttributeName XML_LANG = new AttributeName(XML_NS,
+ COLONIFIED_LOCAL("xml:lang", "lang"), XML_PREFIX, new boolean[] {
+ false, true, true, false }, false);
+
+ public static final AttributeName X_HEIGHT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("x-height"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_OWNS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("aria-owns"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName AUTOFOCUS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("autofocus"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_SORT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("aria-sort"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ACCESSKEY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("accesskey"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_BUSY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("aria-busy"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_GRAB = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("aria-grab"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName AMPLITUDE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("amplitude"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_LIVE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("aria-live"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLIP_RULE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("clip-rule"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CLIP_PATH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("clip-path"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName EQUALROWS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("equalrows"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ELEVATION = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("elevation"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DIRECTION = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("direction"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DRAGGABLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("draggable"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FILTERRES = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("filterres", "filterRes"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FILL_RULE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fill-rule"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONTSTYLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fontstyle"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONT_SIZE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("font-size"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName KEYPOINTS = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("keypoints", "keyPoints"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName HIDEFOCUS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("hidefocus"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONMESSAGE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onmessage"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName INTERCEPT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("intercept"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDRAGEND = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ondragend"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONMOVEEND = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onmoveend"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONINVALID = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("oninvalid"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONKEYDOWN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onkeydown"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONFOCUSIN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onfocusin"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONMOUSEUP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onmouseup"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName INPUTMODE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("inputmode"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONROWEXIT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onrowexit"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MATHCOLOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("mathcolor"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MASKUNITS = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("maskunits", "maskUnits"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MAXLENGTH = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("maxlength"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LINEBREAK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("linebreak"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName LOOPSTART = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("loopstart"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TRANSFORM = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("transform"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName V_HANGING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("v-hanging"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VALUETYPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("valuetype"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName POINTSATZ = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("pointsatz", "pointsAtZ"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName POINTSATX = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("pointsatx", "pointsAtX"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName POINTSATY = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("pointsaty", "pointsAtY"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName PLAYCOUNT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("playcount"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SYMMETRIC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("symmetric"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCROLLING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("scrolling"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REPEATDUR = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("repeatdur", "repeatDur"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName SELECTION = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("selection"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SEPARATOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("separator"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName XML_SPACE = new AttributeName(XML_NS,
+ COLONIFIED_LOCAL("xml:space", "space"), XML_PREFIX, new boolean[] {
+ false, true, true, false }, false);
+
+ public static final AttributeName AUTOSUBMIT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("autosubmit"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ALPHABETIC = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("alphabetic"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ACTIONTYPE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("actiontype"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ACCUMULATE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("accumulate"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_LEVEL = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("aria-level"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COLUMNSPAN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("columnspan"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName CAP_HEIGHT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("cap-height"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName BACKGROUND = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("background"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName GLYPH_NAME = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("glyph-name"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName GROUPALIGN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("groupalign"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONTFAMILY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fontfamily"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONTWEIGHT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("fontweight"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONT_STYLE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("font-style"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName KEYSPLINES = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("keysplines", "keySplines"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName HTTP_EQUIV = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("http-equiv"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONACTIVATE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onactivate"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName OCCURRENCE = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("occurrence"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName IRRELEVANT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("irrelevant"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDBLCLICK = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ondblclick"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDRAGDROP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ondragdrop"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONKEYPRESS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onkeypress"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONROWENTER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onrowenter"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDRAGOVER = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("ondragover"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONFOCUSOUT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onfocusout"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONMOUSEOUT = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("onmouseout"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName NUMOCTAVES = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("numoctaves", "numOctaves"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName MARKER_MID = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("marker-mid"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MARKER_END = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("marker-end"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TEXTLENGTH = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("textlength", "textLength"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName VISIBILITY = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("visibility"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VIEWTARGET = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("viewtarget", "viewTarget"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName VERT_ADV_Y = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("vert-adv-y"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PATHLENGTH = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("pathlength", "pathLength"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName REPEAT_MAX = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("repeat-max"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RADIOGROUP = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("radiogroup"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STOP_COLOR = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("stop-color"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SEPARATORS = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("separators"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REPEAT_MIN = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("repeat-min"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ROWSPACING = new AttributeName(ALL_NO_NS,
+ SAME_LOCAL("rowspacing"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ZOOMANDPAN = new AttributeName(ALL_NO_NS,
+ SVG_DIFFERENT("zoomandpan", "zoomAndPan"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName XLINK_TYPE = new AttributeName(XLINK_NS,
+ COLONIFIED_LOCAL("xlink:type", "type"), XLINK_PREFIX,
+ new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName XLINK_ROLE = new AttributeName(XLINK_NS,
+ COLONIFIED_LOCAL("xlink:role", "role"), XLINK_PREFIX,
+ new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName XLINK_HREF = new AttributeName(XLINK_NS,
+ COLONIFIED_LOCAL("xlink:href", "href"), XLINK_PREFIX,
+ new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName XLINK_SHOW = new AttributeName(XLINK_NS,
+ COLONIFIED_LOCAL("xlink:show", "show"), XLINK_PREFIX,
+ new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName ACCENTUNDER = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("accentunder"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_SECRET = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-secret"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_ATOMIC = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-atomic"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_HIDDEN = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-hidden"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_FLOWTO = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-flowto"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARABIC_FORM = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("arabic-form"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName CELLPADDING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("cellpadding"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName CELLSPACING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("cellspacing"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName COLUMNWIDTH = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("columnwidth"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName COLUMNALIGN = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("columnalign"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName COLUMNLINES = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("columnlines"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName CONTEXTMENU = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("contextmenu"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName BASEPROFILE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("baseprofile", "baseProfile"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONT_FAMILY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("font-family"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FRAMEBORDER = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("frameborder"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FILTERUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("filterunits", "filterUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FLOOD_COLOR = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("flood-color"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FONT_WEIGHT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("font-weight"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName HORIZ_ADV_X = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("horiz-adv-x"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONDRAGLEAVE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondragleave"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOUSEMOVE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmousemove"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ORIENTATION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("orientation"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOUSEDOWN = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmousedown"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOUSEOVER = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmouseover"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONDRAGENTER = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondragenter"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName IDEOGRAPHIC = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ideographic"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONBEFORECUT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforecut"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONFORMINPUT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onforminput"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONDRAGSTART = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondragstart"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOVESTART = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmovestart"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MARKERUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("markerunits", "markerUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MATHVARIANT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("mathvariant"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MARGINWIDTH = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("marginwidth"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MARKERWIDTH = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("markerwidth", "markerWidth"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName TEXT_ANCHOR = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("text-anchor"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName TABLEVALUES = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("tablevalues", "tableValues"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCRIPTLEVEL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("scriptlevel"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName REPEATCOUNT = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("repeatcount", "repeatCount"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STITCHTILES = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("stitchtiles", "stitchTiles"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STARTOFFSET = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("startoffset", "startOffset"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCROLLDELAY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("scrolldelay"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName XMLNS_XLINK = new AttributeName(XMLNS_NS,
+ COLONIFIED_LOCAL("xmlns:xlink", "xlink"), XMLNS_PREFIX,
+ new boolean[] { false, false, false, false }, true);
+
+ public static final AttributeName XLINK_TITLE = new AttributeName(XLINK_NS,
+ COLONIFIED_LOCAL("xlink:title", "title"), XLINK_PREFIX,
+ new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName ARIA_INVALID = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-invalid"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_PRESSED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-pressed"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_CHECKED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-checked"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName AUTOCOMPLETE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("autocomplete"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_SETSIZE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-setsize"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_CHANNEL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-channel"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName EQUALCOLUMNS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("equalcolumns"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName DISPLAYSTYLE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("displaystyle"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName DATAFORMATAS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("dataformatas"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FILL_OPACITY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("fill-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FONT_VARIANT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("font-variant"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FONT_STRETCH = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("font-stretch"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName FRAMESPACING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("framespacing"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName KERNELMATRIX = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("kernelmatrix", "kernelMatrix"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDEACTIVATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondeactivate"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONROWSDELETE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onrowsdelete"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOUSELEAVE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmouseleave"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONFORMCHANGE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onformchange"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONCELLCHANGE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("oncellchange"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOUSEWHEEL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmousewheel"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONMOUSEENTER = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onmouseenter"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONAFTERPRINT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onafterprint"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONBEFORECOPY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforecopy"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MARGINHEIGHT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("marginheight"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MARKERHEIGHT = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("markerheight", "markerHeight"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName MARKER_START = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("marker-start"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MATHEMATICAL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("mathematical"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName LENGTHADJUST = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("lengthadjust", "lengthAdjust"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName UNSELECTABLE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("unselectable"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName UNICODE_BIDI = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("unicode-bidi"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName UNITS_PER_EM = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("units-per-em"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName WORD_SPACING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("word-spacing"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName WRITING_MODE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("writing-mode"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName V_ALPHABETIC = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("v-alphabetic"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName PATTERNUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("patternunits", "patternUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SPREADMETHOD = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("spreadmethod", "spreadMethod"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SURFACESCALE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("surfacescale", "surfaceScale"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STROKE_WIDTH = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-width"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName REPEAT_START = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("repeat-start"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName STDDEVIATION = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("stddeviation", "stdDeviation"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STOP_OPACITY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stop-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_CONTROLS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-controls"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_HASPOPUP = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-haspopup"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ACCENT_HEIGHT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("accent-height"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_VALUENOW = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-valuenow"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_RELEVANT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-relevant"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_POSINSET = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-posinset"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_VALUEMAX = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-valuemax"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_READONLY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-readonly"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_SELECTED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-selected"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_REQUIRED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-required"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_EXPANDED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-expanded"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_DISABLED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-disabled"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ATTRIBUTETYPE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("attributetype", "attributeType"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ATTRIBUTENAME = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("attributename", "attributeName"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_DATATYPE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-datatype"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_VALUEMIN = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-valuemin"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName BASEFREQUENCY = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("basefrequency", "baseFrequency"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COLUMNSPACING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("columnspacing"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName COLOR_PROFILE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("color-profile"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName CLIPPATHUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("clippathunits", "clipPathUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName DEFINITIONURL = new AttributeName(
+ ALL_NO_NS, MATH_DIFFERENT("definitionurl", "definitionURL"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName GRADIENTUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("gradientunits", "gradientUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FLOOD_OPACITY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("flood-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONAFTERUPDATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onafterupdate"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONERRORUPDATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onerrorupdate"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONBEFOREPASTE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforepaste"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONLOSECAPTURE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onlosecapture"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONCONTEXTMENU = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("oncontextmenu"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONSELECTSTART = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onselectstart"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONBEFOREPRINT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforeprint"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MOVABLELIMITS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("movablelimits"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName LINETHICKNESS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("linethickness"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName UNICODE_RANGE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("unicode-range"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName THINMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("thinmathspace"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName VERT_ORIGIN_X = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("vert-origin-x"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName VERT_ORIGIN_Y = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("vert-origin-y"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName V_IDEOGRAPHIC = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("v-ideographic"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName PRESERVEALPHA = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("preservealpha", "preserveAlpha"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SCRIPTMINSIZE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("scriptminsize"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName SPECIFICATION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("specification"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName XLINK_ACTUATE = new AttributeName(
+ XLINK_NS, COLONIFIED_LOCAL("xlink:actuate", "actuate"),
+ XLINK_PREFIX, new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName XLINK_ARCROLE = new AttributeName(
+ XLINK_NS, COLONIFIED_LOCAL("xlink:arcrole", "arcrole"),
+ XLINK_PREFIX, new boolean[] { false, true, true, false }, false);
+
+ public static final AttributeName ACCEPT_CHARSET = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("accept-charset"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ALIGNMENTSCOPE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("alignmentscope"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_MULTILINE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-multiline"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName BASELINE_SHIFT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("baseline-shift"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName HORIZ_ORIGIN_X = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("horiz-origin-x"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName HORIZ_ORIGIN_Y = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("horiz-origin-y"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONBEFOREUPDATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforeupdate"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONFILTERCHANGE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onfilterchange"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONROWSINSERTED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onrowsinserted"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ONBEFOREUNLOAD = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforeunload"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName MATHBACKGROUND = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("mathbackground"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName LETTER_SPACING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("letter-spacing"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName LIGHTING_COLOR = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("lighting-color"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName THICKMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("thickmathspace"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName TEXT_RENDERING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("text-rendering"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName V_MATHEMATICAL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("v-mathematical"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName POINTER_EVENTS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("pointer-events"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName PRIMITIVEUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("primitiveunits", "primitiveUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SYSTEMLANGUAGE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("systemlanguage", "systemLanguage"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName STROKE_LINECAP = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-linecap"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName SUBSCRIPTSHIFT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("subscriptshift"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName STROKE_OPACITY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-opacity"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName ARIA_DROPEFFECT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-dropeffect"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_LABELLEDBY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-labelledby"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_TEMPLATEID = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-templateid"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName COLOR_RENDERING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("color-rendering"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName CONTENTEDITABLE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("contenteditable"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName DIFFUSECONSTANT = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("diffuseconstant", "diffuseConstant"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONDATAAVAILABLE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondataavailable"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ONCONTROLSELECT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("oncontrolselect"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName IMAGE_RENDERING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("image-rendering"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName MEDIUMMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("mediummathspace"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName TEXT_DECORATION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("text-decoration"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName SHAPE_RENDERING = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("shape-rendering"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName STROKE_LINEJOIN = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-linejoin"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName REPEAT_TEMPLATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("repeat-template"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_DESCRIBEDBY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-describedby"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName CONTENTSTYLETYPE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("contentstyletype", "contentStyleType"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName FONT_SIZE_ADJUST = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("font-size-adjust"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName KERNELUNITLENGTH = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("kernelunitlength", "kernelUnitLength"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONBEFOREACTIVATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforeactivate"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ONPROPERTYCHANGE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onpropertychange"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ONDATASETCHANGED = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondatasetchanged"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName MASKCONTENTUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("maskcontentunits", "maskContentUnits"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PATTERNTRANSFORM = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("patterntransform", "patternTransform"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName REQUIREDFEATURES = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("requiredfeatures", "requiredFeatures"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName RENDERING_INTENT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("rendering-intent"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName SPECULAREXPONENT = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("specularexponent", "specularExponent"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SPECULARCONSTANT = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("specularconstant", "specularConstant"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName SUPERSCRIPTSHIFT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("superscriptshift"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName STROKE_DASHARRAY = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-dasharray"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName XCHANNELSELECTOR = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("xchannelselector", "xChannelSelector"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName YCHANNELSELECTOR = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("ychannelselector", "yChannelSelector"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_AUTOCOMPLETE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-autocomplete"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName CONTENTSCRIPTTYPE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("contentscripttype", "contentScriptType"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ENABLE_BACKGROUND = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("enable-background"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName DOMINANT_BASELINE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("dominant-baseline"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName GRADIENTTRANSFORM = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("gradienttransform", "gradientTransform"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ONBEFORDEACTIVATE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbefordeactivate"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ONDATASETCOMPLETE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("ondatasetcomplete"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName OVERLINE_POSITION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("overline-position"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ONBEFOREEDITFOCUS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onbeforeeditfocus"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName LIMITINGCONEANGLE = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("limitingconeangle", "limitingConeAngle"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName VERYTHINMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("verythinmathspace"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName STROKE_DASHOFFSET = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-dashoffset"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName STROKE_MITERLIMIT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("stroke-miterlimit"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ALIGNMENT_BASELINE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("alignment-baseline"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ONREADYSTATECHANGE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("onreadystatechange"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName OVERLINE_THICKNESS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("overline-thickness"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName UNDERLINE_POSITION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("underline-position"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName VERYTHICKMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("verythickmathspace"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName REQUIREDEXTENSIONS = new AttributeName(
+ ALL_NO_NS,
+ SVG_DIFFERENT("requiredextensions", "requiredExtensions"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName COLOR_INTERPOLATION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("color-interpolation"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName UNDERLINE_THICKNESS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("underline-thickness"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName PRESERVEASPECTRATIO = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("preserveaspectratio",
+ "preserveAspectRatio"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName PATTERNCONTENTUNITS = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("patterncontentunits",
+ "patternContentUnits"), ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_MULTISELECTABLE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-multiselectable"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName SCRIPTSIZEMULTIPLIER = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("scriptsizemultiplier"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName ARIA_ACTIVEDESCENDANT = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("aria-activedescendant"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName VERYVERYTHINMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("veryverythinmathspace"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName VERYVERYTHICKMATHSPACE = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("veryverythickmathspace"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName STRIKETHROUGH_POSITION = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("strikethrough-position"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName STRIKETHROUGH_THICKNESS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("strikethrough-thickness"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName EXTERNALRESOURCESREQUIRED = new AttributeName(
+ ALL_NO_NS, SVG_DIFFERENT("externalresourcesrequired",
+ "externalResourcesRequired"), ALL_NO_PREFIX, ALL_NCNAME,
+ false);
+
+ public static final AttributeName GLYPH_ORIENTATION_VERTICAL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("glyph-orientation-vertical"), ALL_NO_PREFIX,
+ ALL_NCNAME, false);
+
+ public static final AttributeName COLOR_INTERPOLATION_FILTERS = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("color-interpolation-filters"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ public static final AttributeName GLYPH_ORIENTATION_HORIZONTAL = new AttributeName(
+ ALL_NO_NS, SAME_LOCAL("glyph-orientation-horizontal"),
+ ALL_NO_PREFIX, ALL_NCNAME, false);
+
+ private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = { D, K, R,
+ X, Y, Z, BY, CX, CY, DX, DY, G2, G1, FX, FY, K4, K2, K3, K1, ID,
+ IN, U2, U1, RT, RX, RY, TO, Y2, Y1, X1, X2, ALT, DIR, DUR, END,
+ FOR, IN2, MAX, MIN, LOW, REL, REV, SRC, AXIS, ABBR, BBOX, CITE,
+ CODE, BIAS, COLS, CLIP, CHAR, BASE, EDGE, DATA, FILL, FROM, FORM,
+ FACE, HIGH, HREF, OPEN, ICON, NAME, MODE, MASK, LINK, LANG, LIST,
+ TYPE, WHEN, WRAP, TEXT, PATH, PING, REFX, REFY, SIZE, SEED, ROWS,
+ SPAN, STEP, ROLE, XREF, ASYNC, ALINK, ALIGN, CLOSE, COLOR, CLASS,
+ CLEAR, BEGIN, DEPTH, DEFER, FENCE, FRAME, ISMAP, ONEND, INDEX,
+ ORDER, OTHER, ONCUT, NARGS, MEDIA, LABEL, LOCAL, WIDTH, TITLE,
+ VLINK, VALUE, SLOPE, SHAPE, SCOPE, SCALE, SPEED, STYLE, RULES,
+ STEMH, STEMV, START, XMLNS, ACCEPT, ACCENT, ASCENT, ACTIVE, ALTIMG,
+ ACTION, BORDER, CURSOR, COORDS, FILTER, FORMAT, HIDDEN, HSPACE,
+ HEIGHT, ONMOVE, ONLOAD, ONDRAG, ORIGIN, ONZOOM, ONHELP, ONSTOP,
+ ONDROP, ONBLUR, OBJECT, OFFSET, ORIENT, ONCOPY, NOWRAP, NOHREF,
+ MACROS, METHOD, LOWSRC, LSPACE, LQUOTE, USEMAP, WIDTHS, TARGET,
+ VALUES, VALIGN, VSPACE, POSTER, POINTS, PROMPT, SCOPED, STRING,
+ SCHEME, STROKE, RADIUS, RESULT, REPEAT, RSPACE, ROTATE, RQUOTE,
+ ALTTEXT, ARCHIVE, AZIMUTH, CLOSURE, CHECKED, CLASSID, CHAROFF,
+ BGCOLOR, COLSPAN, CHARSET, COMPACT, CONTENT, ENCTYPE, DATASRC,
+ DATAFLD, DECLARE, DISPLAY, DIVISOR, DEFAULT, DESCENT, KERNING,
+ HANGING, HEADERS, ONPASTE, ONCLICK, OPTIMUM, ONBEGIN, ONKEYUP,
+ ONFOCUS, ONERROR, ONINPUT, ONABORT, ONSTART, ONRESET, OPACITY,
+ NOSHADE, MINSIZE, MAXSIZE, LOOPEND, LARGEOP, UNI_CODE, TARGETX,
+ TARGETY, VIEWBOX, VERSION, PATTERN, PROFILE, SPACING, RESTART,
+ ROWSPAN, SANDBOX, SUMMARY, STANDBY, REPLACE, AUTOPLAY, ADDITIVE,
+ CALCMODE, CODETYPE, CODEBASE, CONTROLS, BEVELLED, BASELINE,
+ EXPONENT, EDGEMODE, ENCODING, GLYPHREF, DATETIME, DISABLED,
+ FONTSIZE, KEYTIMES, PANOSE_1, HREFLANG, ONRESIZE, ONCHANGE,
+ ONBOUNCE, ONUNLOAD, ONFINISH, ONSCROLL, OPERATOR, OVERFLOW,
+ ONSUBMIT, ONREPEAT, ONSELECT, NOTATION, NORESIZE, MANIFEST,
+ MATHSIZE, MULTIPLE, LONGDESC, LANGUAGE, TEMPLATE, TABINDEX,
+ READONLY, SELECTED, ROWLINES, SEAMLESS, ROWALIGN, STRETCHY,
+ REQUIRED, XML_BASE, XML_LANG, X_HEIGHT, ARIA_OWNS, AUTOFOCUS,
+ ARIA_SORT, ACCESSKEY, ARIA_BUSY, ARIA_GRAB, AMPLITUDE, ARIA_LIVE,
+ CLIP_RULE, CLIP_PATH, EQUALROWS, ELEVATION, DIRECTION, DRAGGABLE,
+ FILTERRES, FILL_RULE, FONTSTYLE, FONT_SIZE, KEYPOINTS, HIDEFOCUS,
+ ONMESSAGE, INTERCEPT, ONDRAGEND, ONMOVEEND, ONINVALID, ONKEYDOWN,
+ ONFOCUSIN, ONMOUSEUP, INPUTMODE, ONROWEXIT, MATHCOLOR, MASKUNITS,
+ MAXLENGTH, LINEBREAK, LOOPSTART, TRANSFORM, V_HANGING, VALUETYPE,
+ POINTSATZ, POINTSATX, POINTSATY, PLAYCOUNT, SYMMETRIC, SCROLLING,
+ REPEATDUR, SELECTION, SEPARATOR, XML_SPACE, AUTOSUBMIT, ALPHABETIC,
+ ACTIONTYPE, ACCUMULATE, ARIA_LEVEL, COLUMNSPAN, CAP_HEIGHT,
+ BACKGROUND, GLYPH_NAME, GROUPALIGN, FONTFAMILY, FONTWEIGHT,
+ FONT_STYLE, KEYSPLINES, HTTP_EQUIV, ONACTIVATE, OCCURRENCE,
+ IRRELEVANT, ONDBLCLICK, ONDRAGDROP, ONKEYPRESS, ONROWENTER,
+ ONDRAGOVER, ONFOCUSOUT, ONMOUSEOUT, NUMOCTAVES, MARKER_MID,
+ MARKER_END, TEXTLENGTH, VISIBILITY, VIEWTARGET, VERT_ADV_Y,
+ PATHLENGTH, REPEAT_MAX, RADIOGROUP, STOP_COLOR, SEPARATORS,
+ REPEAT_MIN, ROWSPACING, ZOOMANDPAN, XLINK_TYPE, XLINK_ROLE,
+ XLINK_HREF, XLINK_SHOW, ACCENTUNDER, ARIA_SECRET, ARIA_ATOMIC,
+ ARIA_HIDDEN, ARIA_FLOWTO, ARABIC_FORM, CELLPADDING, CELLSPACING,
+ COLUMNWIDTH, COLUMNALIGN, COLUMNLINES, CONTEXTMENU, BASEPROFILE,
+ FONT_FAMILY, FRAMEBORDER, FILTERUNITS, FLOOD_COLOR, FONT_WEIGHT,
+ HORIZ_ADV_X, ONDRAGLEAVE, ONMOUSEMOVE, ORIENTATION, ONMOUSEDOWN,
+ ONMOUSEOVER, ONDRAGENTER, IDEOGRAPHIC, ONBEFORECUT, ONFORMINPUT,
+ ONDRAGSTART, ONMOVESTART, MARKERUNITS, MATHVARIANT, MARGINWIDTH,
+ MARKERWIDTH, TEXT_ANCHOR, TABLEVALUES, SCRIPTLEVEL, REPEATCOUNT,
+ STITCHTILES, STARTOFFSET, SCROLLDELAY, XMLNS_XLINK, XLINK_TITLE,
+ ARIA_INVALID, ARIA_PRESSED, ARIA_CHECKED, AUTOCOMPLETE,
+ ARIA_SETSIZE, ARIA_CHANNEL, EQUALCOLUMNS, DISPLAYSTYLE,
+ DATAFORMATAS, FILL_OPACITY, FONT_VARIANT, FONT_STRETCH,
+ FRAMESPACING, KERNELMATRIX, ONDEACTIVATE, ONROWSDELETE,
+ ONMOUSELEAVE, ONFORMCHANGE, ONCELLCHANGE, ONMOUSEWHEEL,
+ ONMOUSEENTER, ONAFTERPRINT, ONBEFORECOPY, MARGINHEIGHT,
+ MARKERHEIGHT, MARKER_START, MATHEMATICAL, LENGTHADJUST,
+ UNSELECTABLE, UNICODE_BIDI, UNITS_PER_EM, WORD_SPACING,
+ WRITING_MODE, V_ALPHABETIC, PATTERNUNITS, SPREADMETHOD,
+ SURFACESCALE, STROKE_WIDTH, REPEAT_START, STDDEVIATION,
+ STOP_OPACITY, ARIA_CONTROLS, ARIA_HASPOPUP, ACCENT_HEIGHT,
+ ARIA_VALUENOW, ARIA_RELEVANT, ARIA_POSINSET, ARIA_VALUEMAX,
+ ARIA_READONLY, ARIA_SELECTED, ARIA_REQUIRED, ARIA_EXPANDED,
+ ARIA_DISABLED, ATTRIBUTETYPE, ATTRIBUTENAME, ARIA_DATATYPE,
+ ARIA_VALUEMIN, BASEFREQUENCY, COLUMNSPACING, COLOR_PROFILE,
+ CLIPPATHUNITS, DEFINITIONURL, GRADIENTUNITS, FLOOD_OPACITY,
+ ONAFTERUPDATE, ONERRORUPDATE, ONBEFOREPASTE, ONLOSECAPTURE,
+ ONCONTEXTMENU, ONSELECTSTART, ONBEFOREPRINT, MOVABLELIMITS,
+ LINETHICKNESS, UNICODE_RANGE, THINMATHSPACE, VERT_ORIGIN_X,
+ VERT_ORIGIN_Y, V_IDEOGRAPHIC, PRESERVEALPHA, SCRIPTMINSIZE,
+ SPECIFICATION, XLINK_ACTUATE, XLINK_ARCROLE, ACCEPT_CHARSET,
+ ALIGNMENTSCOPE, ARIA_MULTILINE, BASELINE_SHIFT, HORIZ_ORIGIN_X,
+ HORIZ_ORIGIN_Y, ONBEFOREUPDATE, ONFILTERCHANGE, ONROWSINSERTED,
+ ONBEFOREUNLOAD, MATHBACKGROUND, LETTER_SPACING, LIGHTING_COLOR,
+ THICKMATHSPACE, TEXT_RENDERING, V_MATHEMATICAL, POINTER_EVENTS,
+ PRIMITIVEUNITS, SYSTEMLANGUAGE, STROKE_LINECAP, SUBSCRIPTSHIFT,
+ STROKE_OPACITY, ARIA_DROPEFFECT, ARIA_LABELLEDBY, ARIA_TEMPLATEID,
+ COLOR_RENDERING, CONTENTEDITABLE, DIFFUSECONSTANT, ONDATAAVAILABLE,
+ ONCONTROLSELECT, IMAGE_RENDERING, MEDIUMMATHSPACE, TEXT_DECORATION,
+ SHAPE_RENDERING, STROKE_LINEJOIN, REPEAT_TEMPLATE,
+ ARIA_DESCRIBEDBY, CONTENTSTYLETYPE, FONT_SIZE_ADJUST,
+ KERNELUNITLENGTH, ONBEFOREACTIVATE, ONPROPERTYCHANGE,
+ ONDATASETCHANGED, MASKCONTENTUNITS, PATTERNTRANSFORM,
+ REQUIREDFEATURES, RENDERING_INTENT, SPECULAREXPONENT,
+ SPECULARCONSTANT, SUPERSCRIPTSHIFT, STROKE_DASHARRAY,
+ XCHANNELSELECTOR, YCHANNELSELECTOR, ARIA_AUTOCOMPLETE,
+ CONTENTSCRIPTTYPE, ENABLE_BACKGROUND, DOMINANT_BASELINE,
+ GRADIENTTRANSFORM, ONBEFORDEACTIVATE, ONDATASETCOMPLETE,
+ OVERLINE_POSITION, ONBEFOREEDITFOCUS, LIMITINGCONEANGLE,
+ VERYTHINMATHSPACE, STROKE_DASHOFFSET, STROKE_MITERLIMIT,
+ ALIGNMENT_BASELINE, ONREADYSTATECHANGE, OVERLINE_THICKNESS,
+ UNDERLINE_POSITION, VERYTHICKMATHSPACE, REQUIREDEXTENSIONS,
+ COLOR_INTERPOLATION, UNDERLINE_THICKNESS, PRESERVEASPECTRATIO,
+ PATTERNCONTENTUNITS, ARIA_MULTISELECTABLE, SCRIPTSIZEMULTIPLIER,
+ ARIA_ACTIVEDESCENDANT, VERYVERYTHINMATHSPACE,
+ VERYVERYTHICKMATHSPACE, STRIKETHROUGH_POSITION,
+ STRIKETHROUGH_THICKNESS, EXTERNALRESOURCESREQUIRED,
+ GLYPH_ORIENTATION_VERTICAL, COLOR_INTERPOLATION_FILTERS,
+ GLYPH_ORIENTATION_HORIZONTAL, };
+
+ private final static int[] ATTRIBUTE_HASHES = { 1153, 1383, 1601, 1793,
+ 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415,
+ 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839,
+ 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892,
+ 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402,
+ 3574260, 3670335, 3696933, 3721879, 135280021, 135346322,
+ 136317019, 136475749, 136548517, 136652214, 136884919, 136902418,
+ 136942992, 137292068, 139120259, 139785574, 142250603, 142314056,
+ 142331176, 142519584, 144752417, 145106895, 146147200, 146765926,
+ 148805544, 149655723, 149809441, 150018784, 150445028, 150923321,
+ 152528754, 152536216, 152647366, 152962785, 155219321, 155654904,
+ 157317483, 157350248, 157437941, 157447478, 157604838, 157685404,
+ 157894402, 158315188, 166078431, 169409980, 169700259, 169856932,
+ 170007032, 170409695, 170466488, 170513710, 170608367, 173028944,
+ 173896963, 176090625, 176129212, 179390001, 179489057, 179627464,
+ 179840468, 179849042, 180004216, 181779081, 183027151, 183645319,
+ 183698797, 185922012, 185997252, 188312483, 188675799, 190977533,
+ 190992569, 191006194, 191033518, 191038774, 191096249, 191166163,
+ 191194426, 191522106, 191568039, 200104642, 202506661, 202537381,
+ 202602917, 203070590, 203120766, 203389054, 203690071, 203971238,
+ 203986524, 209040857, 209125756, 212055489, 212322418, 212746849,
+ 213002877, 213055164, 213088023, 213259873, 213273386, 213435118,
+ 213437318, 213438231, 213493071, 213532268, 213542834, 213584431,
+ 213659891, 215285828, 215880731, 216112976, 216684637, 217369699,
+ 217565298, 217576549, 218186795, 219743185, 220082234, 221623802,
+ 221986406, 222283890, 223089542, 223138630, 223311265, 224547358,
+ 224587256, 224589550, 224655650, 224785518, 224810917, 224813302,
+ 225429618, 225432950, 225440869, 236107233, 236709921, 236838947,
+ 237117095, 237143271, 237172455, 237209953, 237354143, 237372743,
+ 237668065, 237703073, 237714273, 239743521, 240512803, 240522627,
+ 240560417, 240656513, 241015715, 241062755, 241065383, 243523041,
+ 245865199, 246261793, 246556195, 246774817, 246923491, 246928419,
+ 246981667, 247014847, 247058369, 247112833, 247118177, 247119137,
+ 247128739, 247316903, 249533729, 250235623, 250269543, 251083937,
+ 251402351, 252339047, 253260911, 253293679, 254844367, 255547879,
+ 256077281, 256345377, 258124199, 258354465, 258605063, 258744193,
+ 258845603, 258856961, 258926689, 269869248, 270174334, 270709417,
+ 270778994, 270781796, 271102503, 271478858, 271490090, 272870654,
+ 273335275, 273369140, 273924313, 274108530, 274116736, 276818662,
+ 277476156, 279156579, 279349675, 280108533, 280128712, 280132869,
+ 280162403, 280280292, 280413430, 280506130, 280677397, 280678580,
+ 280686710, 280689066, 282736758, 283110901, 283275116, 283823226,
+ 283890012, 284479340, 284606461, 286700477, 286798916, 291557706,
+ 291665349, 291804100, 292138018, 292166446, 292418738, 292451039,
+ 300298041, 300374839, 300597935, 303073389, 303083839, 303266673,
+ 303354997, 303430688, 303576261, 303724281, 303819694, 304242723,
+ 304382625, 306247792, 307227811, 307468786, 307724489, 309671175,
+ 310252031, 310358241, 310373094, 311015256, 313357609, 313683893,
+ 313701861, 313706996, 313707317, 313710350, 314027746, 314038181,
+ 314091299, 314205627, 314233813, 316741830, 316797986, 317486755,
+ 317794164, 318721061, 320076137, 322657125, 322887778, 323506876,
+ 323572412, 323605180, 323938869, 325060058, 325320188, 325398738,
+ 325541490, 325671619, 333868843, 336806130, 337212108, 337282686,
+ 337285434, 337585223, 338036037, 338298087, 338566051, 340943551,
+ 341190970, 342995704, 343352124, 343912673, 344585053, 346977248,
+ 347218098, 347262163, 347278576, 347438191, 347655959, 347684788,
+ 347726430, 347727772, 347776035, 347776629, 349500753, 350880161,
+ 350887073, 353384123, 355496998, 355906922, 355979793, 356545959,
+ 358637867, 358905016, 359164318, 359247286, 359350571, 359579447,
+ 365560330, 367399355, 367420285, 367510727, 368013212, 370234760,
+ 370353345, 370710317, 371074566, 371122285, 371194213, 371448425,
+ 371448430, 371545055, 371596922, 371758751, 371964792, 372151328,
+ 376550136, 376710172, 376795771, 376826271, 376906556, 380514830,
+ 380774774, 380775037, 381030322, 381136500, 381281631, 381282269,
+ 381285504, 381330595, 381331422, 381335911, 381336484, 383907298,
+ 383917408, 384595009, 384595013, 387799894, 387823201, 392581647,
+ 392584937, 392742684, 392906485, 393003349, 400644707, 400973830,
+ 404428547, 404432113, 404432865, 404469244, 404478897, 404694860,
+ 406887479, 408294949, 408789955, 410022510, 410467324, 410586448,
+ 410945965, 411845275, 414327152, 414327932, 414329781, 414346257,
+ 414346439, 414639928, 414835998, 414894517, 414986533, 417465377,
+ 417465381, 417492216, 418259232, 419310946, 420103495, 420242342,
+ 420380455, 420658662, 420717432, 423183880, 424539259, 425929170,
+ 425972964, 426050649, 426126450, 426142833, 426607922, 437289840,
+ 437347469, 437412335, 437423943, 437455540, 437462252, 437597991,
+ 437617485, 437986305, 437986507, 437986828, 437987072, 438015591,
+ 438034813, 438038966, 438179623, 438347971, 438483573, 438547062,
+ 438895551, 441592676, 442032555, 443548979, 447881379, 447881655,
+ 447881895, 447887844, 448416189, 448445746, 448449012, 450942191,
+ 452816744, 453668677, 454434495, 456610076, 456642844, 456738709,
+ 457544600, 459451897, 459680944, 468058810, 468083581, 470964084,
+ 471470955, 471567278, 472267822, 481177859, 481210627, 481435874,
+ 481455115, 481485378, 481490218, 485105638, 486005878, 486383494,
+ 487988916, 488103783, 490661867, 491574090, 491578272, 493041952,
+ 493441205, 493582844, 493716979, 504577572, 504740359, 505091638,
+ 505592418, 505656212, 509516275, 514998531, 515571132, 515594682,
+ 518712698, 521362273, 526592419, 526807354, 527348842, 538294791,
+ 539214049, 544689535, 545535009, 548544752, 548563346, 548595116,
+ 551679010, 558034099, 560329411, 560356209, 560671018, 560671152,
+ 560692590, 560845442, 569212097, 569474241, 572252718, 572768481,
+ 575326764, 576174758, 576190819, 582099184, 582099438, 582372519,
+ 582558889, 586552164, 591325418, 594231990, 594243961, 605711268,
+ 615672071, 616086845, 621792370, 624879850, 627432831, 640040548,
+ 654392808, 658675477, 659420283, 672891587, 694768102, 705890982,
+ 725543146, 759097578, 761686526, 795383908, 843809551, 878105336,
+ 908643300, 945213471, };
+
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/ElementName.java
@@ -0,0 +1,1513 @@
+/*
+ * Copyright (c) 2008 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+import java.util.Arrays;
+
+import nu.validator.htmlparser.annotation.Local;
+import nu.validator.htmlparser.annotation.NoLength;
+import nu.validator.htmlparser.annotation.Virtual;
+
+public final class ElementName
+// uncomment when regenerating self
+// implements Comparable<ElementName>
+{
+
+ public final static ElementName NULL_ELEMENT_NAME = new ElementName(null);
+
+ public final @Local String name;
+
+ public final @Local String camelCaseName;
+
+ public final int group;
+
+ public final boolean special;
+
+ public final boolean scoping;
+
+ public final boolean fosterParenting;
+
+ // [NOCPP[
+
+ public final boolean custom;
+
+ // ]NOCPP]
+
+ static ElementName elementNameByBuffer(char[] buf, int offset, int length) {
+ int hash = ElementName.bufToHash(buf, length);
+ int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash);
+ if (index < 0) {
+ return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length));
+ } else {
+ ElementName rv = ElementName.ELEMENT_NAMES[index];
+ @Local String name = rv.name;
+ if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
+ return new ElementName(Portability.newLocalNameFromBuffer(buf,
+ offset, length));
+ }
+ return rv;
+ }
+ }
+
+ /**
+ * This method has to return a unique integer for each well-known
+ * lower-cased element name.
+ *
+ * @param buf
+ * @param len
+ * @return
+ */
+ private static int bufToHash(char[] buf, int len) {
+ int hash = len;
+ hash <<= 5;
+ hash += buf[0] - 0x60;
+ int j = len;
+ for (int i = 0; i < 4 && j > 0; i++) {
+ j--;
+ hash <<= 5;
+ hash += buf[j] - 0x60;
+ }
+ return hash;
+ }
+
+ private ElementName(@Local String name, @Local String camelCaseName,
+ int group, boolean special, boolean scoping, boolean fosterParenting) {
+ this.name = name;
+ this.camelCaseName = camelCaseName;
+ this.group = group;
+ this.special = special;
+ this.scoping = scoping;
+ this.fosterParenting = fosterParenting;
+ // [NOCPP[
+ this.custom = false;
+ // ]NOCPP]
+ }
+
+ protected ElementName(@Local String name) {
+ this.name = name;
+ this.camelCaseName = name;
+ this.group = TreeBuilder.OTHER;
+ this.special = false;
+ this.scoping = false;
+ this.fosterParenting = false;
+ // [NOCPP[
+ this.custom = true;
+ // ]NOCPP]
+ }
+
+ @Virtual void release() {
+ // No-op in Java.
+ // Implement as delete this in subclass.
+ // Be sure to release the local name
+ }
+
+ @SuppressWarnings("unused") private void destructor() {
+ Portability.releaseLocal(name); // this must be a no-op for static locals
+ // for non-static cases the camel case contains the same pointer as a weak reference.
+ }
+
+ // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
+
+// /**
+// * @see java.lang.Object#toString()
+// */
+// @Override public String toString() {
+// return "(\"" + name + "\", \"" + camelCaseName + "\", TreeBuilder."
+// + treeBuilderGroupToName() + ", "
+// + (special ? "true" : "false") + ", "
+// + (scoping ? "true" : "false") + ", "
+// + (fosterParenting ? "true" : "false") + ")";
+// }
+//
+// private String constName() {
+// char[] buf = new char[name.length()];
+// for (int i = 0; i < name.length(); i++) {
+// char c = name.charAt(i);
+// if (c == '-') {
+// buf[i] = '_';
+// } else if (c >= '0' && c <= '9') {
+// buf[i] = c;
+// } else {
+// buf[i] = (char) (c - 0x20);
+// }
+// }
+// return new String(buf);
+// }
+//
+// private int hash() {
+// return bufToHash(name.toCharArray(), name.length());
+// }
+//
+// public int compareTo(ElementName other) {
+// int thisHash = this.hash();
+// int otherHash = other.hash();
+// if (thisHash < otherHash) {
+// return -1;
+// } else if (thisHash == otherHash) {
+// return 0;
+// } else {
+// return 1;
+// }
+// }
+//
+// private String treeBuilderGroupToName() {
+// switch (group) {
+// case TreeBuilder.OTHER:
+// return "OTHER";
+// case TreeBuilder.A:
+// return "A";
+// case TreeBuilder.BASE:
+// return "BASE";
+// case TreeBuilder.BODY:
+// return "BODY";
+// case TreeBuilder.BR:
+// return "BR";
+// case TreeBuilder.BUTTON:
+// return "BUTTON";
+// case TreeBuilder.CAPTION:
+// return "CAPTION";
+// case TreeBuilder.COL:
+// return "COL";
+// case TreeBuilder.COLGROUP:
+// return "COLGROUP";
+// case TreeBuilder.FORM:
+// return "FORM";
+// case TreeBuilder.FRAME:
+// return "FRAME";
+// case TreeBuilder.FRAMESET:
+// return "FRAMESET";
+// case TreeBuilder.IMAGE:
+// return "IMAGE";
+// case TreeBuilder.INPUT:
+// return "INPUT";
+// case TreeBuilder.ISINDEX:
+// return "ISINDEX";
+// case TreeBuilder.LI:
+// return "LI";
+// case TreeBuilder.LINK:
+// return "LINK";
+// case TreeBuilder.MATH:
+// return "MATH";
+// case TreeBuilder.META:
+// return "META";
+// case TreeBuilder.SVG:
+// return "SVG";
+// case TreeBuilder.HEAD:
+// return "HEAD";
+// case TreeBuilder.HR:
+// return "HR";
+// case TreeBuilder.HTML:
+// return "HTML";
+// case TreeBuilder.NOBR:
+// return "NOBR";
+// case TreeBuilder.NOFRAMES:
+// return "NOFRAMES";
+// case TreeBuilder.NOSCRIPT:
+// return "NOSCRIPT";
+// case TreeBuilder.OPTGROUP:
+// return "OPTGROUP";
+// case TreeBuilder.OPTION:
+// return "OPTION";
+// case TreeBuilder.P:
+// return "P";
+// case TreeBuilder.PLAINTEXT:
+// return "PLAINTEXT";
+// case TreeBuilder.SCRIPT:
+// return "SCRIPT";
+// case TreeBuilder.SELECT:
+// return "SELECT";
+// case TreeBuilder.STYLE:
+// return "STYLE";
+// case TreeBuilder.TABLE:
+// return "TABLE";
+// case TreeBuilder.TEXTAREA:
+// return "TEXTAREA";
+// case TreeBuilder.TITLE:
+// return "TITLE";
+// case TreeBuilder.TR:
+// return "TR";
+// case TreeBuilder.XMP:
+// return "XMP";
+// case TreeBuilder.TBODY_OR_THEAD_OR_TFOOT:
+// return "TBODY_OR_THEAD_OR_TFOOT";
+// case TreeBuilder.TD_OR_TH:
+// return "TD_OR_TH";
+// case TreeBuilder.DD_OR_DT:
+// return "DD_OR_DT";
+// case TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6:
+// return "H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6";
+// case TreeBuilder.OBJECT_OR_MARQUEE_OR_APPLET:
+// return "OBJECT_OR_MARQUEE_OR_APPLET";
+// case TreeBuilder.PRE_OR_LISTING:
+// return "PRE_OR_LISTING";
+// case TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U:
+// return "B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U";
+// case TreeBuilder.UL_OR_OL_OR_DL:
+// return "UL_OR_OL_OR_DL";
+// case TreeBuilder.IFRAME:
+// return "IFRAME";
+// case TreeBuilder.NOEMBED:
+// return "NOEMBED";
+// case TreeBuilder.EMBED_OR_IMG:
+// return "EMBED_OR_IMG";
+// case TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR:
+// return "AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR";
+// case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU:
+// return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU";
+// case TreeBuilder.FIELDSET_OR_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION:
+// return "FIELDSET_OR_ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION";
+// case TreeBuilder.CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR:
+// return "CODE_OR_RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR";
+// case TreeBuilder.RT_OR_RP:
+// return "RT_OR_RP";
+// case TreeBuilder.COMMAND_OR_EVENT_SOURCE:
+// return "COMMAND_OR_EVENT_SOURCE";
+// case TreeBuilder.PARAM_OR_SOURCE:
+// return "PARAM_OR_SOURCE";
+// case TreeBuilder.MGLYPH_OR_MALIGNMARK:
+// return "MGLYPH_OR_MALIGNMARK";
+// case TreeBuilder.MI_MO_MN_MS_MTEXT:
+// return "MI_MO_MN_MS_MTEXT";
+// case TreeBuilder.ANNOTATION_XML:
+// return "ANNOTATION_XML";
+// case TreeBuilder.FOREIGNOBJECT_OR_DESC:
+// return "FOREIGNOBJECT_OR_DESC";
+// }
+// return null;
+// }
+//
+// /**
+// * Regenerate self
+// *
+// * @param args
+// */
+// public static void main(String[] args) {
+// Arrays.sort(ELEMENT_NAMES);
+// for (int i = 1; i < ELEMENT_NAMES.length; i++) {
+// if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) {
+// System.err.println("Hash collision: " + ELEMENT_NAMES[i].name
+// + ", " + ELEMENT_NAMES[i - 1].name);
+// return;
+// }
+// }
+// for (int i = 0; i < ELEMENT_NAMES.length; i++) {
+// ElementName el = ELEMENT_NAMES[i];
+// System.out.println("public static final ElementName "
+// + el.constName() + " = new ElementName" + el.toString()
+// + ";");
+// }
+// System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {");
+// for (int i = 0; i < ELEMENT_NAMES.length; i++) {
+// ElementName el = ELEMENT_NAMES[i];
+// System.out.println(el.constName() + ",");
+// }
+// System.out.println("};");
+// System.out.println("private final static int[] ELEMENT_HASHES = {");
+// for (int i = 0; i < ELEMENT_NAMES.length; i++) {
+// ElementName el = ELEMENT_NAMES[i];
+// System.out.println(Integer.toString(el.hash()) + ",");
+// }
+// System.out.println("};");
+// }
+
+ // START GENERATED CODE
+ public static final ElementName A = new ElementName("a", "a", TreeBuilder.A, false, false, false);
+ public static final ElementName B = new ElementName("b", "b", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName I = new ElementName("i", "i", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName P = new ElementName("p", "p", TreeBuilder.P, true, false, false);
+ public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName S = new ElementName("s", "s", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName U = new ElementName("u", "u", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR, true, false, false);
+ public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT, true, false, false);
+ public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL, true, false, false);
+ public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT, true, false, false);
+ public static final ElementName EM = new ElementName("em", "em", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
+ public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
+ public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
+ public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
+ public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
+ public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6, true, false, false);
+ public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR, true, false, false);
+ public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI, true, false, false);
+ public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
+ public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
+ public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
+ public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
+ public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL, true, false, false);
+ public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP, false, false, false);
+ public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP, false, false, false);
+ public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH, false, true, false);
+ public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH, false, true, false);
+ public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR, true, false, true);
+ public static final ElementName TT = new ElementName("tt", "tt", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL, true, false, false);
+ public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL, true, false, false);
+ public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
+ public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.EMBED_OR_IMG, true, false, false);
+ public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING, true, false, false);
+ public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
+ public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG, false, false, false);
+ public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
+ public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
+ public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
+ public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP, false, false, false);
+ public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
+ public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE, true, false, false);
+ public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY, true, false, false);
+ public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CODE = new ElementName("code", "code", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC, false, false, false);
+ public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM, true, false, false);
+ public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT, false, false, false);
+ public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD, true, false, false);
+ public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML, false, true, false);
+ public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK, true, false, false);
+ public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META, true, false, false);
+ public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH, false, false, false);
+ public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
+ public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR, false, false, false);
+ public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
+ public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR, false, false, false);
+ public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED_OR_IMG, true, false, false);
+ public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME, true, false, false);
+ public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE, true, false, false);
+ public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT, true, false, false);
+ public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OUTPUT_OR_LABEL, false, false, false);
+ public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT, false, false, false);
+ public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE, true, false, false);
+ public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE, true, false, false);
+ public static final ElementName SMALL = new ElementName("small", "small", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT, true, false, true);
+ public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE, false, true, true);
+ public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE, true, false, false);
+ public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT, true, false, true);
+ public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT, true, false, true);
+ public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET, false, true, false);
+ public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON, false, true, false);
+ public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
+ public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DIALOG = new ElementName("dialog", "dialog", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME, true, false, false);
+ public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN, true, false, false);
+ public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK, false, false, false);
+ public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION, true, false, false);
+ public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT, false, true, false);
+ public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT_OR_LABEL, false, false, false);
+ public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE, false, false, false);
+ public static final ElementName STRIKE = new ElementName("strike", "strike", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U, false, false, false);
+ public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SPACER = new ElementName("spacer", "spacer", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
+ public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT, true, false, false);
+ public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT, true, false, false);
+ public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
+ public static final ElementName COMMAND = new ElementName("command", "command", TreeBuilder.COMMAND_OR_EVENT_SOURCE, true, false, false);
+ public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION, false, true, false);
+ public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX, true, false, false);
+ public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING, true, false, false);
+ public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET, false, true, false);
+ public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED, true, false, false);
+ public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.AREA_OR_BASEFONT_OR_BGSOUND_OR_SPACER_OR_WBR, true, false, false);
+ public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP, true, false, false);
+ public static final ElementName DATAGRID = new ElementName("datagrid", "datagrid", TreeBuilder.ADDRESS_OR_DIR_OR_ARTICLE_OR_ASIDE_OR_DATAGRID_OR_DETAILS_OR_DIALOG_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_NAV_OR_SECTION, true, false, false);
+ public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET, true, false, false);
+ public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET, true, false, false);
+ public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES, true, false, false);
+ public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT, true, false, false);
+ public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP, true, false, false);
+ public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA, true, false, false);
+ public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT, true, false, false);
+ public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU, true, false, false);
+ public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK, false, false, false);
+ public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName EVENTSOURCE = new ElementName("eventsource", "eventsource", TreeBuilder.COMMAND_OR_EVENT_SOURCE, true, false, false);
+ public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC, false, false, false);
+ public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML, false, false, false);
+ public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER, false, false, false);
+ public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER, false, false, false);
+ private final static @NoLength ElementName[] ELEMENT_NAMES = {
+ A,
+ B,
+ G,
+ I,
+ P,
+ Q,
+ S,
+ U,
+ BR,
+ CI,
+ CN,
+ DD,
+ DL,
+ DT,
+ EM,
+ EQ,
+ FN,
+ H1,
+ H2,
+ H3,
+ H4,
+ H5,
+ H6,
+ GT,
+ HR,
+ IN,
+ LI,
+ LN,
+ LT,
+ MI,
+ MN,
+ MO,
+ MS,
+ OL,
+ OR,
+ PI,
+ RP,
+ RT,
+ TD,
+ TH,
+ TR,
+ TT,
+ UL,
+ AND,
+ ARG,
+ ABS,
+ BIG,
+ BDO,
+ CSC,
+ COL,
+ COS,
+ COT,
+ DEL,
+ DFN,
+ DIR,
+ DIV,
+ EXP,
+ GCD,
+ GEQ,
+ IMG,
+ INS,
+ INT,
+ KBD,
+ LOG,
+ LCM,
+ LEQ,
+ MTD,
+ MIN,
+ MAP,
+ MTR,
+ MAX,
+ NEQ,
+ NOT,
+ NAV,
+ PRE,
+ REM,
+ SUB,
+ SEC,
+ SVG,
+ SUM,
+ SIN,
+ SEP,
+ SUP,
+ SET,
+ TAN,
+ USE,
+ VAR,
+ WBR,
+ XMP,
+ XOR,
+ AREA,
+ ABBR,
+ BASE,
+ BVAR,
+ BODY,
+ CARD,
+ CODE,
+ CITE,
+ CSCH,
+ COSH,
+ COTH,
+ CURL,
+ DESC,
+ DIFF,
+ DEFS,
+ FORM,
+ FONT,
+ GRAD,
+ HEAD,
+ HTML,
+ LINE,
+ LINK,
+ LIST,
+ META,
+ MSUB,
+ MODE,
+ MATH,
+ MARK,
+ MASK,
+ MEAN,
+ MSUP,
+ MENU,
+ MROW,
+ NONE,
+ NOBR,
+ NEST,
+ PATH,
+ PLUS,
+ RULE,
+ REAL,
+ RELN,
+ RECT,
+ ROOT,
+ RUBY,
+ SECH,
+ SINH,
+ SPAN,
+ SAMP,
+ STOP,
+ SDEV,
+ TIME,
+ TRUE,
+ TREF,
+ TANH,
+ TEXT,
+ VIEW,
+ ASIDE,
+ AUDIO,
+ APPLY,
+ EMBED,
+ FRAME,
+ FALSE,
+ FLOOR,
+ GLYPH,
+ HKERN,
+ IMAGE,
+ IDENT,
+ INPUT,
+ LABEL,
+ LIMIT,
+ MFRAC,
+ MPATH,
+ METER,
+ MOVER,
+ MINUS,
+ MROOT,
+ MSQRT,
+ MTEXT,
+ NOTIN,
+ PIECE,
+ PARAM,
+ POWER,
+ REALS,
+ STYLE,
+ SMALL,
+ THEAD,
+ TABLE,
+ TITLE,
+ TSPAN,
+ TIMES,
+ TFOOT,
+ TBODY,
+ UNION,
+ VKERN,
+ VIDEO,
+ ARCSEC,
+ ARCCSC,
+ ARCTAN,
+ ARCSIN,
+ ARCCOS,
+ APPLET,
+ ARCCOT,
+ APPROX,
+ BUTTON,
+ CIRCLE,
+ CENTER,
+ CURSOR,
+ CANVAS,
+ DIVIDE,
+ DEGREE,
+ DIALOG,
+ DOMAIN,
+ EXISTS,
+ FETILE,
+ FIGURE,
+ FORALL,
+ FILTER,
+ FOOTER,
+ HEADER,
+ IFRAME,
+ KEYGEN,
+ LAMBDA,
+ LEGEND,
+ MSPACE,
+ MTABLE,
+ MSTYLE,
+ MGLYPH,
+ MEDIAN,
+ MUNDER,
+ MARKER,
+ MERROR,
+ MOMENT,
+ MATRIX,
+ OPTION,
+ OBJECT,
+ OUTPUT,
+ PRIMES,
+ SOURCE,
+ STRIKE,
+ STRONG,
+ SWITCH,
+ SYMBOL,
+ SPACER,
+ SELECT,
+ SUBSET,
+ SCRIPT,
+ TBREAK,
+ VECTOR,
+ ARTICLE,
+ ANIMATE,
+ ARCSECH,
+ ARCCSCH,
+ ARCTANH,
+ ARCSINH,
+ ARCCOSH,
+ ARCCOTH,
+ ACRONYM,
+ ADDRESS,
+ BGSOUND,
+ COMMAND,
+ COMPOSE,
+ CEILING,
+ CSYMBOL,
+ CAPTION,
+ DISCARD,
+ DECLARE,
+ DETAILS,
+ ELLIPSE,
+ FEFUNCA,
+ FEFUNCB,
+ FEBLEND,
+ FEFLOOD,
+ FEIMAGE,
+ FEMERGE,
+ FEFUNCG,
+ FEFUNCR,
+ HANDLER,
+ INVERSE,
+ IMPLIES,
+ ISINDEX,
+ LOGBASE,
+ LISTING,
+ MFENCED,
+ MPADDED,
+ MARQUEE,
+ MACTION,
+ MSUBSUP,
+ NOEMBED,
+ POLYGON,
+ PATTERN,
+ PRODUCT,
+ SETDIFF,
+ SECTION,
+ TENDSTO,
+ UPLIMIT,
+ ALTGLYPH,
+ BASEFONT,
+ CLIPPATH,
+ CODOMAIN,
+ COLGROUP,
+ DATAGRID,
+ EMPTYSET,
+ FACTOROF,
+ FIELDSET,
+ FRAMESET,
+ FEOFFSET,
+ GLYPHREF,
+ INTERVAL,
+ INTEGERS,
+ INFINITY,
+ LISTENER,
+ LOWLIMIT,
+ METADATA,
+ MENCLOSE,
+ MPHANTOM,
+ NOFRAMES,
+ NOSCRIPT,
+ OPTGROUP,
+ POLYLINE,
+ PREFETCH,
+ PROGRESS,
+ PRSUBSET,
+ QUOTIENT,
+ SELECTOR,
+ TEXTAREA,
+ TEXTPATH,
+ VARIANCE,
+ ANIMATION,
+ CONJUGATE,
+ CONDITION,
+ COMPLEXES,
+ FONT_FACE,
+ FACTORIAL,
+ INTERSECT,
+ IMAGINARY,
+ LAPLACIAN,
+ MATRIXROW,
+ NOTSUBSET,
+ OTHERWISE,
+ PIECEWISE,
+ PLAINTEXT,
+ RATIONALS,
+ SEMANTICS,
+ TRANSPOSE,
+ ANNOTATION,
+ BLOCKQUOTE,
+ DIVERGENCE,
+ EULERGAMMA,
+ EQUIVALENT,
+ IMAGINARYI,
+ MALIGNMARK,
+ MUNDEROVER,
+ MLABELEDTR,
+ NOTANUMBER,
+ SOLIDCOLOR,
+ ALTGLYPHDEF,
+ DETERMINANT,
+ EVENTSOURCE,
+ FEMERGENODE,
+ FECOMPOSITE,
+ FESPOTLIGHT,
+ MALIGNGROUP,
+ MPRESCRIPTS,
+ MOMENTABOUT,
+ NOTPRSUBSET,
+ PARTIALDIFF,
+ ALTGLYPHITEM,
+ ANIMATECOLOR,
+ DATATEMPLATE,
+ EXPONENTIALE,
+ FETURBULENCE,
+ FEPOINTLIGHT,
+ FEMORPHOLOGY,
+ OUTERPRODUCT,
+ ANIMATEMOTION,
+ COLOR_PROFILE,
+ FONT_FACE_SRC,
+ FONT_FACE_URI,
+ FOREIGNOBJECT,
+ FECOLORMATRIX,
+ MISSING_GLYPH,
+ MMULTISCRIPTS,
+ SCALARPRODUCT,
+ VECTORPRODUCT,
+ ANNOTATION_XML,
+ DEFINITION_SRC,
+ FONT_FACE_NAME,
+ FEGAUSSIANBLUR,
+ FEDISTANTLIGHT,
+ LINEARGRADIENT,
+ NATURALNUMBERS,
+ RADIALGRADIENT,
+ ANIMATETRANSFORM,
+ CARTESIANPRODUCT,
+ FONT_FACE_FORMAT,
+ FECONVOLVEMATRIX,
+ FEDIFFUSELIGHTING,
+ FEDISPLACEMENTMAP,
+ FESPECULARLIGHTING,
+ DOMAINOFAPPLICATION,
+ FECOMPONENTTRANSFER,
+ };
+ private final static int[] ELEMENT_HASHES = {
+ 1057,
+ 1090,
+ 1255,
+ 1321,
+ 1552,
+ 1585,
+ 1651,
+ 1717,
+ 68162,
+ 68899,
+ 69059,
+ 69764,
+ 70020,
+ 70276,
+ 71077,
+ 71205,
+ 72134,
+ 72232,
+ 72264,
+ 72296,
+ 72328,
+ 72360,
+ 72392,
+ 73351,
+ 74312,
+ 75209,
+ 78124,
+ 78284,
+ 78476,
+ 79149,
+ 79309,
+ 79341,
+ 79469,
+ 81295,
+ 81487,
+ 82224,
+ 84498,
+ 84626,
+ 86164,
+ 86292,
+ 86612,
+ 86676,
+ 87445,
+ 3183041,
+ 3186241,
+ 3198017,
+ 3218722,
+ 3226754,
+ 3247715,
+ 3256803,
+ 3263971,
+ 3264995,
+ 3289252,
+ 3291332,
+ 3295524,
+ 3299620,
+ 3326725,
+ 3379303,
+ 3392679,
+ 3448233,
+ 3460553,
+ 3461577,
+ 3510347,
+ 3546604,
+ 3552364,
+ 3556524,
+ 3576461,
+ 3586349,
+ 3588141,
+ 3590797,
+ 3596333,
+ 3622062,
+ 3625454,
+ 3627054,
+ 3675728,
+ 3749042,
+ 3771059,
+ 3771571,
+ 3776211,
+ 3782323,
+ 3782963,
+ 3784883,
+ 3785395,
+ 3788979,
+ 3815476,
+ 3839605,
+ 3885110,
+ 3917911,
+ 3948984,
+ 3951096,
+ 135304769,
+ 135858241,
+ 136498210,
+ 136906434,
+ 137138658,
+ 137512995,
+ 137531875,
+ 137548067,
+ 137629283,
+ 137645539,
+ 137646563,
+ 137775779,
+ 138529956,
+ 138615076,
+ 139040932,
+ 140954086,
+ 141179366,
+ 141690439,
+ 142738600,
+ 143013512,
+ 146979116,
+ 147175724,
+ 147475756,
+ 147902637,
+ 147936877,
+ 148017645,
+ 148131885,
+ 148228141,
+ 148229165,
+ 148309165,
+ 148395629,
+ 148551853,
+ 148618829,
+ 149076462,
+ 149490158,
+ 149572782,
+ 151277616,
+ 151639440,
+ 153268914,
+ 153486514,
+ 153563314,
+ 153750706,
+ 153763314,
+ 153914034,
+ 154406067,
+ 154417459,
+ 154600979,
+ 154678323,
+ 154680979,
+ 154866835,
+ 155366708,
+ 155375188,
+ 155391572,
+ 155465780,
+ 155869364,
+ 158045494,
+ 168988979,
+ 169321621,
+ 169652752,
+ 173151309,
+ 174240818,
+ 174247297,
+ 174669292,
+ 175391532,
+ 176638123,
+ 177380397,
+ 177879204,
+ 177886734,
+ 180753473,
+ 181020073,
+ 181503558,
+ 181686320,
+ 181999237,
+ 181999311,
+ 182048201,
+ 182074866,
+ 182078003,
+ 182083764,
+ 182920847,
+ 184716457,
+ 184976961,
+ 185145071,
+ 187281445,
+ 187872052,
+ 188100653,
+ 188875944,
+ 188919873,
+ 188920457,
+ 189203987,
+ 189371817,
+ 189414886,
+ 189567458,
+ 190266670,
+ 191318187,
+ 191337609,
+ 202479203,
+ 202493027,
+ 202835587,
+ 202843747,
+ 203013219,
+ 203036048,
+ 203045987,
+ 203177552,
+ 203898516,
+ 204648562,
+ 205067918,
+ 205078130,
+ 205096654,
+ 205689142,
+ 205690439,
+ 205766017,
+ 205988909,
+ 207213161,
+ 207794484,
+ 207800999,
+ 208023602,
+ 208213644,
+ 208213647,
+ 210310273,
+ 210940978,
+ 213325049,
+ 213946445,
+ 214055079,
+ 215125040,
+ 215134273,
+ 215135028,
+ 215237420,
+ 215418148,
+ 215553166,
+ 215553394,
+ 215563858,
+ 215627949,
+ 215754324,
+ 217529652,
+ 217713834,
+ 217732628,
+ 218731945,
+ 221417045,
+ 221424946,
+ 221493746,
+ 221515401,
+ 221658189,
+ 221844577,
+ 221908140,
+ 221910626,
+ 221921586,
+ 222659762,
+ 225001091,
+ 236105833,
+ 236113965,
+ 236194995,
+ 236195427,
+ 236206132,
+ 236206387,
+ 236211683,
+ 236212707,
+ 236381647,
+ 236571826,
+ 237124271,
+ 238172205,
+ 238210544,
+ 238270764,
+ 238435405,
+ 238501172,
+ 239224867,
+ 239257644,
+ 239710497,
+ 240307721,
+ 241208789,
+ 241241557,
+ 241318060,
+ 241319404,
+ 241343533,
+ 241344069,
+ 241405397,
+ 241765845,
+ 243864964,
+ 244502085,
+ 244946220,
+ 245109902,
+ 247647266,
+ 247707956,
+ 248648814,
+ 248648836,
+ 248682161,
+ 248986932,
+ 249058914,
+ 249697357,
+ 252132601,
+ 252135604,
+ 252317348,
+ 255007012,
+ 255278388,
+ 256365156,
+ 257566121,
+ 269763372,
+ 271202790,
+ 271863856,
+ 272049197,
+ 272127474,
+ 272770631,
+ 274339449,
+ 274939471,
+ 275388004,
+ 275388005,
+ 275388006,
+ 275977800,
+ 278267602,
+ 278513831,
+ 278712622,
+ 281613765,
+ 281683369,
+ 282120228,
+ 282250732,
+ 282508942,
+ 283743649,
+ 283787570,
+ 284710386,
+ 285391148,
+ 285478533,
+ 285854898,
+ 285873762,
+ 286931113,
+ 288964227,
+ 289445441,
+ 289689648,
+ 291671489,
+ 303512884,
+ 305319975,
+ 305610036,
+ 305764101,
+ 308448294,
+ 308675890,
+ 312085683,
+ 312264750,
+ 315032867,
+ 316391000,
+ 317331042,
+ 317902135,
+ 318950711,
+ 319447220,
+ 321499182,
+ 322538804,
+ 323145200,
+ 337067316,
+ 337826293,
+ 339905989,
+ 340833697,
+ 341457068,
+ 345302593,
+ 349554733,
+ 349771471,
+ 349786245,
+ 350819405,
+ 356072847,
+ 370349192,
+ 373962798,
+ 374509141,
+ 375558638,
+ 375574835,
+ 376053993,
+ 383276530,
+ 383373833,
+ 383407586,
+ 384439906,
+ 386079012,
+ 404133513,
+ 404307343,
+ 407031852,
+ 408072233,
+ 409112005,
+ 409608425,
+ 409771500,
+ 419040932,
+ 437730612,
+ 439529766,
+ 442616365,
+ 442813037,
+ 443157674,
+ 443295316,
+ 450118444,
+ 450482697,
+ 456789668,
+ 459935396,
+ 471217869,
+ 474073645,
+ 476230702,
+ 476665218,
+ 476717289,
+ 483014825,
+ 485083298,
+ 489306281,
+ 538364390,
+ 540675748,
+ 543819186,
+ 543958612,
+ 576960820,
+ 577242548,
+ 610515252,
+ 642202932,
+ 644420819,
+ };
+
+
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/HtmlAttributes.java
@@ -0,0 +1,484 @@
+/*
+ * Copyright (c) 2007 Henri Sivonen
+ * Copyright (c) 2008-2009 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+import nu.validator.htmlparser.annotation.IdType;
+import nu.validator.htmlparser.annotation.Local;
+import nu.validator.htmlparser.annotation.NsUri;
+import nu.validator.htmlparser.annotation.Prefix;
+import nu.validator.htmlparser.annotation.QName;
+import nu.validator.htmlparser.common.XmlViolationPolicy;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Be careful with this class. QName is the name in from HTML tokenization.
+ * Otherwise, please refer to the interface doc.
+ *
+ * @version $Id: AttributesImpl.java 206 2008-03-20 14:09:29Z hsivonen $
+ * @author hsivonen
+ */
+public final class HtmlAttributes implements Attributes {
+
+ // [NOCPP[
+
+ private static final AttributeName[] EMPTY_ATTRIBUTENAMES = new AttributeName[0];
+
+ private static final String[] EMPTY_STRINGS = new String[0];
+
+ // ]NOCPP]
+
+ public static final HtmlAttributes EMPTY_ATTRIBUTES = new HtmlAttributes(
+ AttributeName.HTML);
+
+ private int mode;
+
+ private int length;
+
+ private AttributeName[] names;
+
+ private String[] values; // XXX perhaps make this @NoLength?
+
+ // [NOCPP[
+
+ private String idValue;
+
+ private int xmlnsLength;
+
+ private AttributeName[] xmlnsNames;
+
+ private String[] xmlnsValues;
+
+ // ]NOCPP]
+
+ public HtmlAttributes(int mode) {
+ this.mode = mode;
+ this.length = 0;
+ this.names = new AttributeName[5]; // covers 98.3% of elements
+ // according to
+ // Hixie
+ this.values = new String[5];
+
+ // [NOCPP[
+
+ this.idValue = null;
+
+ this.xmlnsLength = 0;
+
+ this.xmlnsNames = HtmlAttributes.EMPTY_ATTRIBUTENAMES;
+
+ this.xmlnsValues = HtmlAttributes.EMPTY_STRINGS;
+
+ // ]NOCPP]
+ }
+ /*
+ public HtmlAttributes(HtmlAttributes other) {
+ this.mode = other.mode;
+ this.length = other.length;
+ this.names = new AttributeName[other.length];
+ this.values = new String[other.length];
+ // [NOCPP[
+ this.idValue = other.idValue;
+ this.xmlnsLength = other.xmlnsLength;
+ this.xmlnsNames = new AttributeName[other.xmlnsLength];
+ this.xmlnsValues = new String[other.xmlnsLength];
+ // ]NOCPP]
+ }
+ */
+
+ void destructor() {
+ clear(0);
+ Portability.releaseArray(names);
+ Portability.releaseArray(values);
+ }
+
+ /**
+ * Only use with a static argument
+ *
+ * @param name
+ * @return
+ */
+ public int getIndex(AttributeName name) {
+ for (int i = 0; i < length; i++) {
+ if (names[i] == name) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ // [NOCPP[
+
+ public int getIndex(String qName) {
+ for (int i = 0; i < length; i++) {
+ if (names[i].getQName(mode).equals(qName)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ public int getIndex(String uri, String localName) {
+ for (int i = 0; i < length; i++) {
+ if (names[i].getLocal(mode).equals(localName)
+ && names[i].getUri(mode).equals(uri)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ public @IdType String getType(String qName) {
+ int index = getIndex(qName);
+ if (index == -1) {
+ return null;
+ } else {
+ return getType(index);
+ }
+ }
+
+ public @IdType String getType(String uri, String localName) {
+ int index = getIndex(uri, localName);
+ if (index == -1) {
+ return null;
+ } else {
+ return getType(index);
+ }
+ }
+
+ public String getValue(String qName) {
+ int index = getIndex(qName);
+ if (index == -1) {
+ return null;
+ } else {
+ return getValue(index);
+ }
+ }
+
+ public String getValue(String uri, String localName) {
+ int index = getIndex(uri, localName);
+ if (index == -1) {
+ return null;
+ } else {
+ return getValue(index);
+ }
+ }
+
+ // ]NOCPP]
+
+ public int getLength() {
+ return length;
+ }
+
+ public @Local String getLocalName(int index) {
+ if (index < length && index >= 0) {
+ return names[index].getLocal(mode);
+ } else {
+ return null;
+ }
+ }
+
+ // [NOCPP[
+
+ public @QName String getQName(int index) {
+ if (index < length && index >= 0) {
+ return names[index].getQName(mode);
+ } else {
+ return null;
+ }
+ }
+
+ public @IdType String getType(int index) {
+ if (index < length && index >= 0) {
+ return names[index].getType(mode);
+ } else {
+ return null;
+ }
+ }
+
+ // ]NOCPP]
+
+ public AttributeName getAttributeName(int index) {
+ if (index < length && index >= 0) {
+ return names[index];
+ } else {
+ return null;
+ }
+ }
+
+ public @NsUri String getURI(int index) {
+ if (index < length && index >= 0) {
+ return names[index].getUri(mode);
+ } else {
+ return null;
+ }
+ }
+
+ public @Prefix String getPrefix(int index) {
+ if (index < length && index >= 0) {
+ return names[index].getPrefix(mode);
+ } else {
+ return null;
+ }
+ }
+
+ public String getValue(int index) {
+ if (index < length && index >= 0) {
+ return values[index];
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Only use with static argument.
+ *
+ * @see org.xml.sax.Attributes#getValue(java.lang.String)
+ */
+ public String getValue(AttributeName name) {
+ int index = getIndex(name);
+ if (index == -1) {
+ return null;
+ } else {
+ return getValue(index);
+ }
+ }
+
+ // [NOCPP[
+
+ public String getId() {
+ return idValue;
+ }
+
+ public int getXmlnsLength() {
+ return xmlnsLength;
+ }
+
+ public @Local String getXmlnsLocalName(int index) {
+ if (index < xmlnsLength && index >= 0) {
+ return xmlnsNames[index].getLocal(mode);
+ } else {
+ return null;
+ }
+ }
+
+ public @NsUri String getXmlnsURI(int index) {
+ if (index < xmlnsLength && index >= 0) {
+ return xmlnsNames[index].getUri(mode);
+ } else {
+ return null;
+ }
+ }
+
+ public String getXmlnsValue(int index) {
+ if (index < xmlnsLength && index >= 0) {
+ return xmlnsValues[index];
+ } else {
+ return null;
+ }
+ }
+
+ public int getXmlnsIndex(AttributeName name) {
+ for (int i = 0; i < xmlnsLength; i++) {
+ if (xmlnsNames[i] == name) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ public String getXmlnsValue(AttributeName name) {
+ int index = getXmlnsIndex(name);
+ if (index == -1) {
+ return null;
+ } else {
+ return getXmlnsValue(index);
+ }
+ }
+
+ public AttributeName getXmlnsAttributeName(int index) {
+ if (index < xmlnsLength && index >= 0) {
+ return xmlnsNames[index];
+ } else {
+ return null;
+ }
+ }
+
+ // ]NOCPP]
+
+ void addAttribute(AttributeName name, String value
+ // [NOCPP[
+ , XmlViolationPolicy xmlnsPolicy
+ // ]NOCPP]
+ ) throws SAXException {
+ // [NOCPP[
+ if (name == AttributeName.ID) {
+ idValue = value;
+ }
+
+ if (name.isXmlns()) {
+ if (xmlnsNames.length == xmlnsLength) {
+ int newLen = xmlnsLength == 0 ? 2 : xmlnsLength << 1;
+ AttributeName[] newNames = new AttributeName[newLen];
+ System.arraycopy(xmlnsNames, 0, newNames, 0, xmlnsNames.length);
+ xmlnsNames = newNames;
+ String[] newValues = new String[newLen];
+ System.arraycopy(xmlnsValues, 0, newValues, 0, xmlnsValues.length);
+ xmlnsValues = newValues;
+ }
+ xmlnsNames[xmlnsLength] = name;
+ xmlnsValues[xmlnsLength] = value;
+ xmlnsLength++;
+ switch (xmlnsPolicy) {
+ case FATAL:
+ // this is ugly
+ throw new SAXException("Saw an xmlns attribute.");
+ case ALTER_INFOSET:
+ return;
+ case ALLOW:
+ // fall through
+ }
+ }
+
+ // ]NOCPP]
+
+ if (names.length == length) {
+ int newLen = length << 1; // The first growth covers virtually
+ // 100% of elements according to
+ // Hixie
+ AttributeName[] newNames = new AttributeName[newLen];
+ System.arraycopy(names, 0, newNames, 0, names.length);
+ Portability.releaseArray(names);
+ names = newNames;
+ String[] newValues = new String[newLen];
+ System.arraycopy(values, 0, newValues, 0, values.length);
+ Portability.releaseArray(values);
+ values = newValues;
+ }
+ names[length] = name;
+ values[length] = value;
+ length++;
+ }
+
+ void clear(int m) {
+ for (int i = 0; i < length; i++) {
+ names[i].release();
+ names[i] = null;
+ Portability.releaseString(values[i]);
+ values[i] = null;
+ }
+ length = 0;
+ mode = m;
+ // [NOCPP[
+ idValue = null;
+ for (int i = 0; i < xmlnsLength; i++) {
+ xmlnsNames[i] = null;
+ xmlnsValues[i] = null;
+ }
+ xmlnsLength = 0;
+ // ]NOCPP]
+ }
+
+ /**
+ * This is used in C++ to release special <code>isindex</code>
+ * attribute values whose ownership is not transferred.
+ */
+ void releaseValue(int i) {
+ Portability.releaseString(values[i]);
+ }
+
+ /**
+ * This is only used for <code>AttributeName</code> ownership transfer
+ * in the isindex case to avoid freeing custom names twice in C++.
+ */
+ void clearWithoutReleasingContents() {
+ for (int i = 0; i < length; i++) {
+ names[i] = null;
+ values[i] = null;
+ }
+ length = 0;
+ }
+
+ boolean contains(AttributeName name) {
+ for (int i = 0; i < length; i++) {
+ if (name.equalsAnother(names[i])) {
+ return true;
+ }
+ }
+ // [NOCPP[
+ for (int i = 0; i < xmlnsLength; i++) {
+ if (name.equalsAnother(xmlnsNames[i])) {
+ return true;
+ }
+ }
+ // ]NOCPP]
+ return false;
+ }
+
+ public void adjustForMath() {
+ mode = AttributeName.MATHML;
+ }
+
+ public void adjustForSvg() {
+ mode = AttributeName.SVG;
+ }
+
+ // [NOCPP[
+
+ void processNonNcNames(TreeBuilder<?> treeBuilder, XmlViolationPolicy namePolicy) throws SAXException {
+ for (int i = 0; i < length; i++) {
+ AttributeName attName = names[i];
+ if (!attName.isNcName(mode)) {
+ String name = attName.getLocal(mode);
+ switch (namePolicy) {
+ case ALTER_INFOSET:
+ names[i] = AttributeName.create(NCName.escapeName(name));
+ // fall through
+ case ALLOW:
+ if (attName != AttributeName.XML_LANG) {
+ treeBuilder.warn("Attribute \u201C" + name + "\u201D is not serializable as XML 1.0.");
+ }
+ break;
+ case FATAL:
+ treeBuilder.fatal("Attribute \u201C" + name + "\u201D is not serializable as XML 1.0.");
+ break;
+ }
+ }
+ }
+ }
+
+ public void merge(HtmlAttributes attributes) throws SAXException {
+ int len = attributes.getLength();
+ for (int i = 0; i < len; i++) {
+ AttributeName name = attributes.getAttributeName(i);
+ if (!contains(name)) {
+ addAttribute(name, attributes.getValue(i), XmlViolationPolicy.ALLOW);
+ }
+ }
+ }
+
+ // ]NOCPP]
+
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/MetaScanner.java
@@ -0,0 +1,696 @@
+/*
+ * Copyright (c) 2007 Henri Sivonen
+ * Copyright (c) 2008-2009 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+import java.io.IOException;
+
+import nu.validator.htmlparser.annotation.NoLength;
+import nu.validator.htmlparser.common.ByteReadable;
+
+import org.xml.sax.SAXException;
+
+public abstract class MetaScanner {
+
+ private static final @NoLength char[] CHARSET = "charset".toCharArray();
+
+ private static final @NoLength char[] CONTENT = "content".toCharArray();
+
+ private static final int NO = 0;
+
+ private static final int M = 1;
+
+ private static final int E = 2;
+
+ private static final int T = 3;
+
+ private static final int A = 4;
+
+ private static final int DATA = 0;
+
+ private static final int TAG_OPEN = 1;
+
+ private static final int SCAN_UNTIL_GT = 2;
+
+ private static final int TAG_NAME = 3;
+
+ private static final int BEFORE_ATTRIBUTE_NAME = 4;
+
+ private static final int ATTRIBUTE_NAME = 5;
+
+ private static final int AFTER_ATTRIBUTE_NAME = 6;
+
+ private static final int BEFORE_ATTRIBUTE_VALUE = 7;
+
+ private static final int ATTRIBUTE_VALUE_DOUBLE_QUOTED = 8;
+
+ private static final int ATTRIBUTE_VALUE_SINGLE_QUOTED = 9;
+
+ private static final int ATTRIBUTE_VALUE_UNQUOTED = 10;
+
+ private static final int AFTER_ATTRIBUTE_VALUE_QUOTED = 11;
+
+ private static final int MARKUP_DECLARATION_OPEN = 13;
+
+ private static final int MARKUP_DECLARATION_HYPHEN = 14;
+
+ private static final int COMMENT_START = 15;
+
+ private static final int COMMENT_START_DASH = 16;
+
+ private static final int COMMENT = 17;
+
+ private static final int COMMENT_END_DASH = 18;
+
+ private static final int COMMENT_END = 19;
+
+ private static final int SELF_CLOSING_START_TAG = 20;
+
+ protected ByteReadable readable;
+
+ private int metaState = NO;
+
+ private int contentIndex = -1;
+
+ private int charsetIndex = -1;
+
+ protected int stateSave = DATA;
+
+ private int strBufLen;
+
+ private char[] strBuf;
+
+ // [NOCPP[
+
+ /**
+ * @param source
+ * @param errorHandler
+ * @param publicId
+ * @param systemId
+ */
+ public MetaScanner() {
+ this.readable = null;
+ this.metaState = NO;
+ this.contentIndex = -1;
+ this.charsetIndex = -1;
+ this.stateSave = DATA;
+ strBufLen = 0;
+ strBuf = new char[36];
+ }
+
+ /**
+ * -1 means end.
+ * @return
+ * @throws IOException
+ */
+ protected int read() throws IOException {
+ return readable.readByte();
+ }
+
+ // ]NOCPP]
+
+ // WARNING When editing this, makes sure the bytecode length shown by javap
+ // stays under 8000 bytes!
+ protected final void stateLoop(int state)
+ throws SAXException, IOException {
+ int c = -1;
+ boolean reconsume = false;
+ stateloop: for (;;) {
+ switch (state) {
+ case DATA:
+ dataloop: for (;;) {
+ if (reconsume) {
+ reconsume = false;
+ } else {
+ c = read();
+ }
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '<':
+ state = MetaScanner.TAG_OPEN;
+ break dataloop; // FALL THROUGH continue
+ // stateloop;
+ default:
+ continue;
+ }
+ }
+ // WARNING FALLTHRU CASE TRANSITION: DON'T REORDER
+ case TAG_OPEN:
+ tagopenloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case 'm':
+ case 'M':
+ metaState = M;
+ state = MetaScanner.TAG_NAME;
+ break tagopenloop;
+ // continue stateloop;
+ case '!':
+ state = MetaScanner.MARKUP_DECLARATION_OPEN;
+ continue stateloop;
+ case '?':
+ case '/':
+ state = MetaScanner.SCAN_UNTIL_GT;
+ continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
+ metaState = NO;
+ state = MetaScanner.TAG_NAME;
+ break tagopenloop;
+ // continue stateloop;
+ }
+ state = MetaScanner.DATA;
+ reconsume = true;
+ continue stateloop;
+ }
+ }
+ // FALL THROUGH DON'T REORDER
+ case TAG_NAME:
+ tagnameloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\u000C':
+ state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
+ break tagnameloop;
+ // continue stateloop;
+ case '/':
+ state = MetaScanner.SELF_CLOSING_START_TAG;
+ continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ case 'e':
+ case 'E':
+ if (metaState == M) {
+ metaState = E;
+ } else {
+ metaState = NO;
+ }
+ continue;
+ case 't':
+ case 'T':
+ if (metaState == E) {
+ metaState = T;
+ } else {
+ metaState = NO;
+ }
+ continue;
+ case 'a':
+ case 'A':
+ if (metaState == T) {
+ metaState = A;
+ } else {
+ metaState = NO;
+ }
+ continue;
+ default:
+ metaState = NO;
+ continue;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case BEFORE_ATTRIBUTE_NAME:
+ beforeattributenameloop: for (;;) {
+ if (reconsume) {
+ reconsume = false;
+ } else {
+ c = read();
+ }
+ /*
+ * Consume the next input character:
+ */
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\u000C':
+ continue;
+ case '/':
+ state = MetaScanner.SELF_CLOSING_START_TAG;
+ continue stateloop;
+ case '>':
+ state = DATA;
+ continue stateloop;
+ case 'c':
+ case 'C':
+ contentIndex = 0;
+ charsetIndex = 0;
+ state = MetaScanner.ATTRIBUTE_NAME;
+ break beforeattributenameloop;
+ default:
+ contentIndex = -1;
+ charsetIndex = -1;
+ state = MetaScanner.ATTRIBUTE_NAME;
+ break beforeattributenameloop;
+ // continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case ATTRIBUTE_NAME:
+ attributenameloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\u000C':
+ state = MetaScanner.AFTER_ATTRIBUTE_NAME;
+ continue stateloop;
+ case '/':
+ state = MetaScanner.SELF_CLOSING_START_TAG;
+ continue stateloop;
+ case '=':
+ strBufLen = 0;
+ state = MetaScanner.BEFORE_ATTRIBUTE_VALUE;
+ break attributenameloop;
+ // continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ if (metaState == A) {
+ if (c >= 'A' && c <= 'Z') {
+ c += 0x20;
+ }
+ if (contentIndex == 6) {
+ contentIndex = -1;
+ } else if (contentIndex > -1
+ && contentIndex < 6
+ && (c == CONTENT[contentIndex + 1])) {
+ contentIndex++;
+ }
+ if (charsetIndex == 6) {
+ charsetIndex = -1;
+ } else if (charsetIndex > -1
+ && charsetIndex < 6
+ && (c == CHARSET[charsetIndex + 1])) {
+ charsetIndex++;
+ }
+ }
+ continue;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case BEFORE_ATTRIBUTE_VALUE:
+ beforeattributevalueloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\u000C':
+ continue;
+ case '"':
+ state = MetaScanner.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
+ break beforeattributevalueloop;
+ // continue stateloop;
+ case '\'':
+ state = MetaScanner.ATTRIBUTE_VALUE_SINGLE_QUOTED;
+ continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ if (charsetIndex == 6 || contentIndex == 6) {
+ addToBuffer(c);
+ }
+ state = MetaScanner.ATTRIBUTE_VALUE_UNQUOTED;
+ continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case ATTRIBUTE_VALUE_DOUBLE_QUOTED:
+ attributevaluedoublequotedloop: for (;;) {
+ if (reconsume) {
+ reconsume = false;
+ } else {
+ c = read();
+ }
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '"':
+ if (tryCharset()) {
+ break stateloop;
+ }
+ state = MetaScanner.AFTER_ATTRIBUTE_VALUE_QUOTED;
+ break attributevaluedoublequotedloop;
+ // continue stateloop;
+ default:
+ if (metaState == A && (contentIndex == 6 || charsetIndex == 6)) {
+ addToBuffer(c);
+ }
+ continue;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case AFTER_ATTRIBUTE_VALUE_QUOTED:
+ afterattributevaluequotedloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\u000C':
+ state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
+ continue stateloop;
+ case '/':
+ state = MetaScanner.SELF_CLOSING_START_TAG;
+ break afterattributevaluequotedloop;
+ // continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
+ reconsume = true;
+ continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case SELF_CLOSING_START_TAG:
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
+ reconsume = true;
+ continue stateloop;
+ }
+ // XXX reorder point
+ case ATTRIBUTE_VALUE_UNQUOTED:
+ for (;;) {
+ if (reconsume) {
+ reconsume = false;
+ } else {
+ c = read();
+ }
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+
+ case '\u000C':
+ if (tryCharset()) {
+ break stateloop;
+ }
+ state = MetaScanner.BEFORE_ATTRIBUTE_NAME;
+ continue stateloop;
+ case '>':
+ if (tryCharset()) {
+ break stateloop;
+ }
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ if (metaState == A && (contentIndex == 6 || charsetIndex == 6)) {
+ addToBuffer(c);
+ }
+ continue;
+ }
+ }
+ // XXX reorder point
+ case AFTER_ATTRIBUTE_NAME:
+ for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\u000C':
+ continue;
+ case '/':
+ if (tryCharset()) {
+ break stateloop;
+ }
+ state = MetaScanner.SELF_CLOSING_START_TAG;
+ continue stateloop;
+ case '=':
+ state = MetaScanner.BEFORE_ATTRIBUTE_VALUE;
+ continue stateloop;
+ case '>':
+ if (tryCharset()) {
+ break stateloop;
+ }
+ state = MetaScanner.DATA;
+ continue stateloop;
+ case 'c':
+ case 'C':
+ contentIndex = 0;
+ charsetIndex = 0;
+ state = MetaScanner.ATTRIBUTE_NAME;
+ continue stateloop;
+ default:
+ contentIndex = -1;
+ charsetIndex = -1;
+ state = MetaScanner.ATTRIBUTE_NAME;
+ continue stateloop;
+ }
+ }
+ // XXX reorder point
+ case MARKUP_DECLARATION_OPEN:
+ markupdeclarationopenloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '-':
+ state = MetaScanner.MARKUP_DECLARATION_HYPHEN;
+ break markupdeclarationopenloop;
+ // continue stateloop;
+ default:
+ state = MetaScanner.SCAN_UNTIL_GT;
+ reconsume = true;
+ continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case MARKUP_DECLARATION_HYPHEN:
+ markupdeclarationhyphenloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '-':
+ state = MetaScanner.COMMENT_START;
+ break markupdeclarationhyphenloop;
+ // continue stateloop;
+ default:
+ state = MetaScanner.SCAN_UNTIL_GT;
+ reconsume = true;
+ continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case COMMENT_START:
+ commentstartloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '-':
+ state = MetaScanner.COMMENT_START_DASH;
+ continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ state = MetaScanner.COMMENT;
+ break commentstartloop;
+ // continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case COMMENT:
+ commentloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '-':
+ state = MetaScanner.COMMENT_END_DASH;
+ break commentloop;
+ // continue stateloop;
+ default:
+ continue;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case COMMENT_END_DASH:
+ commentenddashloop: for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '-':
+ state = MetaScanner.COMMENT_END;
+ break commentenddashloop;
+ // continue stateloop;
+ default:
+ state = MetaScanner.COMMENT;
+ continue stateloop;
+ }
+ }
+ // FALLTHRU DON'T REORDER
+ case COMMENT_END:
+ for (;;) {
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ case '-':
+ continue;
+ default:
+ state = MetaScanner.COMMENT;
+ continue stateloop;
+ }
+ }
+ // XXX reorder point
+ case COMMENT_START_DASH:
+ c = read();
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '-':
+ state = MetaScanner.COMMENT_END;
+ continue stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ state = MetaScanner.COMMENT;
+ continue stateloop;
+ }
+ // XXX reorder point
+ case ATTRIBUTE_VALUE_SINGLE_QUOTED:
+ for (;;) {
+ if (reconsume) {
+ reconsume = false;
+ } else {
+ c = read();
+ }
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '\'':
+ if (tryCharset()) {
+ break stateloop;
+ }
+ state = MetaScanner.AFTER_ATTRIBUTE_VALUE_QUOTED;
+ continue stateloop;
+ default:
+ if (metaState == A && (contentIndex == 6 || charsetIndex == 6)) {
+ addToBuffer(c);
+ }
+ continue;
+ }
+ }
+ // XXX reorder point
+ case SCAN_UNTIL_GT:
+ for (;;) {
+ if (reconsume) {
+ reconsume = false;
+ } else {
+ c = read();
+ }
+ switch (c) {
+ case -1:
+ break stateloop;
+ case '>':
+ state = MetaScanner.DATA;
+ continue stateloop;
+ default:
+ continue;
+ }
+ }
+ }
+ }
+ stateSave = state;
+ }
+
+ private void addToBuffer(int c) {
+ if (strBufLen == strBuf.length) {
+ char[] newBuf = new char[strBuf.length + (strBuf.length << 1)];
+ System.arraycopy(strBuf, 0, newBuf, 0, strBuf.length);
+ Portability.releaseArray(strBuf);
+ strBuf = newBuf;
+ }
+ strBuf[strBufLen++] = (char)c;
+ }
+
+ private boolean tryCharset() throws SAXException {
+ if (metaState != A || !(contentIndex == 6 || charsetIndex == 6)) {
+ return false;
+ }
+ String attVal = Portability.newStringFromBuffer(strBuf, 0, strBufLen);
+ String candidateEncoding;
+ if (contentIndex == 6) {
+ candidateEncoding = TreeBuilder.extractCharsetFromContent(attVal);
+ Portability.releaseString(attVal);
+ } else {
+ candidateEncoding = attVal;
+ }
+ if (candidateEncoding == null) {
+ return false;
+ }
+ boolean rv = tryCharset(candidateEncoding);
+ Portability.releaseString(candidateEncoding);
+ contentIndex = -1;
+ charsetIndex = -1;
+ return rv;
+ }
+
+ protected abstract boolean tryCharset(String encoding) throws SAXException;
+
+
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/Portability.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2008-2009 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+import nu.validator.htmlparser.annotation.Literal;
+import nu.validator.htmlparser.annotation.Local;
+import nu.validator.htmlparser.annotation.NoLength;
+
+public final class Portability {
+
+ // Allocating methods
+
+ /**
+ * Allocates a new local name object. In C++, the refcount must be set up in such a way that
+ * calling <code>releaseLocal</code> on the return value balances the refcount set by this method.
+ */
+ public static @Local String newLocalNameFromBuffer(@NoLength char[] buf, int offset, int length) {
+ return new String(buf, offset, length).intern();
+ }
+
+ public static String newStringFromBuffer(@NoLength char[] buf, int offset, int length) {
+ return new String(buf, offset, length);
+ }
+
+ public static String newEmptyString() {
+ return "";
+ }
+
+ public static String newStringFromLiteral(@Literal String literal) {
+ return literal;
+ }
+
+ // XXX get rid of this
+ public static char[] newCharArrayFromLocal(@Local String local) {
+ return local.toCharArray();
+ }
+
+ public static char[] newCharArrayFromString(String string) {
+ return string.toCharArray();
+ }
+
+ // Deallocation methods
+
+ public static void releaseString(String str) {
+ // No-op in Java
+ }
+
+ public static void retainLocal(@Local String local) {
+ // No-op in Java
+ }
+
+ /**
+ * This MUST be a no-op on locals that are known at compile time.
+ * @param local
+ */
+ public static void releaseLocal(@Local String local) {
+ // No-op in Java
+ }
+
+ /**
+ * Releases a Java array. This method is magically replaced by a macro in C++.
+ * @param arr
+ */
+ public static void releaseArray(Object arr) {
+ // No-op in Java
+ }
+
+ public static void retainElement(Object elt) {
+ // No-op in Java
+ }
+
+ public static void releaseElement(Object elt) {
+ // No-op in Java
+ }
+
+ // Comparison methods
+
+ public static boolean localEqualsBuffer(@Local String local, @NoLength char[] buf, int offset, int length) {
+ if (local.length() != length) {
+ return false;
+ }
+ for (int i = 0; i < length; i++) {
+ if (local.charAt(i) != buf[offset + i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(@Literal String lowerCaseLiteral,
+ String string) {
+ if (string == null) {
+ return false;
+ }
+ if (lowerCaseLiteral.length() > string.length()) {
+ return false;
+ }
+ for (int i = 0; i < lowerCaseLiteral.length(); i++) {
+ char c0 = lowerCaseLiteral.charAt(i);
+ char c1 = string.charAt(i);
+ if (c1 >= 'A' && c1 <= 'Z') {
+ c1 += 0x20;
+ }
+ if (c0 != c1) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean lowerCaseLiteralEqualsIgnoreAsciiCaseString(@Literal String lowerCaseLiteral,
+ String string) {
+ if (string == null) {
+ return false;
+ }
+ if (lowerCaseLiteral.length() != string.length()) {
+ return false;
+ }
+ for (int i = 0; i < lowerCaseLiteral.length(); i++) {
+ char c0 = lowerCaseLiteral.charAt(i);
+ char c1 = string.charAt(i);
+ if (c1 >= 'A' && c1 <= 'Z') {
+ c1 += 0x20;
+ }
+ if (c0 != c1) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean literalEqualsString(@Literal String literal, String string) {
+ return literal.equals(string);
+ }
+
+ public static char[] isIndexPrompt() {
+ return "This is a searchable index. Insert your search keywords here: ".toCharArray();
+ }
+
+ public static void delete(Object o) {
+
+ }
+
+ public static void deleteArray(Object o) {
+
+ }
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/README.txt
@@ -0,0 +1,9 @@
+The *.java files in this directory are the source files from which the
+corresponding nsHtml5*.cpp and nsHtml5*.h files were generated in
+../src/.
+
+You can obtain the full Java version of the parser and the translator
+program from
+svn co http://svn.versiondude.net/whattf/htmlparser/trunk/ htmlparser
+
+See run-cpp-translate.sh at the top level of the SVN checkout.
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/StackNode.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2007 Henri Sivonen
+ * Copyright (c) 2007-2009 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+import nu.validator.htmlparser.annotation.Local;
+import nu.validator.htmlparser.annotation.NsUri;
+
+final class StackNode<T> {
+ final int group;
+
+ final @Local String name;
+
+ final @Local String popName;
+
+ final @NsUri String ns;
+
+ final T node;
+
+ final boolean scoping;
+
+ final boolean special;
+
+ final boolean fosterParenting;
+
+ private int refcount = 1;
+
+ /**
+ * @param group
+ * TODO
+ * @param name
+ * @param node
+ * @param scoping
+ * @param special
+ * @param popName
+ * TODO
+ */
+ StackNode(int group, final @NsUri String ns, final @Local String name, final T node,
+ final boolean scoping, final boolean special,
+ final boolean fosterParenting, final @Local String popName) {
+ this.group = group;
+ this.name = name;
+ this.popName = popName;
+ this.ns = ns;
+ this.node = node;
+ this.scoping = scoping;
+ this.special = special;
+ this.fosterParenting = fosterParenting;
+ this.refcount = 1;
+ Portability.retainLocal(name);
+ Portability.retainLocal(popName);
+ Portability.retainElement(node);
+ // not retaining namespace for now
+ }
+
+ /**
+ * @param elementName
+ * TODO
+ * @param node
+ */
+ StackNode(final @NsUri String ns, ElementName elementName, final T node) {
+ this.group = elementName.group;
+ this.name = elementName.name;
+ this.popName = elementName.name;
+ this.ns = ns;
+ this.node = node;
+ this.scoping = elementName.scoping;
+ this.special = elementName.special;
+ this.fosterParenting = elementName.fosterParenting;
+ this.refcount = 1;
+ Portability.retainLocal(name);
+ Portability.retainLocal(popName);
+ Portability.retainElement(node);
+ // not retaining namespace for now
+ }
+
+ StackNode(final @NsUri String ns, ElementName elementName, final T node, @Local String popName) {
+ this.group = elementName.group;
+ this.name = elementName.name;
+ this.popName = popName;
+ this.ns = ns;
+ this.node = node;
+ this.scoping = elementName.scoping;
+ this.special = elementName.special;
+ this.fosterParenting = elementName.fosterParenting;
+ this.refcount = 1;
+ Portability.retainLocal(name);
+ Portability.retainLocal(popName);
+ Portability.retainElement(node);
+ // not retaining namespace for now
+ }
+
+ StackNode(final @NsUri String ns, ElementName elementName, final T node, @Local String popName, boolean scoping) {
+ this.group = elementName.group;
+ this.name = elementName.name;
+ this.popName = popName;
+ this.ns = ns;
+ this.node = node;
+ this.scoping = scoping;
+ this.special = false;
+ this.fosterParenting = false;
+ this.refcount = 1;
+ Portability.retainLocal(name);
+ Portability.retainLocal(popName);
+ Portability.retainElement(node);
+ // not retaining namespace for now
+ }
+
+ @SuppressWarnings("unused") private void destructor() {
+ Portability.releaseLocal(name);
+ Portability.releaseLocal(popName);
+ Portability.releaseElement(node);
+ // not releasing namespace for now
+ }
+
+ // [NOCPP[
+ /**
+ * @see java.lang.Object#toString()
+ */
+ @Override public @Local String toString() {
+ return name;
+ }
+ // ]NOCPP]
+
+ public void retain() {
+ refcount++;
+ }
+
+ public void release() {
+ refcount--;
+ if (refcount == 0) {
+ Portability.delete(this);
+ }
+ }
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/StateSnapshot.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2009 Mozilla Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package nu.validator.htmlparser.impl;
+
+
+public class StateSnapshot<T> {
+
+ /**
+ * @param stack
+ * @param listOfActiveFormattingElements
+ * @param formPointer
+ */
+ StateSnapshot(StackNode<T>[] stack,
+ StackNode<T>[] listOfActiveFormattingElements, T formPointer) {
+ this.stack = stack;
+ this.listOfActiveFormattingElements = listOfActiveFormattingElements;
+ this.formPointer = formPointer;
+ }
+
+ final StackNode<T>[] stack;
+
+ final StackNode<T>[] listOfActiveFormattingElements;
+
+ final T formPointer;
+
+ @SuppressWarnings("unused") private void destructor() {
+ for (int i = 0; i < stack.length; i++) {
+ stack[i].release();
+ }
+ Portability.releaseArray(stack);
+ for (int i = 0; i < listOfActiveFormattingElements.length; i++) {
+ if (listOfActiveFormattingElements[i] != null) {
+ listOfActiveFormattingElements[i].release();
+ }
+ }
+ Portability.releaseArray(listOfActiveFormattingElements);
+ Portability.retainElement(formPointer);
+ }
+}
new file mode 100644
--- /dev/null
+++ b/content/html/parser/javasrc/Tokenizer.java
@@ -0,0 +1,5709 @@
+/*
+ * Copyright (c) 2005-2007 Henri Sivonen
+ * Copyright (c) 2007-2009 Mozilla Foundation
+ * Portions of comments Copyright 2004-2008 Apple Computer, Inc., Mozilla
+ * Foundation, and Opera Software ASA.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * The comments following this one that use the same comment syntax as this
+ * comment are quotes from the WHATWG HTML 5 spec as of 2 June 2007
+ * amended as of June 18 2008.
+ * That document came with this statement:
+ * "© Copyright 2004-2008 Apple Computer, Inc., Mozilla Foundation, and
+ * Opera Software ASA. You are granted a license to use, reproduce and
+ * create derivative works of this document."
+ */
+
+package nu.validator.htmlparser.impl;
+
+import nu.validator.htmlparser.annotation.Inline;
+import nu.validator.htmlparser.annotation.Local;
+import nu.validator.htmlparser.annotation.NoLength;
+import nu.validator.htmlparser.common.EncodingDeclarationHandler;
+import nu.validator.htmlparser.common.TokenHandler;
+import nu.validator.htmlparser.common.XmlViolationPolicy;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * An implementation of
+ * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html
+ *
+ * This class implements the <code>Locator</code> interface. This is not an
+ * incidental implementation detail: Users of this class are encouraged to make
+ * use of the <code>Locator</code> nature.
+ *
+ * By default, the tokenizer may report data that XML 1.0 bans. The tokenizer
+ * can be configured to treat these conditions as fatal or to coerce the infoset
+ * to something that XML 1.0 allows.
+ *
+ * @version $Id: Tokenizer.java 555 2009-06-25 07:17:28Z hsivonen $
+ * @author hsivonen
+ */
+public class Tokenizer implements Locator {
+
+ public static final int DATA = 0;
+
+ public static final int RCDATA = 1;
+
+ public static final int CDATA = 2;
+
+ public static final int PLAINTEXT = 3;
+
+ private static final int TAG_OPEN = 49;
+
+ private static final int CLOSE_TAG_OPEN_PCDATA = 50;
+
+ private static final int TAG_NAME = 58;
+
+ private static final int BEFORE_ATTRIBUTE_NAME = 4;
+
+ private static final int ATTRIBUTE_NAME = 5;
+
+ private static final int AFTER_ATTRIBUTE_NAME = 6;
+
+ private static final int BEFORE_ATTRIBUTE_VALUE = 7;
+
+ private static final int ATTRIBUTE_VALUE_DOUBLE_QUOTED = 8;
+
+ private static final int ATTRIBUTE_VALUE_SINGLE_QUOTED = 9;
+
+ private static final int ATTRIBUTE_VALUE_UNQUOTED = 10;
+
+ private static final int AFTER_ATTRIBUTE_VALUE_QUOTED = 11;
+
+ private static final int BOGUS_COMMENT = 12;
+
+ private static final int MARKUP_DECLARATION_OPEN = 13;
+
+ private static final int DOCTYPE = 14;
+
+ private static final int BEFORE_DOCTYPE_NAME = 15;
+
+ private static final int DOCTYPE_NAME = 16;
+
+ private static final int AFTER_DOCTYPE_NAME = 17;
+
+ private static final int BEFORE_DOCTYPE_PUBLIC_IDENTIFIER = 18;
+
+ private static final int DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED = 19;
+
+ private static final int DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED = 20;
+
+ private static final int AFTER_DOCTYPE_PUBLIC_IDENTIFIER = 21;
+
+ private static final int BEFORE_DOCTYPE_SYSTEM_IDENTIFIER = 22;
+
+ private static final int DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED = 23;
+
+ private static final int DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED = 24;
+
+ private static final int AFTER_DOCTYPE_SYSTEM_IDENTIFIER = 25;
+
+ private static final int BOGUS_DOCTYPE = 26;
+
+ private static final int COMMENT_START = 27;
+
+ private static final int COMMENT_START_DASH = 28;
+
+ private static final int COMMENT = 29;
+
+ private static final int COMMENT_END_DASH = 30;
+
+ private static final int COMMENT_END = 31;
+
+ private static final int CLOSE_TAG_OPEN_NOT_PCDATA = 32;
+
+ private static final int MARKUP_DECLARATION_HYPHEN = 33;
+
+ private static final int MARKUP_DECLARATION_OCTYPE = 34;
+
+ private static final int DOCTYPE_UBLIC = 35;
+
+ private static final int DOCTYPE_YSTEM = 36;
+
+ private static final int CONSUME_CHARACTER_REFERENCE = 37;
+
+ private static final int CONSUME_NCR = 38;
+
+ private static final int CHARACTER_REFERENCE_LOOP = 39;
+
+ private static final int HEX_NCR_LOOP = 41;
+
+ private static final int DECIMAL_NRC_LOOP = 42;
+
+ private static final int HANDLE_NCR_VALUE = 43;
+
+ private static final int SELF_CLOSING_START_TAG = 44;
+
+ private static final int CDATA_START = 45;
+
+ private static final int CDATA_SECTION = 46;
+
+ private static final int CDATA_RSQB = 47;
+
+ private static final int CDATA_RSQB_RSQB = 48;
+
+ private static final int TAG_OPEN_NON_PCDATA = 51;
+
+ private static final int ESCAPE_EXCLAMATION = 52;
+
+ private static final int ESCAPE_EXCLAMATION_HYPHEN = 53;
+
+ private static final int ESCAPE = 54;
+
+ private static final int ESCAPE_HYPHEN = 55;
+
+ private static final int ESCAPE_HYPHEN_HYPHEN = 56;
+
+ private static final int BOGUS_COMMENT_HYPHEN = 57;
+
+ /**
+ * Magic value for UTF-16 operations.
+ */
+ private static final int LEAD_OFFSET = (0xD800 - (0x10000 >> 10));
+
+ /**
+ * UTF-16 code unit array containing less than and greater than for emitting
+ * those characters on certain parse errors.
+ */
+ private static final @NoLength char[] LT_GT = { '<', '>' };
+
+ /**
+ * UTF-16 code unit array containing less than and solidus for emitting
+ * those characters on certain parse errors.
+ */
+ private static final @NoLength char[] LT_SOLIDUS = { '<', '/' };
+
+ /**
+ * UTF-16 code unit array containing ]] for emitting those characters on
+ * state transitions.
+ */
+ private static final @NoLength char[] RSQB_RSQB = { ']', ']' };
+
+ /**
+ * Array version of U+FFFD.
+ */
+ private static final @NoLength char[] REPLACEMENT_CHARACTER = { '\uFFFD' };
+
+ // [NOCPP[
+
+ /**
+ * Array version of space.
+ */
+ private static final @NoLength char[] SPACE = { ' ' };
+
+ // ]NOCPP]
+
+ /**
+ * Array version of line feed.
+ */
+ private static final @NoLength char[] LF = { '\n' };
+
+ /**
+ * Buffer growth parameter.
+ */
+ private static final int BUFFER_GROW_BY = 1024;
+
+ /**
+ * "CDATA[" as <code>char[]</code>
+ */
+ private static final @NoLength char[] CDATA_LSQB = "CDATA[".toCharArray();
+
+ /**
+ * "octype" as <code>char[]</code>
+ */
+ private static final @NoLength char[] OCTYPE = "octype".toCharArray();
+
+ /**
+ * "ublic" as <code>char[]</code>
+ */
+ private static final @NoLength char[] UBLIC = "ublic".toCharArray();
+
+ /**
+ * "ystem" as <code>char[]</code>
+ */
+ private static final @NoLength char[] YSTEM = "ystem".toCharArray();
+
+ private static final char[] TITLE_ARR = { 't', 'i', 't', 'l', 'e' };
+
+ private static final char[] SCRIPT_ARR = { 's', 'c', 'r', 'i', 'p', 't' };
+
+ private static final char[] STYLE_ARR = { 's', 't', 'y', 'l', 'e' };
+
+ private static final char[] PLAINTEXT_ARR = { 'p', 'l', 'a', 'i', 'n', 't',
+ 'e', 'x', 't' };
+
+ private static final char[] XMP_ARR = { 'x', 'm', 'p' };
+
+ private static final char[] TEXTAREA_ARR = { 't', 'e', 'x', 't', 'a', 'r',
+ 'e', 'a' };
+
+ private static final char[] IFRAME_ARR = { 'i', 'f', 'r', 'a', 'm', 'e' };
+
+ private static final char[] NOEMBED_ARR = { 'n', 'o', 'e', 'm', 'b', 'e',
+ 'd' };
+
+ private static final char[] NOSCRIPT_ARR = { 'n', 'o', 's', 'c', 'r', 'i',
+ 'p', 't' };
+
+ private static final char[] NOFRAMES_ARR = { 'n', 'o', 'f', 'r', 'a', 'm',
+ 'e', 's' };
+
+ /**
+ * The token handler.
+ */
+ protected final TokenHandler tokenHandler;
+
+ protected EncodingDeclarationHandler encodingDeclarationHandler;
+
+ // [NOCPP[
+
+ /**
+ * The error handler.
+ */
+ protected ErrorHandler errorHandler;
+
+ // ]NOCPP]
+
+ /**
+ * Whether the previous char read was CR.
+ */
+ protected boolean lastCR;
+
+ protected int stateSave;
+
+ private int returnStateSave;
+
+ protected int index;
+
+ private boolean forceQuirks;
+
+ private char additional;
+
+ private int entCol;
+
+ private int lo;
+
+ private int hi;
+
+ private int candidate;
+
+ private int strBufMark;
+
+ private int prevValue;
+
+ protected int value;
+
+ private boolean seenDigits;
+
+ protected int cstart;
+
+ /**
+ * The SAX public id for the resource being tokenized. (Only passed to back
+ * as part of locator data.)
+ */
+ private String publicId;
+
+ /**
+ * The SAX system id for the resource being tokenized. (Only passed to back
+ * as part of locator data.)
+ */
+ private String systemId;
+
+ /**
+ * Buffer for short identifiers.
+ */
+ private char[] strBuf;
+
+ /**
+ * Number of significant <code>char</code>s in <code>strBuf</code>.
+ */
+ private int strBufLen;
+
+ /**
+ * <code>-1</code> to indicate that <code>strBuf</code> is used or otherwise
+ * an offset to the main buffer.
+ */
+ // private int strBufOffset = -1;
+ /**
+ * Buffer for long strings.
+ */
+ private char[] longStrBuf;
+
+ /**
+ * Number of significant <code>char</code>s in <code>longStrBuf</code>.
+ */
+ private int longStrBufLen;
+
+ /**
+ * <code>-1</code> to indicate that <code>longStrBuf</code> is used or
+ * otherwise an offset to the main buffer.
+ */
+ // private int longStrBufOffset = -1;
+ /**
+ * The attribute holder.
+ */
+ private HtmlAttributes attributes;
+
+ /**
+ * Buffer for expanding NCRs falling into the Basic Multilingual Plane.
+ */
+ private final char[] bmpChar;
+
+ /**
+ * Buffer for expanding astral NCRs.
+ */
+ private final char[] astralChar;
+
+ /**
+ * The element whose end tag closes the current CDATA or RCDATA element.
+ */
+ protected ElementName contentModelElement = null;
+
+ private char[] contentModelElementNameAsArray;
+
+ /**
+ * <code>true</code> if tokenizing an end tag
+ */
+ protected boolean endTag;
+
+ /**
+ * The current tag token name.
+ */
+ private ElementName tagName = null;
+
+ /**
+ * The current attribute name.
+ */
+ protected AttributeName attributeName = null;
+
+ // [NOCPP[
+
+ /**
+ * Whether comment tokens are emitted.
+ */
+ private boolean wantsComments = false;
+
+ /**
+ * <code>true</code> when HTML4-specific additional errors are requested.
+ */
+ protected boolean html4;
+
+ /**
+ * Whether the stream is past the first 512 bytes.
+ */
+ private boolean metaBoundaryPassed;
+
+ // ]NOCPP]
+
+ /**
+ * The name of the current doctype token.
+ */
+ private @Local String doctypeName;
+
+ /**
+ * The public id of the current doctype token.
+ */
+ private String publicIdentifier;
+
+ /**
+ * The system id of the current doctype token.
+ */
+ private String systemIdentifier;
+
+ // [NOCPP[
+
+ /**
+ * The policy for vertical tab and form feed.
+ */
+ private XmlViolationPolicy contentSpacePolicy = XmlViolationPolicy.ALTER_INFOSET;
+
+ /**
+ * The policy for comments.
+ */
+ private XmlViolationPolicy commentPolicy = XmlViolationPolicy.ALTER_INFOSET;
+
+ private XmlViolationPolicy xmlnsPolicy = XmlViolationPolicy.ALTER_INFOSET;
+
+ private XmlViolationPolicy namePolicy = XmlViolationPolicy.ALTER_INFOSET;
+
+ private boolean html4ModeCompatibleWithXhtml1Schemata;
+
+ private final boolean newAttributesEachTime;
+
+ // ]NOCPP]
+
+ private int mappingLangToXmlLang;
+
+ private boolean shouldSuspend;
+
+ protected boolean confident;
+
+ private int line;
+
+ // [NOCPP[
+
+ protected LocatorImpl ampersandLocation;
+
+ public Tokenizer(TokenHandler tokenHandler,
+ boolean newAttributesEachTime) {
+ this.tokenHandler = tokenHandler;
+ this.encodingDeclarationHandler = null;
+ this.newAttributesEachTime = newAttributesEachTime;
+ this.bmpChar = new char[1];
+ this.astralChar = new char[2];
+ }
+
+ // ]NOCPP]
+
+ /**
+ * The constructor.
+ *
+ * @param tokenHandler
+ * the handler for receiving tokens
+ */
+ public Tokenizer(TokenHandler tokenHandler) {
+ this.tokenHandler = tokenHandler;
+ this.encodingDeclarationHandler = null;
+ // [NOCPP[
+ this.newAttributesEachTime = false;
+ // ]NOCPP]
+ this.bmpChar = new char[1];
+ this.astralChar = new char[2];
+ }
+
+ public void initLocation(String newPublicId, String newSystemId) {
+ this.systemId = newSystemId;
+ this.publicId = newPublicId;
+
+ }
+
+ void destructor() {
+ Portability.releaseArray(bmpChar);
+ Portability.releaseArray(astralChar);
+ }
+
+ // [NOCPP[
+
+ /**
+ * Returns the mappingLangToXmlLang.
+ *
+ * @return the mappingLangToXmlLang
+ */
+ public boolean isMappingLangToXmlLang() {
+ return mappingLangToXmlLang == AttributeName.HTML_LANG;
+ }
+
+ /**
+ * Sets the mappingLangToXmlLang.
+ *
+ * @param mappingLangToXmlLang
+ * the mappingLangToXmlLang to set
+ */
+ public void setMappingLangToXmlLang(boolean mappingLangToXmlLang) {
+ this.mappingLangToXmlLang = mappingLangToXmlLang ? AttributeName.HTML_LANG
+ : AttributeName.HTML;
+ }
+
+ /**
+ * Sets the error handler.
+ *
+ * @see org.xml.sax.XMLReader#setErrorHandler(org.xml.sax.ErrorHandler)
+ */
+ public void setErrorHandler(ErrorHandler eh) {
+ this.errorHandler = eh;
+ }
+
+ public ErrorHandler getErrorHandler() {
+ return this.errorHandler;
+ }
+
+ /**
+ * Sets the commentPolicy.
+ *
+ * @param commentPolicy
+ * the commentPolicy to set
+ */
+ public void setCommentPolicy(XmlViolationPolicy commentPolicy) {
+ this.commentPolicy = commentPolicy;
+ }
+
+ /**
+ * Sets the contentNonXmlCharPolicy.
+ *
+ * @param contentNonXmlCharPolicy
+ * the contentNonXmlCharPolicy to set
+ */
+ public void setContentNonXmlCharPolicy(
+ XmlViolationPolicy contentNonXmlCharPolicy) {
+ if (contentNonXmlCharPolicy != XmlViolationPolicy.ALLOW) {
+ throw new IllegalArgumentException("Must use ErrorReportingTokenizer to set contentNonXmlCharPolicy to non-ALLOW.");
+ }
+ }
+
+ /**
+ * Sets the contentSpacePolicy.
+ *
+ * @param contentSpacePolicy
+ * the contentSpacePolicy to set
+ */
+ public void setContentSpacePolicy(XmlViolationPolicy contentSpacePolicy) {
+ this.contentSpacePolicy = contentSpacePolicy;
+ }
+
+ /**
+ * Sets the xmlnsPolicy.
+ *
+ * @param xmlnsPolicy
+ * the xmlnsPolicy to set
+ */
+ public void setXmlnsPolicy(XmlViolationPolicy xmlnsPolicy) {
+ if (xmlnsPolicy == XmlViolationPolicy.FATAL) {
+ throw new IllegalArgumentException("Can't use FATAL here.");
+ }
+ this.xmlnsPolicy = xmlnsPolicy;
+ }
+
+ public void setNamePolicy(XmlViolationPolicy namePolicy) {
+ this.namePolicy = namePolicy;
+ }
+
+ /**
+ * Sets the html4ModeCompatibleWithXhtml1Schemata.
+ *
+ * @param html4ModeCompatibleWithXhtml1Schemata
+ * the html4ModeCompatibleWithXhtml1Schemata to set
+ */
+ public void setHtml4ModeCompatibleWithXhtml1Schemata(
+ boolean html4ModeCompatibleWithXhtml1Schemata) {
+ this.html4ModeCompatibleWithXhtml1Schemata = html4ModeCompatibleWithXhtml1Schemata;
+ }
+
+ // ]NOCPP]
+
+ // For the token handler to call
+ /**
+ * Sets the content model flag and the associated element name.
+ *
+ * @param contentModelFlag
+ * the flag
+ * @param contentModelElement
+ * the element causing the flag to be set
+ */
+ public void setContentModelFlag(int contentModelFlag,
+ @Local String contentModelElement) {
+ this.stateSave = contentModelFlag;
+ if (contentModelFlag == Tokenizer.DATA) {
+ return;
+ }
+ // XXX does this make any sense?
+ char[] asArray = Portability.newCharArrayFromLocal(contentModelElement);
+ this.contentModelElement = ElementName.elementNameByBuffer(asArray, 0,
+ asArray.length);
+ Portability.releaseArray(asArray);
+ contentModelElementToArray();
+ }
+
+ /**
+ * Sets the content model flag and the associated element name.
+ *
+ * @param contentModelFlag
+ * the flag
+ * @param contentModelElement
+ * the element causing the flag to be set
+ */
+ public void setContentModelFlag(int contentModelFlag,
+ ElementName contentModelElement) {
+ this.stateSave = contentModelFlag;
+ this.contentModelElement = contentModelElement;
+ contentModelElementToArray();
+ }
+
+ private void contentModelElementToArray() {
+ switch (contentModelElement.group) {
+ case TreeBuilder.TITLE:
+ contentModelElementNameAsArray = TITLE_ARR;
+ return;
+ case TreeBuilder.SCRIPT:
+ contentModelElementNameAsArray = SCRIPT_ARR;
+ return;
+ case TreeBuilder.STYLE:
+ contentModelElementNameAsArray = STYLE_ARR;
+ return;
+ case TreeBuilder.PLAINTEXT:
+ contentModelElementNameAsArray = PLAINTEXT_ARR;
+ return;
+ case TreeBuilder.XMP:
+ contentModelElementNameAsArray = XMP_ARR;
+ return;
+ case TreeBuilder.TEXTAREA:
+ contentModelElementNameAsArray = TEXTAREA_ARR;
+ return;
+ case TreeBuilder.IFRAME:
+ contentModelElementNameAsArray = IFRAME_ARR;
+ return;
+ case TreeBuilder.NOEMBED:
+ contentModelElementNameAsArray = NOEMBED_ARR;
+ return;
+ case TreeBuilder.NOSCRIPT:
+ contentModelElementNameAsArray = NOSCRIPT_ARR;
+ return;
+ case TreeBuilder.NOFRAMES:
+ contentModelElementNameAsArray = NOFRAMES_ARR;
+ return;
+ default:
+ assert false;
+ return;
+ }
+ }
+
+ /**
+ * For C++ use only.
+ */
+ public void setLineNumber(int line) {
+ this.line = line;
+ }
+
+ // start Locator impl
+
+ /**
+ * @see org.xml.sax.Locator#getLineNumber()
+ */
+ @Inline public int getLineNumber() {
+ return line;
+ }
+
+ // [NOCPP[
+
+ /**
+ * @see org.xml.sax.Locator#getColumnNumber()
+ */
+ @Inline public int getColumnNumber() {
+ return -1;
+ }
+
+ /**
+ * @see org.xml.sax.Locator#getPublicId()
+ */
+ public String getPublicId() {
+ return publicId;
+ }
+
+ /**
+ * @see org.xml.sax.Locator#getSystemId()
+ */
+ public String getSystemId() {
+ return systemId;
+ }
+
+ // end Locator impl
+
+ // end public API
+
+
+ public void notifyAboutMetaBoundary() {
+ metaBoundaryPassed = true;
+ }
+
+ void turnOnAdditionalHtml4Errors() {
+ html4 = true;
+ }
+
+ // ]NOCPP]
+
+ HtmlAttributes emptyAttributes() {
+ // [NOCPP[
+ if (newAttributesEachTime) {
+ return new HtmlAttributes(mappingLangToXmlLang);
+ } else {
+ // ]NOCPP]
+ return HtmlAttributes.EMPTY_ATTRIBUTES;
+ // [NOCPP[
+ }
+ // ]NOCPP]
+ }
+
+ private void clearStrBufAndAppendCurrentC(char c) {
+ strBuf[0] = c;
+
+ strBufLen = 1;
+ // strBufOffset = pos;
+ }
+
+ private void clearStrBufAndAppendForceWrite(char c) {
+ strBuf[0] = c; // test
+
+ strBufLen = 1;
+ // strBufOffset = pos;
+ // buf[pos] = c;
+ }
+
+ private void clearStrBufForNextState() {
+ strBufLen = 0;
+ // strBufOffset = pos + 1;
+ }
+
+ /**
+ * Appends to the smaller buffer.
+ *
+ * @param c
+ * the UTF-16 code unit to append
+ */
+ private void appendStrBuf(char c) {
+ // if (strBufOffset != -1) {
+ // strBufLen++;
+ // } else {
+ if (strBufLen == strBuf.length) {
+ char[] newBuf = new char[strBuf.length + Tokenizer.BUFFER_GROW_BY];
+ System.arraycopy(strBuf, 0, newBuf, 0, strBuf.length);
+ Portability.releaseArray(strBuf);
+ strBuf = newBuf;
+ }
+ strBuf[strBufLen++] = c;
+ // }
+ }
+
+ /**
+ * Appends to the smaller buffer.
+ *
+ * @param c
+ * the UTF-16 code unit to append
+ */
+ private void appendStrBufForceWrite(char c) {
+ // if (strBufOffset != -1) {
+ // strBufLen++;
+ // buf[pos] = c;
+ // } else {
+ if (strBufLen == strBuf.length) {
+ char[] newBuf = new char[strBuf.length + Tokenizer.BUFFER_GROW_BY];
+ System.arraycopy(strBuf, 0, newBuf, 0, strBuf.length);
+ Portability.releaseArray(strBuf);
+ strBuf = newBuf;
+ }
+ strBuf[strBufLen++] = c;
+ // }
+ }
+
+ /**
+ * The smaller buffer as a String. Currently only used for error reporting.
+ *
+ * <p>
+ * C++ memory note: The return value must be released.
+ *
+ * @return the smaller buffer as a string
+ */
+ protected String strBufToString() {
+ // if (strBufOffset != -1) {
+ // return Portability.newStringFromBuffer(buf, strBufOffset, strBufLen);
+ // } else {
+ return Portability.newStringFromBuffer(strBuf, 0, strBufLen);
+ // }
+ }
+
+ /**
+ * Returns the short buffer as a local name. The return value is released in
+ * emitDoctypeToken().
+ *
+ * @return the smaller buffer as local name
+ */
+ private void strBufToDoctypeName() {
+ doctypeName = Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen);
+ }
+
+ /**
+ * Emits the smaller buffer as character tokens.
+ *
+ * @throws SAXException
+ * if the token handler threw
+ */
+ private void emitStrBuf() throws SAXException {
+ if (strBufLen > 0) {
+ // if (strBufOffset != -1) {
+ // tokenHandler.characters(buf, strBufOffset, strBufLen);
+ // } else {
+ tokenHandler.characters(strBuf, 0, strBufLen);
+ // }
+ }
+ }
+
+ private void clearLongStrBufForNextState() {
+ // longStrBufOffset = pos + 1;
+ longStrBufLen = 0;
+ }
+
+ private void clearLongStrBuf() {
+ // longStrBufOffset = pos;
+ longStrBufLen = 0;
+ }
+
+ private void clearLongStrBufAndAppendCurrentC(char c) {
+ longStrBuf[0] = c;
+ longStrBufLen = 1;
+ // longStrBufOffset = pos;
+ }
+
+ private void clearLongStrBufAndAppendToComment(char c) {
+ longStrBuf[0] = c;
+ // longStrBufOffset = pos;
+ longStrBufLen = 1;
+ }
+
+ /**
+ * Appends to the larger buffer.
+ *
+ * @param c
+ * the UTF-16 code unit to append
+ */
+ private void appendLongStrBuf(char c) {
+ // if (longStrBufOffset != -1) {
+ // longStrBufLen++;
+ // } else {
+ if (longStrBufLen == longStrBuf.length) {
+ char[] newBuf = new char[longStrBufLen + (longStrBufLen >> 1)];
+ System.arraycopy(longStrBuf, 0, newBuf, 0, longStrBuf.length);
+ Portability.releaseArray(longStrBuf);
+ longStrBuf = newBuf;
+ }
+ longStrBuf[longStrBufLen++] = c;
+ // }
+ }
+
+ private void appendSecondHyphenToBogusComment() throws SAXException {
+ // [NOCPP[
+ switch (commentPolicy) {
+ case ALTER_INFOSET:
+ // detachLongStrBuf();
+ appendLongStrBuf(' ');
+ // FALLTHROUGH
+ case ALLOW:
+ warn("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
+ // ]NOCPP]
+ appendLongStrBuf('-');
+ // [NOCPP[
+ break;
+ case FATAL:
+ fatal("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
+ break;
+ }
+ // ]NOCPP]
+ }
+
+ // [NOCPP[
+ private void maybeAppendSpaceToBogusComment() throws SAXException {
+ switch (commentPolicy) {
+ case ALTER_INFOSET:
+ // detachLongStrBuf();
+ appendLongStrBuf(' ');
+ // FALLTHROUGH
+ case ALLOW:
+ warn("The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.");
+ break;
+ case FATAL:
+ fatal("The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.");
+ break;
+ }
+ }
+
+ // ]NOCPP]
+
+ private void adjustDoubleHyphenAndAppendToLongStrBuf(char c)
+ throws SAXException {
+ errConsecutiveHyphens();
+ // [NOCPP[
+ switch (commentPolicy) {
+ case ALTER_INFOSET:
+ // detachLongStrBuf();
+ longStrBufLen--;
+ appendLongStrBuf(' ');
+ appendLongStrBuf('-');
+ // FALLTHROUGH
+ case ALLOW:
+ warn("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
+ // ]NOCPP]
+ appendLongStrBuf(c);
+ // [NOCPP[
+ break;
+ case FATAL:
+ fatal("The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.");
+ break;
+ }
+ // ]NOCPP]
+ }
+
+ private void appendLongStrBuf(char[] buffer, int offset, int length) {
+ int reqLen = longStrBufLen + length;
+ if (longStrBuf.length < reqLen) {
+ char[] newBuf = new char[reqLen + (reqLen >> 1)];
+ System.arraycopy(longStrBuf, 0, newBuf, 0, longStrBuf.length);
+ Portability.releaseArray(longStrBuf);
+ longStrBuf = newBuf;
+ }
+ System.arraycopy(buffer, offset, longStrBuf, longStrBufLen, length);
+ longStrBufLen = reqLen;
+ }
+
+ /**
+ * Appends to the larger buffer.
+ *
+ * @param arr
+ * the UTF-16 code units to append
+ */
+ private void appendLongStrBuf(char[] arr) {
+ // assert longStrBufOffset == -1;
+ appendLongStrBuf(arr, 0, arr.length);
+ }
+
+ /**
+ * Append the contents of the smaller buffer to the larger one.
+ */
+ private void appendStrBufToLongStrBuf() {
+ // assert longStrBufOffset == -1;
+ // if (strBufOffset != -1) {
+ // appendLongStrBuf(buf, strBufOffset, strBufLen);
+ // } else {
+ appendLongStrBuf(strBuf, 0, strBufLen);
+ // }
+ }
+
+ /**
+ * The larger buffer as a string.
+ *
+ * <p>
+ * C++ memory note: The return value must be released.
+ *
+ * @return the larger buffer as a string
+ */
+ private String longStrBufToString() {
+ // if (longStrBufOffset != -1) {
+ // return Portability.newStringFromBuffer(buf, longStrBufOffset,
+ // longStrBufLen);
+ // } else {
+ return Portability.newStringFromBuffer(longStrBuf, 0, longStrBufLen);
+ // }
+ }
+
+ /**
+ * Emits the current comment token.
+ * @param pos TODO
+ *
+ * @throws SAXException
+ */
+ private void emitComment(int provisionalHyphens, int pos) throws SAXException {
+ // [NOCPP[
+ if (wantsComments) {
+ // ]NOCPP]
+ // if (longStrBufOffset != -1) {
+ // tokenHandler.comment(buf, longStrBufOffset, longStrBufLen
+ // - provisionalHyphens);
+ // } else {
+ tokenHandler.comment(longStrBuf, 0, longStrBufLen
+ - provisionalHyphens);
+ // }
+ // [NOCPP[
+ }
+ // ]NOCPP]
+ cstart = pos + 1;
+ }
+
+ /**
+ * Flushes coalesced character tokens.
+ * @param buf TODO
+ * @param pos TODO
+ *
+ * @throws SAXException
+ */
+ protected void flushChars(@NoLength char[] buf, int pos) throws SAXException {
+ if (pos > cstart) {
+ tokenHandler.characters(buf, cstart, pos - cstart);
+ }
+ cstart = 0x7fffffff;
+ }
+
+ /**
+ * Reports an condition that would make the infoset incompatible with XML
+ * 1.0 as fatal.
+ *
+ * @param message
+ * the message
+ * @throws SAXException
+ * @throws SAXParseException
+ */
+ public void fatal(String message) throws SAXException {
+ SAXParseException spe = new SAXParseException(message, this);
+ if (errorHandler != null) {
+ errorHandler.fatalError(spe);
+ }
+ throw spe;
+ }
+
+ /**
+ * Reports a Parse Error.
+ *
+ * @param message
+ * the message
+ * @throws SAXException
+ */
+ public void err(String message) throws SAXException {
+ if (errorHandler == null) {
+ return;
+ }
+ SAXParseException spe = new SAXParseException(message, this);
+ errorHandler.error(spe);
+ }
+
+ public void errTreeBuilder(String message) throws SAXException {
+ ErrorHandler eh = null;
+ if (tokenHandler instanceof TreeBuilder<?>) {
+ TreeBuilder<?> treeBuilder = (TreeBuilder<?>) tokenHandler;
+ eh = treeBuilder.getErrorHandler();
+ }
+ if (eh == null) {
+ eh = errorHandler;
+ }
+ if (eh == null) {
+ return;
+ }
+ SAXParseException spe = new SAXParseException(message, this);
+ eh.error(spe);
+ }
+
+ /**
+ * Reports a warning
+ *
+ * @param message
+ * the message
+ * @throws SAXException
+ */
+ public void warn(String message) throws SAXException {
+ if (errorHandler == null) {
+ return;
+ }
+ SAXParseException spe = new SAXParseException(message, this);
+ errorHandler.warning(spe);
+ }
+
+ /**
+ *
+ */
+ private void resetAttributes() {
+ // [NOCPP[
+ if (newAttributesEachTime) {
+ attributes = null;
+ } else {
+ // ]NOCPP]
+ attributes.clear(mappingLangToXmlLang);
+ // [NOCPP[
+ }
+ // ]NOCPP]
+ }
+
+ private void strBufToElementNameString() {
+ // if (strBufOffset != -1) {
+ // return ElementName.elementNameByBuffer(buf, strBufOffset, strBufLen);
+ // } else {
+ tagName = ElementName.elementNameByBuffer(strBuf, 0, strBufLen);
+ // }
+ }
+
+ private int emitCurrentTagToken(boolean selfClosing, int pos) throws SAXException {
+ cstart = pos + 1;
+ maybeErrSlashInEndTag(selfClosing);
+ stateSave = Tokenizer.DATA;
+ HtmlAttributes attrs = (attributes == null ? HtmlAttributes.EMPTY_ATTRIBUTES
+ : attributes);
+ if (endTag) {
+ /*
+ * When an end tag token is emitted, the content model flag must be
+ * switched to the PCDATA state.
+ */
+ maybeErrAttributesOnEndTag(attrs);
+ tokenHandler.endTag(tagName);
+ } else {
+ tokenHandler.startTag(tagName, attrs, selfClosing);
+ }
+ resetAttributes();
+ return stateSave;
+ }
+
+ private void attributeNameComplete() throws SAXException {
+ // if (strBufOffset != -1) {
+ // attributeName = AttributeName.nameByBuffer(buf, strBufOffset,
+ // strBufLen, namePolicy != XmlViolationPolicy.ALLOW);
+ // } else {
+ attributeName = AttributeName.nameByBuffer(strBuf, 0, strBufLen
+ // [NOCPP[
+ , namePolicy != XmlViolationPolicy.ALLOW
+ // ]NOCPP]
+ );
+ // }
+
+ // [NOCPP[
+ if (attributes == null) {
+ attributes = new HtmlAttributes(mappingLangToXmlLang);
+ }
+ // ]NOCPP]
+
+ /*
+ * When the user agent leaves the attribute name state (and before
+ * emitting the tag token, if appropriate), the complete attribute's
+ * name must be compared to the other attributes on the same token; if
+ * there is already an attribute on the token with the exact same name,
+ * then this is a parse error and the new attribute must be dropped,
+ * along with the value that gets associated with it (if any).
+ */
+ if (attributes.contains(attributeNa