This question is prompted by the rather militant refusal of developer Michael Rys to include the parsing of CDATA sections into FOR XML PATH because “There is no semantic difference in the data that you store.”
I have stored nuggets of HTML in CDATA nodes and other content that requires the use of special or awkward characters. However I don’t feel qualified to challenge Rys’s controversial assertion because, I suppose, technically he is correct in the scenarios where I’ve employed CDATA for convenience.
What’s really baking my noodle is that, as developers take to the internet begging for advice on how to render CDATA segments using FOR XML PATH, respondents continually direct them to use FOR XML EXPLICIT instead, the XML rendering method Rys cited as being the “query from hell”.
If we can really do without CDATA in every use case that anyone can suggest I guess we should stop moaning and reject CDATA usage henceforth. But if there are clearly defined cases where CDATA is essential Rys already undertook that he would bake it into FOR XML PATH going forward in the topmost link in this question.
So which is it to be? Are CDATA sections really relics of the past? Or should Rys pull his finger out and allow for CDATA parsing in FOR XML PATH? And while we’re at it, in the meanwhile, are there any hacks for getting FOR XML PATH to return CDATA sections?
CDATAsections are useful if you don’t care about the semantics of the data in them (i.e. you do not need to parse it – it is simply a run of characters), and you don’t wish to escape any of the XML within them.The definition, according to w3:
From wikipedia: