我有一个dtd文件,该文件描述了我的列应具有的列。
问题是,它没有提供有关应为列使用哪种数据类型的信息,即INT,Varchar还是Text,也没有提供有关列的最大长度的信息。在大多数地方,它说#PCDATA
,我相信这只是意味着混合数据。
有没有办法让我找出应该使用的数据类型和最大长度,还是只用一个充满Varchar (255)
的表?
最佳答案
众所周知,SGML缺少类型系统,因此没有机械化的方式来推断任何元素的正确类型。请注意,#PCDATA
并非表示“混合数据”,而是“解析的字符数据”-内容为#PCDATA
的元素不得包含任何其他元素,但可以包含实体引用(在SGML中,它是主题包含/排除例外,但XML中不存在)。 “混合内容”类似于(element1 | #PCDATA)
,要转换成数据库模式将更加困难。
最好的选择是从元素类型名称或DTD中的有用注释中推断出内容类型,和/或检查一系列文档以观察其使用方式。