`
zy77612
  • 浏览: 284084 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ant 的 dtd 在哪里?(转载)

阅读更多

看到很多人,包括一些老外,在网上问ant的dtd或者xsd在哪里。

其实在ant.apache.org的FAQ里有一条写的很清楚:

http://ant.apache.org/faq.html#dtd

Is there a DTD that I can use to validate my build files?

An incomplete DTD can be created by the <antstructure> task - but this one has a few problems:

It doesn't know about required attributes. Only manual tweaking of this file can help here.
It is not complete - if you add new tasks via <taskdef> it won't know about it. See this page by Michel Casabianca for a solution to this problem. Note that the DTD you can download at this page is based on Ant 0.3.1.
It may even be an invalid DTD. As Ant allows tasks writers to define arbitrary elements, name collisions will happen quite frequently - if your version of Ant contains the optional <test> and <junit> tasks, there are two XML elements named test (the task and the nested child element of <junit>) with different attribute lists. This problem cannot be solved; DTDs don't give a syntax rich enough to support this.
虽然dtd会限制ant的可扩展性但是在语法提示的诱惑下还是生成了这个DTD;

方法大致如下:

1.建立一个build.xml

2.输入内容:

<?xml version="1.0" encoding="UTF-8"?>
       <project>
              <target name="makedtd">
                   <antstructure output="project.dtd" />
              </target>
       </project>

3.到build.xml所在目录下执行ant_home%/bin/ant makedtd

4.BUILD FAILED!发生一个NoClassDefFoundError错误,大致是说org/apache/commons/net/ftp/FTPClientConfig没找到

但是project.dtd还是生成了,我这里这个ANT1.7生成的115KB。

5.为了解决这个问题首先查得FTPClientConfig是apache的commons-net包的,于是下载http://apache.mirror.phpchina.com/commons/net/binaries/commons-net-1.4.1.zip,放到ant_home的lib目录下 ,再次构建 OK ,没有错误提示project.dtd生成202KB。

不过好像给XMLSpy挂上还是没有语法提示 -_-

6.仔细看了一下原来生成的DTD里边有几处问题。

   1)第六行<!ELEMENT project (target | %tasks; | %types;)*>

   此行末尾的‘*’号应该为‘+’号因为每个build.xml都应该起码有一个<project>元素

   2)根据XMLSpy提示,有个定义<!ELEMENT targe EMPTY>。

   3) 根据XMLSpy提示<!ELEMENT FTP.........>这块也有问题,由于平时基本不会用到因此删掉。

OK 现在已经是个良好格式(well-formet)的project.dtd文件了。

现在通过XMLSpy根据此project.dtd 建立的build.xml就具备了一般的语法提示功能了。

 

分享到:
评论

相关推荐

    ant_DTD.dtd

    ant_DTD.dtd 已生成好

    Ant DTD语法检查

    编写ant的时候提示语法所用的dtd,因为ant自带不带有必须要生成,比较麻烦。

    ant.dtd

    ant.dtd 编写build.xml文件时,让开发工具自动提示 ant.dtd 编写build.xml文件时,让开发工具自动提示 ant.dtd 编写build.xml文件时,让开发工具自动提示

    DTD 总结 DTD 总结 DTD 总结

    - **内部DTD**:内部DTD是包含在XML文档本身中的DTD,直接写在`&lt;!DOCTYPE&gt;`声明内,不引用外部文件。 - **匿名DTD**:在XML文档中以实体的形式存在,通常用在XML Schema中,而不是DTD。 3. **DTD的基本元素** - ...

    struts+spring+mybatis+hibernate的dtd文件

    在Java Web开发中,Struts、Spring、MyBatis和Hibernate这四个框架各有其特定的配置文件,而这些配置文件有时会使用DTD来定义它们的元素和属性,确保文件格式的正确性。下面将详细阐述这四个框架与DTD的关系以及相关...

    DTD 教程 DTD 实例

    DTD 的作用在于提供一种机制,使数据在传输或交换过程中保持一致性和可预测性。 **DTD 简介** DTD 的主要目标是为 XML 文档定义一套规则,这些规则规定了文档可以包含哪些元素,元素间的关系如何,以及它们可以...

    DTD的CHM帮助文档

    在XML文档中,DTD的作用是确保文档内容遵循预设的规则,即所有元素、属性及其顺序都符合DTD的规定,从而保证数据的一致性和可读性。 CHM(Compiled Help Manual)是微软开发的一种帮助文件格式,主要用于Windows...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    使用DTD验证XML文档

    使用DTD验证XML文档 一、 DTD的定义: a) DTD是Document Type Defintion的缩写,即文档类型定义。DTD用来描述XML文档的结构。 二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义...

    xml与DTD,xml与DTD

    在这里,“`-//W3C//DTD XML 1.0//EN`”是公有标识符,用于唯一标识DTD文档。 综上所述,XML与DTD在实际应用中有着不可替代的地位。通过使用XML来存储数据,结合DTD定义数据结构,可以有效地保证数据的一致性和完整...

    DTD验证XML详解

    - **内部DTD**:将DTD包含在XML文档的开头,以`&lt;!DOCTYPE&gt;`声明开始。 - **外部DTD**:通过`&lt;!DOCTYPE&gt;`声明引用外部的DTD文件,如`&lt;!DOCTYPE document SYSTEM "DTD_file.dtd"&gt;`。 3. **DTD验证过程**: - **...

    dwr20.dtd

    dwr20.dtd

    XML中的外部dtd和内部dtd实例

    在XML中,DTD(Document Type Definition)是用来定义XML文档结构的规范,它规定了元素、属性以及它们之间的关系。理解XML的外部DTD和内部DTD对于编写符合规范的XML文档至关重要。 一、XML DTD概述 DTD是一种元语言...

    sql-map-2.dtd和sql-map-config-2.dtd

    本文将深入探讨与“sql-map-2.dtd”和“sql-map-config-2.dtd”相关的知识点,以及它们在Ibatis中的作用。 Ibatis是一个轻量级的ORM(对象关系映射)框架,它允许开发者将SQL语句直接写在配置文件中,通过XML映射...

    struts2 配置dtd 自动提示

    在标题和描述中提到的"struts2 配置dtd 自动提示"是指在Eclipse中为`struts.xml`文件配置DTD自动提示的过程。这能帮助开发者避免手动记忆所有可能的标签、属性和它们的取值,提高开发效率并减少错误。 在`struts....

    不同版本的 struts2.dtd

    在Struts2中,DTD(Document Type Definition)文件扮演着重要的角色,它定义了配置文件的结构和规则。下面我们将详细探讨不同版本的Struts2 DTD及其相关知识点。 1. **Struts2 DTD 的作用** - Struts2 DTD 是XML...

    mybatis的两个Dtd文件,config.dtd mapper.dtd

    在MyBatis中,DTD文件用于验证配置文件的正确性,确保XML文件符合特定的格式。 1. **config.dtd文件** `config.dtd` 是MyBatis的核心配置文件的DTD文件,它定义了MyBatis配置文件中的所有元素和属性。例如,`...

Global site tag (gtag.js) - Google Analytics