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: xml-dev-unsubscribe@lists.xml.org
subscribe: xml-dev-subscribe@lists.xml.org
List archive: http://lists.xml.org/archives/xml-dev/
List Guidelines: http://www.oasis-open.org/maillists/guidelines.php