DTD - XML Building Blocks

本文介绍了XML文档的基本构建块及其在DTD中的定义方式。探讨了元素、属性、实体、PCDATA和CDATA的概念,并详细讲解了如何使用DTD声明这些构建块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DTD - XML Building Blocks
2011年09月01日
   http://www.w3schools.com/DTD/default.asp
  The main building blocks of both XML and HTML documents are elements.
  -------------------------------------------------- ------------------------------
  The Building Blocks of XML Documents
  Seen from a DTD point of view, all XML documents (and HTML documents) are made up by the following building blocks:
  Elements
  Attributes
  Entities
  PCDATA
  CDATA
  -------------------------------------------------- ------------------------------
  Elements
  Elements are the main building blocks of both XML and HTML documents.
  Examples of HTML elements are "body" and "table". Examples of XML elements could be "note" and "message". Elements can contain text, other elements, or be empty. Examples of empty HTML elements are "hr", "br" and "img".
  Examples:
  some text
  some text
  -------------------------------------------------- ------------------------------
  Attributes
  Attributes provide extra information about elements.
  Attributes are always placed inside the opening tag of an element. Attributes always come in name/value pairs. The following "img" element has additional information about a source file:
  
  The name of the element is "img". The name of the attribute is "src". The value of the attribute is "computer.gif". Since the element itself is empty it is closed by a " /".
  -------------------------------------------------- ------------------------------
  Entities
  Some characters have a special meaning in XML, like the less than sign ( >
  & &
  " "
  ' '
  -------------------------------------------------- ------------------------------
  PCDATA
  PCDATA means parsed character data.
  Think of character data as the text found between the start tag and the end tag of an XML element.
  PCDATA is text that WILL be parsed by a parser. The text will be examined by the parser for entities and markup.
  Tags inside the text will be treated as markup and entities will be expanded.
  However, parsed character data should not contain any &, characters; these need to be represented by the & entities, respectively.
  -------------------------------------------------- ------------------------------
  CDATA
  CDATA means character data.
  CDATA is text that will NOT be parsed by a parser. Tags inside the text will NOT be treated as markup and entities will not be expanded.
  In a DTD, elements are declared with an ELEMENT declaration.
  -------------------------------------------------- ------------------------------
  Declaring Elements
  In a DTD, XML elements are declared with an element declaration with the following syntax:
  
  or
  
  -------------------------------------------------- ------------------------------
  Empty Elements
  Empty elements are declared with the category keyword EMPTY:
  
  Example:
  
  XML example:
  

  -------------------------------------------------- ------------------------------
  Elements with Parsed Character Data
  Elements with only parsed character data are declared with #PCDATA inside parentheses:
  
  Example:
  
  -------------------------------------------------- ------------------------------
  Elements with any Contents
  Elements declared with the category keyword ANY, can contain any combination of parsable data:
  
  Example:
  
  -------------------------------------------------- ------------------------------
  Elements with Children (sequences)
  Elements with one or more children are declared with the name of the children elements inside parentheses:
  
  or
  
  Example:
  
  When children are declared in a sequence separated by commas, the children must appear in the same sequence in the document. In a full declaration, the children must also be declared, and the children can also have children. The full declaration of the "note" element is:
  
  
  
  
  
  -------------------------------------------------- ------------------------------
  Declaring Only One Occurrence of an Element
  
  Example:
  
  The example above declares that the child element "message" must occur once, and only once inside the "note" element.
  -------------------------------------------------- ------------------------------
  Declaring Minimum One Occurrence of an Element
  
  Example:
  
  The + sign in the example above declares that the child element "message" must occur one or more times inside the "note" element.
  -------------------------------------------------- ------------------------------
  Declaring Zero or More Occurrences of an Element
  
  Example:
  
  The * sign in the example above declares that the child element "message" can occur zero or more times inside the "note" element.
  -------------------------------------------------- ------------------------------
  Declaring Zero or One Occurrences of an Element
  
  Example:
  
  The ? sign in the example above declares that the child element "message" can occur zero or one time inside the "note" element.
  -------------------------------------------------- ------------------------------
  Declaring either/or Content
  Example:
  
  The example above declares that the "note" element must contain a "to" element, a "from" element, a "header" element, and either a "message" or a "body" element.
  -------------------------------------------------- ------------------------------
  Declaring Mixed Content
  Example:
  
  The example above declares that the "note" element can contain zero or more occurrences of parsed character data, "to", "from", "header", or "message" elements.
  In a DTD, attributes are declared with an ATTLIST declaration.
  -------------------------------------------------- ------------------------------
  Declaring Attributes
  An attribute declaration has the following syntax:
  
  DTD example:
  
  XML example:
  
  The attribute-type can be one of the following:
  Type Description
  CDATA The value is character data
  (en1|en2|..) The value must be one from an enumerated list
  ID The value is a unique id
  IDREF The value is the id of another element
  IDREFS The value is a list of other ids
  NMTOKEN The value is a valid XML name
  NMTOKENS The value is a list of valid XML names
  ENTITY The value is an entity
  ENTITIES The value is a list of entities
  NOTATION The value is a name of a notation
  xml: The value is a predefined xml value
  The default-value can be one of the following:
  Value Explanation
  value The default value of the attribute
  #REQUIRED The attribute is required
  #IMPLIED The attribute is not required
  #FIXED value The attribute value is fixed
  -------------------------------------------------- ------------------------------
  A Default Attribute Value
  DTD:
  
  
  Valid XML:
  
  In the example above, the "square" element is defined to be an empty element with a "width" attribute of type CDATA. If no width is specified, it has a default value of 0.
  -------------------------------------------------- ------------------------------
  #REQUIRED
  Syntax
  
  Example
  DTD:
  
  Valid XML:
  
  Invalid XML:
  
  Use the #REQUIRED keyword if you don't have an option for a default value, but still want to force the attribute to be present.
  -------------------------------------------------- ------------------------------
  #IMPLIED
  Syntax
  
  Example
  DTD:
  
  Valid XML:
  
  Valid XML:
  
  Use the #IMPLIED keyword if you don't want to force the author to include an attribute, and you don't have an option for a default value.
  -------------------------------------------------- ------------------------------
  #FIXED
  Syntax
  
  Example
  DTD:
  
  Valid XML:
  
  Invalid XML:
  
  Use the #FIXED keyword when you want an attribute to have a fixed value without allowing the author to change it. If an author includes another value, the XML parser will return an error.
  -------------------------------------------------- ------------------------------
  Enumerated Attribute Values
  Syntax
  
  Example
  DTD:
  
  XML example:
  
  or
  
  Use enumerated attribute values when you want the attribute value to be one of a fixed set of legal values.
  Use of Elements vs. Attributes
  Data can be stored in child elements or in attributes.
  Take a look at these examples:
  
  Anna
  Smith
  
  
  female
  Anna
  Smith
  
  In the first example sex is an attribute. In the last, sex is a child element. Both examples provide the same information.
  There are no rules about when to use attributes, and when to use child elements. My experience is that attributes are handy in HTML, but in XML you should try to avoid them. Use child elements if the information feels like data.
  -------------------------------------------------- ------------------------------
  My Favorite Way
  I like to store data in child elements.
  The following three XML documents contain exactly the same information:
  A date attribute is used in the first example:
  
  Tove
  Jani
  Reminder
  Don't forget me this weekend!
  
  A date element is used in the second example:
  
  12/11/2002
  Tove
  Jani
  Reminder
  Don't forget me this weekend!
  
  An expanded date element is used in the third: (THIS IS MY FAVORITE):
  
  
  12
  11
  2002
  
  Tove
  Jani
  Reminder
  Don't forget me this weekend!
  
  -------------------------------------------------- ------------------------------
  Avoid using attributes?
  Should you avoid using attributes?
  Some of the problems with attributes are:
  attributes cannot contain multiple values (child elements can)
  attributes are not easily expandable (for future changes)
  attributes cannot describe structures (child elements can)
  attributes are more difficult to manipulate by program code
  attribute values are not easy to test against a DTD
  If you use attributes as containers for data, you end up with documents that are difficult to read and maintain. Try to use elements to describe data. Use attributes only to provide information that is not relevant to the data.
  Don't end up like this (this is not how XML should be used):
  
  
  -------------------------------------------------- ------------------------------
  An Exception to my Attribute Rule
  Rules always have exceptions.
  My rule about attributes has one exception:
  Sometimes I assign ID references to elements. These ID references can be used to access XML elements in much the same way as the NAME or ID attributes in HTML. This example demonstrates this:
  
  
  Tove
  Jani
  Reminder
  Don't forget me this weekend!
  
  
  Jani
  Tove
  Re: Reminder
  I will not!
  
  
  The ID in these examples is just a counter, or a unique identifier, to identify the different notes in the XML file, and not a part of the note data.
  What I am trying to say here is that metadata (data about data) should be stored as attributes, and that data itself should be stored as elements.
  Entities are variables used to define shortcuts to standard text or special characters.
  Entity references are references to entities
  Entities can be declared internal or external
  -------------------------------------------------- ------------------------------
  An Internal Entity Declaration
  Syntax
  
  Example
  DTD Example:
  
  
  XML example:
  &writer;&copyright;
  Note: An entity has three parts: an ampersand (&), an entity name, and a semicolon (;).
  -------------------------------------------------- ------------------------------
  An External Entity Declaration
  Syntax
  
  Example
  DTD Example:
  
  
  XML example:
  &writer;&copyright;
  With Internet Explorer 5+ you can validate your XML against a DTD.
  -------------------------------------------------- ------------------------------
  Validating With the XML Parser
  If you try to open an XML document, the XML Parser might generate an error. By accessing the parseError object, you can retrieve the error code, the error text, or even the line that caused the error.
  Note: The load( ) method is used for files, while the loadXML( ) method is used for strings.
  Example
  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.validateOnParse="true";
  xmlDoc.load("note_dtd_error.xml");
  document.write("
Error Code: ");
  document.write(xmlDoc.parseError.errorCode);
  document.write("
Error Reason: ");
  document.write(xmlDoc.parseError.reason);
  document.write("
Error Line: ");
  document.write(xmlDoc.parseError.line);
  Look at the XML file
  -------------------------------------------------- ------------------------------
  Turn Validation Off
  Validation can be turned off by setting the XML parser's validateOnParse="false".
  Example
  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.validateOnParse="false";
  xmlDoc.load("note_dtd_error.xml");
  document.write("
Error Code: ");
  document.write(xmlDoc.parseError.errorCode);
  document.write("
Error Reason: ");
  document.write(xmlDoc.parseError.reason);
  document.write("
Error Line: ");
  document.write(xmlDoc.parseError.line);
  -------------------------------------------------- ------------------------------
  A General XML Validator
  To help you check your xml files, you can syntax-check any XML file here.
  -------------------------------------------------- ------------------------------
  The parseError Object
  You can read more about the parseError object in our XML DOM tutorial.
  TV Schedule DTD
  By David Moisan. Copied from http://www.davidmoisan.org/
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ]>
  -------------------------------------------------- ------------------------------
  Newspaper Article DTD
  Copied from http://www.vervet.com/
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ]>
  -------------------------------------------------- ------------------------------
  Product Catalog DTD
  Copied from http://www.vervet.com/
  
  
  
  
  
  
  
  
  
  
  
  
  
  ]>
  DTD Summary
  This tutorial has taught you how to describe the structure of an XML document.
  You have learned how to use a DTD to define the legal elements of an XML document, and how a DTD can be declared inside your XML document, or as an external reference.
  You have learned how to declare the legal elements, attributes, entities, and CDATA sections for XML documents.
  You have also seen how to validate an XML document against a DTD.
  -------------------------------------------------- ------------------------------
  Now You Know DTD, What's Next?
  The next step is to learn about XML Schema.
  XML Schema is used to define the legal elements of an XML document, just like a DTD. We think that very soon XML Schemas will be used in most Web applications as a replacement for DTDs.
  XML Schema is an XML-based alternative to DTD.
  Unlike DTD, XML Schemas has support for data types and namespaces.
  If you want to learn more about XML Schema, please visit our XML Schema tutorial.
  
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值