5

我在 SQL Server Management Studio 中处理存储过程。我尝试使用 XPATH 访问包含 XML 的列,但出现此错误:

不允许使用内部子集 DTD 解析 XML。使用带有样式选项 2 的 CONVERT 来启用有限的内部子集 DTD 支持`

我阅读了有关转换和导入 xml 的文档,但没有运气。

需要明确的是,我将 XML 存储在表的列中,现在想在存储过程中将其查询到内存后使用 xpath 访问它。有谁知道我应该怎么做?

4

1 回答 1

7

您最有可能得到这个,因为在您的 XML 内部的某个地方您正在使用这样的文档定义:(MSDN的 DTD 示例)

<!DOCTYPE DOC [<!ATTLIST elem1 attr1 CDATA "defVal1">]><elem1>January</elem1>

Microsoft 默认阻止此操作,因为它会造成潜在的安全漏洞。convert with style option 2 消息告诉您可以启用对 DTD 的部分支持,以便通过使用与 XML 相关的CONVERT 函数来处理此 XML

我没有这样做的个人经验,所以我只能提供 MSDN 的链接。

唯一的其他选项是在 Microsoft 不推荐的服务器上启用完整的 DTD 支持。

于 2013-04-12T22:35:18.113 回答