gpt4 book ai didi

sql - CDATA 部分真的没有必要吗?

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:43 28 4
gpt4 key购买 nike

这个问题是由开发人员 Michael Rys 相当激进地拒绝将 CDATA 部分的解析包含到 FOR XML PATH 中引起的,因为 "There is no semantic difference in the data that you store."

我在 CDATA 节点和其他需要使用特殊或笨拙字符的内容中存储了 HTML block 。但是,我觉得没有资格挑战 Rys 有争议的断言,因为我认为,从技术上讲,在我为方便起见而使用 CDATA 的情况下,他是正确的。

真正让我吃惊的是,当开发人员在互联网上征求有关如何使用 FOR XML PATH 呈现 CDATA 段的建议时,受访者不断指示他们改用 FOR XML EXPLICIT,the XML rendering method Rys cited as being the "query from hell".

如果我们真的可以在任何人都可以建议的每个用例中不用 CDATA,我想我们应该停止提示并从此拒绝使用 CDATA。但是,如果有明确定义的情况,其中 CDATA 是必不可少的,Rys 已经 promise 他会将其烘焙到 FOR XML PATH 中,在这个问题的最上面的链接中前进。

那么它是什么? CDATA 部分真的是过去的遗物吗?或者 Rys 应该拔出他的手指并允许在 FOR XML PATH 中进行 CDATA 解析吗?与此同时,我们是否有任何技巧可以让 FOR XML PATH 返回 CDATA 部分?

最佳答案

CDATA 部分是不必要的。它们不是“过去的遗物”,因为它们一直都是不必要的。

这并不意味着它们没有用。看看任何编程语言或库,你会发现很多你可以不用的东西,因为它们在语义上等同于其他东西,但如果有人坐在那里必须编写这些东西,它们就很有用。

就此而言,即使是程序化生产,也可以方便地采用相反的方法并为每个 c 数据片段使用 CDATA 部分(臃肿,但它可以在其他地方提高效率)。

FOR XML PATH 不需要坐在那里的人编写这些东西。它是一种从 SQL 查询的结果中生成有效 XML 的方法。 (这也不是解析 CDATA 部分的问题,而是生成它们的问题 - 另一回事)。

当您想要非常精细的控制时,您不能真正提示 FOR XML EXPLICIT 是替代方案 - FOR XML EXPLICIT 有时使用起来如此讨厌的原因恰恰是因为它为您提供了非常精细的控制。事实上,考虑一下他们是否首先添加了对 CDATA 部分的支持,然后添加了对其他所有调整和配置选项的支持,这些调整和配置选项对其他人来说似乎同样重要。在 FOR XML EXPLICIT 成为自动选择之前需要多长时间,因为它比 FOR XML PATH 更直接‽

CDATA 在四种情况下很有用:

  1. 您正坐在键盘前,自己输入这些内容。
  2. 您正在处理不同技术与在不同时间设计的不同标准的混合,这些技术将由不同的解析器以不同的方式解释(例如嵌入到 XHTML 中的 javascript - 尽管这里不是 100% 必要,否则就是一场噩梦) .
  3. 您正试图用不理解 XML 的东西来解析 XML。
  4. 您正在尝试使用构建在允许区分 CDATA 部分和其他字符数据的低级访问的解析器上的东西,并且不恰本地使用该低级访问。

有趣的是,这四种情况也是禁止接受 CDATA 部分有意义的四种情况。

案例 1 在这里不适用,它不是人为生成的代码。如果你正在做一些非常疯狂的事情,案例 2 可以适用于此。坦率地说,缺少 CDATA 部分是您最不担心的;切换到在查询中生成更简单的 XML 并将其转换到其他地方。案例 3 可以适用于此,但如果适用,向 SQL 人员提示是不公平的,而你应该向不处理 &lt;example&gt; 的损坏的 XML 解析器提示。与<![CDATA[<example>]]>相同.案例 4 可以在这里应用,但再次向编写错误代码的人投诉,而不是 SQL 人员。

关于sql - CDATA 部分真的没有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4323928/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com