Use string-case for tagname-dispatch.
Use write-string with bounds instead of subseq.
Useful declarations.
Destructive insert-before.
Keep a pointer to the end of the list of children.
Use three levels of lookup for element-in-scope.

This reduces the overall number of comparisons considerably.
ascii-letter-p
When possible, use `defglobal` for constants.

"When possible" means SBCL and CCL.
Use adjustable strings to accumulate names and values.