DTD不完全笔记

DTD : ENTITY ELEMENT ATTLIST
 
[Definition: A markup declaration is an element type declaration, an attribute-list declaration, an entity declaration, or a notation declaration.] These declarations MAY be contained in whole or in part within parameter entities, as described in the well-formedness and validity constraints below. For further information, see 4 Physical Structures.

element
attlist
entity
notation

实体是一种名称/值对,而元素是有DTD定义的实体的标记标签。DTD同时也在语言中为每个标签描述内容与语法。

条件段:conditional section

[1]注释<!-- -->
[2]实体(Entity):
1)parsed
2)unparsed
or
1)通用实体 用于XML   <!ENTITY name value>
2)参数实体 用于XML DTD <!ENTITY % name value>

e.g
<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "HTMLlat1.ent">
%HTMLlat1;<!-- 通用实体都作为定义成语言的一部分 -->


+ 出现一次或多次
* 不出现or出现多次
? 可以不出现or出现一次

大小写敏感
[3]元素
[4]元素属性

#PCCDATA
可进行解析的字符数据
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在使用 XMLSpy 编辑 XML 文件时没有写 DTD,可能会出现一些错误。下面是一些常见的错误及其解决方法: 1. "No DTD found" 错误 这个错误通常是因为 XML 文件中引用的 DTD 文件不存在或者路径不正确。如果你确定不需要 DTD,可以在 XML 文件中移除 DOCTYPE 声明,或者将其注释掉。示例: ``` <!DOCTYPE note SYSTEM "note.dtd"> ``` 修改为: ``` <!-- <!DOCTYPE note SYSTEM "note.dtd"> --> ``` 2. "Element 'xxx' is not declared" 错误 这个错误通常是因为 XML 文件中使用了未定义的元素。为了避免这个错误,你可以在 XML 文件中定义 DTD 或者使用 XML Schema 来约束 XML 数据的结构。如果你不想定义 DTD 或者 XML Schema,也可以通过在 XML 文件中使用命名空间来避免这个错误。示例: ``` <ns:note xmlns:ns="http://example.com/note"> <ns:to>...</ns:to> <ns:from>...</ns:from> </ns:note> ``` 在上面的示例中,我们使用了命名空间 "http://example.com/note" 来限定 XML 元素的名称,避免了元素名称冲突的问题。 3. "Attribute 'xxx' is not declared" 错误 这个错误通常是因为 XML 文件中使用了未定义的属性。为了避免这个错误,你可以在 DTD 或者 XML Schema 中定义属性,或者使用命名空间来区分属性。示例: ``` <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> <!ATTLIST note date CDATA #IMPLIED> ``` 在上面的示例中,我们在 DTD 中定义了一个名为 "note" 的元素,以及它的子元素和属性。 希望这些解决方法能够帮助你解决 XMLSpy 不写 DTD 报错的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值