我不是Java中的新手,而是XML和DTD文件中的新手。我有一个工具(我写过)将项目保存为XML。您可以从主项目创建应用程序,但我必须根据主项目检查应用程序的有效性。因此,对于每个主项目,我都必须创建一个DTD文件以及XML文件。这样我就可以检查应用程序(XML文件)还有DTD文件。我如何使用Java生成该dtd文件。
答案 0 :(得分:1)
我这样做的方法是使用JAXB对象和注释,而使用XSD代替DTD。
作为奖励,JAXB将允许您将XML读回到对象结构中。
答案 1 :(得分:0)
我建议您使用XML架构.xsd而不是DTD。
与DTD相比,它有几个优势:
使用文本编辑器可以轻松生成模式。我认为这是值得的练习。
我不建议在任何情况下生成这样的东西。您在架构或DTD中表达了很多关于文档的知识。
答案 2 :(得分:0)
DOCTYPE
声明和DTD处理;它是免费的,你不需要任何其他东西。 Apache Catalog Resolver等项目为TR 9401和XML目录(“实体解析”)提供支持,该目录在开源和商业产品方面拥有悠久的行业支持历史。
相比之下,所有XML处理器都不支持XML Schema(或者至少一直如此),并且XSD链接到文档实例的方式是通过许多相当复杂的XML Namespace属性来处理的。文档实例(根元素上的属性),而不是prolog的一部分。 (基本上,这意味着处理器必须在获取模式之前开始处理文档。如果您不了解这种区别的重要性,则应该做一些功课。)使用多个XSD的混合文档类型中的相互依赖性是复杂且未明确的。您可能会发现必须为实体解析提供自己的支持。
使用XML标记的模式并不总是有益的,除非您计划通过软件工具进行管理。 DTD更具人性化,尽管有一些相反的观点,您可以使用名称空间前缀(参见 XHTML Modularisation )。如果您的验证要求主要是结构性的(例如,您的内容是以文档为中心而不是以数据为中心),那么您可能不会尝试验证内容,而是验证标记。 DTD很好。您可能还会研究完全不同的验证和文档约束方法,例如Schematron,它可以很好地增强DTD验证。最后,大多数可以生成XSD的工具也可以生成DTD,并且有可用的转换应用程序(请参阅James Clark的 trang )。
DTD也将与XML一样长,比如说50到100年。从长远来看,我们可能会发现XML Schema无法生存:它只是众多可行的竞争对手之一,因为XSD的许多失败而到达现场的竞争对手。我发现DTD和Schematron的组合非常适合我的需求,并且是一种灵活的解决方案。但是YMMV。
总之,在接受泛型散点图建议之前,您真的应该查看实际的架构/约束要求。您可能会发现DTD工作得很好。自1971年左右以来,他们已经这样做了。