Re: Why is < illegal in an attribute value but the equivalent hex and decimal character entities are legal?
Michael Kay <[email protected]>
| Newsgroups | gmane.text.xml.devel |
|---|---|
| Message-ID | <[email protected]> |
I think we're looking for code that takes a string containing "A" as input and does a run-time conversion, not something that hard-codes 0x41 in C source code. And it's only going to be useful if it handles any legal character entity, including non-BMP characters. Michael Kay Saxonica > On 17 Mar 2022, at 00:41, Dimitre Novatchev <[email protected]> wrote: > > > 3. (Extra credit) Do you have C code that converts a hex or decimal character entity to its character? E.g., A --> C code --> 'A' > > Just cast to char: > > (char)0x41 > > (char)65 > > > > <image.png> > > Thanks, > Dimitre > > On Wed, Mar 16, 2022 at 4:00 PM Roger L Costello <[email protected] <mailto:[email protected]>> wrote: > Hi Folks, > > For the parser that I am building I need to be sure that I know exactly what can (and can't) go within an attribute value. For example, can an attribute value contain &? (Yes) Can an attribute value contain the greater-than symbol? (Yes) > > I created tests to see what characters are legal and what are illegal in an attribute value. See below. > > Questions: > 1. Why is it that < is illegal but the equivalent hex and decimal character entities are legal? > 2. Are there unusual things that are legal (or illegal) to put in an attribute value? For instance, you can't put a CDATA section or a PI in an attribute value, right? > 3. (Extra credit) Do you have C code that converts a hex or decimal character entity to its character? E.g., A --> C code --> 'A' > > <Tests> > <Test foo="&"/> <!-- Okay --> > <Test foo="<"/> <!-- Okay --> > <Test foo=">"/> <!-- Okay --> > <Test foo="""/> <!-- Okay --> > <Test foo="'"/> <!-- Okay --> > <Test foo="'"/> <!-- Okay --> > <Test foo="""/> <!-- Error --> > <Test foo="<"/> <!-- Error --> > <Test foo="<"/> <!-- x3C = < ........... Why is this Okay? --> > <Test foo="<"/> <!-- 60 = < ........... Why is this Okay? --> > <Test foo=">"/> <!-- Okay --> > <Test foo="�"/> <!-- x0 = NUL ........... Error --> > <Test foo=""/> <!-- x1 = SOH ........... Error --> > <Test foo=""/> <!-- x2 = STX ........... Error --> > <Test foo=""/> <!-- x3 = ETX ........... Error --> > <Test foo=""/> <!-- x4 = EOT ........... Error --> > <Test foo=""/> <!-- x5 = ENQ ........... Error --> > <Test foo=""/> <!-- x6 = ACK ........... Error --> > <Test foo=""/> <!-- x7 = BEL ........... Error --> > <Test foo=""/> <!-- x8 = BS ........... Error --> > <Test foo="	"/> <!-- x9 = TAB ........... Okay --> > <Test foo="
"/> <!-- xA = LF ........... Okay --> > <Test foo=""/> <!-- xB = VT ........... Error --> > <Test foo=""/> <!-- xC = FF ........... Error --> > <Test foo="
"/> <!-- xD = CR ........... Okay --> > <Test foo=""/> <!-- xE = SO ........... Error --> > <Test foo=""/> <!-- xF = SI ........... Error --> > <Test foo=""/> <!-- x10 = DLE ........... Error --> > <Test foo=""/> <!-- x11 = DC1 ........... Error --> > <Test foo=""/> <!-- x12 = DC2 ........... Error --> > <Test foo=""/> <!-- x13 = DC3 ........... Error --> > <Test foo=""/> <!-- x14 = DC4 ........... Error --> > <Test foo=""/> <!-- x15 = NAK ........... Error --> > <Test foo=""/> <!-- x16 = SYN ........... Error --> > <Test foo=""/> <!-- x17 = ETB ........... Error --> > <Test foo=""/> <!-- x18 = CAN ........... Error --> > <Test foo=""/> <!-- x19 = EM ........... Error --> > <Test foo=""/> <!-- x1A = SUB ........... Error --> > <Test foo=""/> <!-- x1B = ESC ........... Error --> > <Test foo=""/> <!-- x1C = FS ........... Error --> > <Test foo=""/> <!-- x1D = GS ........... Error --> > <Test foo=""/> <!-- x1E = RS ........... Error --> > <Test foo=""/> <!-- x1F = US ........... Error --> > <Test foo=" "/> <!-- x20 = Space ........... Okay --> > </Tests> > > _______________________________________________________________________ > > XML-DEV is a publicly archived, unmoderated list hosted by OASIS > to support XML implementation and development. To minimize > spam in the archives, you must subscribe before posting. > > [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ <http://www.oasis-open.org/mlmanage/> > Or unsubscribe: [email protected] <mailto:[email protected]> > subscribe: [email protected] <mailto:[email protected]> > List archive: http://lists.xml.org/archives/xml-dev/ <http://lists.xml.org/archives/xml-dev/> > List Guidelines: http://www.oasis-open.org/maillists/guidelines.php <http://www.oasis-open.org/maillists/guidelines.php> > > > > -- > Cheers, > Dimitre Novatchev > --------------------------------------- > Truly great madness cannot be achieved without significant intelligence. > --------------------------------------- > To invent, you need a good imagination and a pile of junk > ------------------------------------- > Never fight an inanimate object > ------------------------------------- > To avoid situations in which you might make mistakes may be the > biggest mistake of all > ------------------------------------ > Quality means doing it right when no one is looking. > ------------------------------------- > You've achieved success in your field when you don't know whether what you're doing is work or play > ------------------------------------- > To achieve the impossible dream, try going to sleep. > ------------------------------------- > Facts do not cease to exist because they are ignored. > ------------------------------------- > Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) > ------------------------------------- > Sanity is madness put to good use. > ------------------------------------- > I finally figured out the only reason to be alive is to enjoy it. >