Greetings,

In the interest of supporting NCName validity checking in CXML[1], I've attached a diff that adds an NCName comparator function, VALID-NCNAME-P, to CXML's xml-name-rune-p.lisp. Essentially, the  NCName comparator function assumes much of the code used in VALID-NAME-P albeit not accepting colon "#\:" as a valid non-colonized name (NCName) character.

In addition, the patch:
* narrows the type declaration for rune-as-code to (UNSIGNED-BYTE 16) namely in the interest of some albeit small, possible math optimization in the compiler
* adds 'rod' as a type declaration in the rod-as-rod comparator functions such that will be defined in the global namespace -- such that hopefully may be of some assistance to the compiler, towards determining the type of sequence that may be expected for the 'every' function calls

Lastly, in the patch's code formatting, the patch
* trims end-of-line whitespace - cf. Emacs 23.4 'whitespace.el'
* might be transforming space->tabs in a few spots - such that seems to me as it being oddly difficult to undo, that even when indent-tabs-mode is nil the changes as such are retained in the file. So, I hope that won't be a bother.


Cheers.


[1] cf. XSD string data types, also cf. OMG XMI -- in which, essentially every UML element name should be valid as an NCName, as would be implicit with regards to XMI serialization of UML models - cf. Project Lupine[2]
[2] https://github.com/GazeboHub/lupine-m2