我不是java中的新手,而是XML和DTD文件中的新手。我有一个工具(我写的)将项目保存为XML。您可以从主项目创建应用程序,但我必须根据主项目检查应用程序的有效性。因此,对于每个主要项目,我必须创建一个DTD文件以及XML文件。这样我可以检查应用程序(也是XML文件)再次检查该DTD文件。我如何使用Java生成该dtd文件。如何使用java生成DTD文件
回答
我建议你使用XML模式的.xsd而不是DTD。
它拥有超过一个DTD几个优点:
- 的.XSD 为 XML; DTD不是。
- 模式将比DTD做更彻底的检查。它可以强制执行的类型,正则表达式,枚举等
- 喜欢的IntelliJ智能IDE可以从现有的XML为你生成一个模式,反之亦然。
模式是很容易用文本编辑器来生成。我认为这是一个值得的练习。
我不会推荐在任何情况下生成这样的事情。您正在表达关于架构或DTD中文档的大量知识。
的DTD往往得到一个坏名声,而且往往较差的考虑的原因,如人们可称之为“开发商代言和时装”(例如,最新的东西就是最好的东西)。例如,认为DTD不是XML是很奇怪的。我认为人们通常意味着DTD的语法不是XML文档标记语法,这是正确的。但dtd是本质 XML,也就是说,它们是XML推荐的非常重要的一部分,肯定moreso比XML Schema,它像XML命名空间后来大批的附加建议,其中提出了一个棘手的问题“之一什么是兼容的XML文档?“但我们在这里不会碰到那个。什么是确定是每个合规的XML处理器都需要支持DOCTYPE
声明和DTD处理;它是免费的,你不需要别的东西。而诸如Apache目录解析器之类的项目同时支持TR 9401和XML目录(“实体解析”),该解决方案在开源和商业产品方面有着悠久的行业支持历史。
相比之下,所有XML处理器都不支持XML Schema(或至少一致如此),并且XSD链接到文档实例的方式通过一些相当复杂的XML名称空间属性来处理文档实例的一部分(根元素上的属性),而不是序言的一部分。 (基本上,这意味着处理器必须在获取模式之前开始处理文档,如果您不了解这种区别的重要性,则应该做一些作业)。使用多个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年左右开始就这样做了。
“... DTD更易于人类阅读......” - 您的意见;我不同意。没有人知道XML是否能够存活50 - 100年。更多的猜测。处理模式现在已内置到Java JDK中,因此您关于一致支持的声明不再正确。 DTD可能早于XML,但XML规范本身可追溯到1998年:http://www.w3.org/2003/02/xml-at-5.html – duffymo 2012-02-27 23:45:51
您显然从未尝试过读取或编辑XML模式中的复杂内容模型。您可以在文本编辑器中使用DTD进行此操作;在XSD中,你最好使用一个工具,否则你会很快失去。我很清楚SGML和XML规范的日期,所以我不确定你的意思。 SGML的根源可以追溯到60年代,至于XML,我一开始就在那里,并收到了第一个规范的打印副本。自80年代后期以来,我一直使用SGML(工作于工业领域),所以我可以说一些在专业环境中负责DTD和XSD的经验。 – 2012-05-08 01:16:58
现在就开始回应?我们都会保留我们的意见。你的评论并不能说服我。 – duffymo 2012-05-08 01:24:16
- 1. 使用JAXB从DTD文件生成Java类 - 如何修改DTD?
- 2. 自动化XJC命令从多个DTD生成Java SRC文件
- 3. Java:如何在使用Java处理XML文档时使用DTD?
- 4. 如何用java ASM生成类文件?
- 5. 如何用java生成pdf文件
- 6. 使用nokogiri生成器添加dtd
- 7. 用java生成AutoCAD文件?
- 8. 使用java生成PRN文件
- 9. 使用Java生成PowerPoint 2007/2010文件
- 10. 使用java生成pdf文件,Itext
- 11. 使用java生成pdf文件
- 12. 如何使用java验证xml与dtd?
- 13. 如何使用java验证XML对DTD?
- 14. 如何使用Parasoft生成测试文件形成一个java文件
- 15. 使用Java根据本地DTD文件验证XML文件
- 16. 如何使用ANT生成apk文件?
- 17. 如何使用Intellij生成gradle文件
- 18. 如何使用ANT生成.air文件?
- 19. 如何使用WSDL2Code生成的文件?
- 20. 如何使用XSL生成HTML文件?
- 21. 如何使用WSDL2Java生成的文件?
- 22. 如何使用Python生成gpx文件?
- 23. 如何使用php生成xml文件
- 24. 如何使用libxml2生成XML文件?
- 25. 如何使用.java或.html生成.war文件?
- 26. 如何使用java代码生成xsd文件?
- 27. Netbeans:为XML生成DTD
- 28. 有没有办法从DTD生成一个BNF文件?
- 29. 生成java JNLP文件?
- 30. 为Java/Linux生成文件
如果你只是生成它,DTD将是无用的,它不会检查任何有用的东西。听起来你所有的项目XML文件都应该根据相同的DTD进行验证。 – 2012-02-27 20:48:40