Re: Why is < illegal in an attribute value but the equivalent hex and decimal character entities are legal?
Dimitre Novatchev <[email protected]>
| Newsgroups | gmane.text.xml.devel |
|---|---|
| Message-ID | <CAK4KnZcgKA6Tj_kX8yq41GvKe=jXrnJTHcmoizxAOvzftyrW+Q@mail.gmail.com> |
> 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. Well, something like this (C#): https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/how-to-convert-between-hexadecimal-strings-and-numeric-types On Wed, Mar 16, 2022 at 5:57 PM Michael Kay <[email protected]> wrote: > 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]> > 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/ >> Or unsubscribe: [email protected] >> subscribe: [email protected] >> List archive: http://lists.xml.org/archives/xml-dev/ >> List Guidelines: 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. > > > > -- 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.