Are line breaks in XML attribute values allowed?
XmlXml ParsingXml Problem Overview
I realise that it's not elegant or desired, but is it allowed (in well-formed XML) for an attribute value in an XML element to span multiple lines?
e.g.
<some-xml-element value="this value goes over....
multiple lines!" />
Yeah I realise there's better ways of writing that. I would personally write it like:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
or:
<some-xml-element value="this value goes over.... " />
But we have our own XML parser and I'd like to know whether the first example is allowed in well-formed XML.
Xml Solutions
Solution 1 - Xml
http://www.w3.org/TR/REC-xml/#NT-AttValue
Seems to say everything except <
, &
, and your delimiter ('
or "
) are OK. So newline should be, too.
Solution 2 - Xml
It is allowed, however according to W3C recommendation your XML parser should normalize the all whitespace characters to space (0x20) - so the output of your examples will differ (you should have new line on the output for " ", but only space in the first case).
Solution 3 - Xml
.NET only: If you're not sure if target string is valid xml attribute (and provide this attribute's value via code), you can always use SecurityElement.Escape function to escape invalid characters.
According to the description of this function, the only invalid characters are:
<
, >
, &
, '
, "
And this means (as my predecessors wrote), that new line should be OK.
Solution 4 - Xml
Yes the first example is a valid one.