xml - 从规范解释 DTD
问题描述
我得到以下规格:
• 有一个称为产品的根元素
• products 元素包含一系列产品子元素,一个对应于数据库中的每个产品
• 每个产品元素包含一个名称、一个价格和一个描述子元素,以及一系列商店子元素,每个销售该产品的商店都有一个:
• 每个商店元素包含一个名称、一个电话和一个标记。
到目前为止,我想出了这个:
<?xml version="1.0"?>
<!DOCTYPE exercise 3 [
<!ELEMENT products (pid, name, price, description, stores)>
<!ELEMENT pid (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT stores (store_name, phone, markup)>
<!ELEMENT store_name (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT markup (#PCDATA)>
你认为这个 DTD 符合规范吗?
解决方案
关于您的 DTD 的一些评论:
- 在 doctype 声明
<!DOCTYPE exercise 3 [
中,名称应该与根元素相同,exercise 3
因此应该是products
. 但是,如果此 DTD 是外部文件,则不需要 doctype。如果您的 DTD 和 XML 结合在一起,您会想要使用它。有关更多详细信息,请参阅https://stackoverflow.com/a/5455469/317052。 - 元素名称不需要是唯一的,因此您可以拥有一个
name
可以同时用于product
和的元素store
。
这是我根据规范要做的事情......
• 有一个称为产品的根元素
• products 元素包含一系列产品子元素,一个对应于数据库中的每个产品
<!ELEMENT products (product*)>
• 每个产品元素包含一个名称、一个价格和一个描述子元素,以及一系列商店子元素,每个销售该产品的商店都有一个:
<!ELEMENT product (name, price, description, store*)>
• 每个商店元素包含一个名称、一个电话和一个标记。
<!ELEMENT store (name, phone, markup)>
这是完整的 DTD,添加了空格以提高可读性...
<!ELEMENT products (product*) >
<!ELEMENT product (name, price, description, store*) >
<!ELEMENT store (name, phone, markup) >
<!ELEMENT name (#PCDATA) >
<!ELEMENT price (#PCDATA) >
<!ELEMENT description (#PCDATA) >
<!ELEMENT phone (#PCDATA) >
<!ELEMENT markup (#PCDATA) >
推荐阅读
- java - 如何生成类似 apache 的唯一 ID?
- angular - Angular PDF 查看错误 - disableCreateObjectURL
- qt - 当鼠标悬停在qt中的按钮上时更改图标
- firebase - Firebase:在帖子集合中重复用户名还是应该使用 ID?
- android - 在检查设备中可用的指纹身份验证时,获得安全异常并建议添加权限 INTERACT_ACROSS_USERS
- javascript - 包裹错误:无法解析条目。但我交叉检查了文件是否在它应该在的地方。它不工作
- python - 为什么我在安装 Django 2.2 时不能运行“manage.py runserver”?
- c - 如何在字典中找到找到的单词?
- sql - 从两个表中计算用户账户余额
- sql - 加入并聚合右表中的日期 <= 左表中的日期