0

我有一个 dtd 文件,它描述了我的列应该有哪些列。

问题是,它没有提供关于我应该为列使用什么数据类型的信息,即是 INT、Varchar 还是 Text,也没有关于列的最大长度的信息。在大多数地方#PCDATA,我认为这只是意味着混合数据。

有没有办法让我找出我应该使用什么数据类型和最大长度,或者我应该简单地制作一个充满Varchar (255)s 的表?

4

1 回答 1

1

SGML(众所周知)缺乏类型系统,因此没有机械化的方法来推断任何类型元素的正确类型。请注意,#PCDATA这并不意味着“混合数据”,而是“解析的字符数据”——具有内容的元素#PCDATA不能包含任何其他元素,但它可以包含实体引用(在 SGML 中,它受到包含/排除例外的影响,但这些在 XML 中不存在)。“混合内容”类似于(element1 | #PCDATA),将其转换为数据库模式要困难得多。

您最好的选择是从元素类型名称或 DTD 中的有用注释推断内容类型,和/或检查一系列文档以观察它们的使用模式。

于 2011-07-31T12:24:06.317 回答