【问题标题】:Why DTD is not extensible?为什么 DTD 不可扩展?
【发布时间】:2018-05-20 06:07:12
【问题描述】:

我知道,如果一种语言允许用户创建所需的任何标签,然后描述这些标签及其允许的用途,那么它就是可扩展的。

如果我没记错的话,在这个例子中

代码:

<!ELEMENT people_list (person)*>
<!ELEMENT person (name, birthdate?, gender?, socialsecuritynumber?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT birthdate (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ELEMENT socialsecuritynumber (#PCDATA)>

DTD 定义了一个名为 person 的元素(标签),另一个名为 name 的元素等......

那么,为什么不能将其扩展为 XSD?

【问题讨论】:

    标签: xml xsd dtd xsd-validation xml-validation


    【解决方案1】:

    背景:DTD 的存在是为了支持XML 的可扩展性。代替 一种固定的标记语言,XML 允许您定义自己的词汇表 通过 DTD 等模式和语法。

    为什么 DTD 不可扩展?

    DTD 可扩展的。

    那么,为什么不能将其扩展为 XSD?

    因为 DTD 早于 XSD,并且取得了进展

    另见

    【讨论】:

    • Here 提到 DTD 不可扩展。 this 书的第 22 页也提到了这一点(请看 here)。还有oracle documentation
    • @KennetCeleste:说真的?根据数十年使用 DTD 和 XSD 构建真实系统的经验,您否决了这个精炼的答案,并引用了广泛的单行概括作为理由?是的,当然,XSD 提供了更大的灵活性。正如我所说,取得了进展。如果对高级的、重点突出的概括感到满意,请随意将您的理解限制在“is-to/is-not”可扩展参数上。在这里,我提供了一个更微妙的答案,并简要介绍了项目如何通过 DTD 实现一定程度的可扩展性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2013-06-01
    • 2016-01-16
    • 2011-02-08
    • 1970-01-01
    相关资源
    最近更新 更多