数据库应用-半结构化数据模型(Semistrukturierte Datenmodelle)2

来源:互联网 发布:戚家刀 淘宝 编辑:程序博客网 时间:2024/05/17 03:17

OEM(Object Exchange Model)

OEM中有两种类型:
原子类型(Atomare Typen): string
混合类型(Polymorphe Typen):
Obj ::= || sel: Typ||
Set ::= {Obj}
其中:
Typ 是原子类型或Obj
Object:Selector(Attribute)//(Sammlung atomarer oder zusammengesetzter Datenelement)属性-值
Set是Obj的集合(严格来说这个并无卵用???)
//欠图片一张 OEM-Illustration
在OEM中同个Selector可能多次出现,同时不同位置的Object可能指向同一个Object
相较而言OEM的结构强度(Strukturelle Mächtigkeit)并不咋样,但是他结构的正交性比较好(Orthogonalität)
与XML的不同:
1.顺序:OEM顺序无关
2.schema:OEM无Schema//XML呢??
3.kante:OEM边有标志,即属性
4.原子类型:仅一个//???
5.Obj-Identifier:OEM有Obj-Identifier

文档类型定义(Dokumenttypdefinition)DTD

DTD本质上就是一系列的规则或者说是语法(Reglen/Grammatik)
他规定了文档中可以出现的Markup,以及他们应在什么地方出现。
DTD中包含有内容模型(Inhaltsmodell),并通过Inhaltsmodell定义结构化的元素。举个例子,他可以在Inhaltsmodell中定义,一个元素比如book必须包含有元素price和author。

<!ELEMENT bookstore (book)*><!ELEMENT book (title,author+,price?)><!ELEMENT book genre CDATA #REQUIRED><!ELEMENT title (#PCDATA)><!ELEMENT author (name|(first name,last name))><!ELEMENT price (#PCDATA)><!ELEMENT name (#PCDATA)><!ELEMENT first name (#PCDATA)><!ELEMENT lastname (#PCDATA)>

//为什么和前面的GML的代码感觉一模一样,没搞错把?????
结构优美和有效(Wohlgeformt vs. gültig):
结构优美(Wohlgeformt)是指文档中的内容有整齐的句法结构
有效(gültig,valid)指首先一个文档是结构优美的,并且遵守一个事先定好的Schema。
比如,按照DTD定义的文档。

XML-Engine(XML引擎)

XML-Engine就是一个用于检测文档是否符合结构优美和有效规定的工具。(前提是使用了DTD)
DTD-元素描述(Deklaration von Elementen):
Syntax:
<!DOCTYPE XXX [(ELEMENT|ATTLIST)]> //确定根元素xxx
<!ELEMENT Name (Definition)>
唯一一个原子类型:#PCDATA(Parsed Character DATA)
(a,b,c):子元素列表
(a|b|c):可选
正规:
*:零次或任意多次
+:一次或任意多次
?:一次或零次
(没任何符号):一次
EMPTY:必须使用空元素//??
DTD-属性描述(Deklaration von Attributen):
Syntax:
<!ATTLIST Element Attributename1 Typ1 Zusatz1 Attributename2...>
类型(Typ:)
CDATA: 字符串(Zeichenkette)
ID: OID(Object identifier)
IDREF: Reference
IDREFS: Reference的集合
补充:
REQUIRED: 强制的,必须得(zwingend)
IMPLIED: 可选的(optional)
(初始值) //设定默认的初始值???

<!DOCTYPE family[<!ELEMENT family (person*)><!ELEMENT person (name)><!ELEMENT name (#PCDATA)><!ATTLIST personid      ID      #REQUIREDmother  IDREF   #IMPLIEDfather  IDREF   #IMPLIEDchildrenIDREFS  #IMPLIED]>

//IDREF必须指向存在的ID
但是上面的表达还是存在缺陷的,比如他不能表达一下内容:
一个人不能同时又是父亲又是母亲
父亲只能是男的
父亲/母亲不能反过来成为儿子的子孙
DTD中的递归:
DTD中允许使用递归定义:

<!DOCTYPE paper[<!ELEMENT paper (section*)><!ELEMENT section ((title,section*)|text)><!ELEMENT title (#PCDATA)><!ELEMENT text (#PCDATA)>]>

//S30到S39有好多图 不知道是干什么的?????
对DTD的评价:
DTDs在定义Schema这方面存在一些不足:
1.Reference没法被限制(Referenzen können nicht eingeschränkt(typisiert) werden)
2.同一个namespace中的元素都是global的(Alle Elementnamen sind global in einem Namensraum)
3.强制规定了所有的顺序:(ungewollte Festung der Reihenfolge)
<!ELEMENT person (name,phone)>
//此上强制规定了name和phone的顺序,要解除这规定有点麻烦:
<!ELEMENT person((name,phone)|(phone,name))>
4.有些表达太过于模糊:(Kann teilweise zu vage werden)
<!ELEMENT person ((name|phone|email)*)>

XML应用

序言

以前应用开发,首先重视的是建模。而现在一般都使用XML文档//这句不理解????
(Bis jetzt:Herangehensweise eher kontemplativ Modellierung stand im Vordergrund.Jetzt:Arbeitens mit XML-Dokumenten)
一般情况下,基于XML的应用比较容易实现(Es muss leicht möglich sein, XML-basierte Anwendungen zu entwickeln)
两个程序接口(Prozedurale Mechanismen,zwei Schnittstellen):
DOM(Document Object Model):以面向对象的方式描述XML文档(objektorientierte Sicht auf XML-Dokumente)。是W3C组织推荐的处理可扩展标志语言的标准编程接口。(来自百度百科)
SAX-API(simple API for XML):使用回调机制(Fallback-Mechanismus).他是一个 event-driven serial-access 类 型的 XML 处理机制。
/*
XML-Engine validiert auch
DOM:Anwendung hält Kontrolle über den Ablauf
Callback-Methoden:XML-Engine hält Kontrolle
????
*/
XSL(Extensible Stylesheet Language):
是XML的索引(XQuery)或转化机制(XSLT:基于Xpath)

DOM(Document Object Model)

以面向对象的方式处理XML文档以及文档中的组成成分(Objektorientierte Sicht auf XML-Dokument und Dokumentbestandteile)。
可以生成对应的树结构(Baumstruktur),树结构展示的内容不仅包括元素还包括其他所有的组成成分。DOM还提供了对应的基于树结构的定位方法(Navigieren)和修改(Manipulieren des Baum)树的方法。
DOM不包含有对对象的具体实现,他只提供接口//不了解???
(Keine Aussagen über die konkrete Implementation der Objekte, nur Methodeninterface wird spezifiziert.DOM-Anwender muss sich Klassenbibliothek besorgen, die er verwenden kann.)
//插一图 若能上传
//具体还得去别处找

SAX(Simple API for XML)

SAX使用的主要方法是回调函数,他是事件驱动的。也就是说只有当特定的事件发生时,他才会调用特定的方法。
//(D.h. XML-Engine hat Kontrolle über den Ablauf???)
SAX 工作起来有点像一个 连续 的 I/O 流,能 实时 的 传 送和接收数据,它不会去构造 XML 的 树 形 结 构,所以只需要很少的内存。当然 这 在另一方面 , 也 导 致了你不能退回到早前 读 取的一个 element 或者跳到后面 还 未 读 到的 element 。(这段是从shensuqiao的博客上抄过来的)
那么什么时候要用到SAX呢??因 为 SAX 是 处 理 XML 文件的最快的,内存需求最小的 解析器 ,所以当你只需要 简单 地 读取 数据,好 让 你的程序运行 这 些数据的 时候 ,SAX 是很好的 选择 。因此, SAX 常被用于 servlet 和面向 网络 编程的存取 XML 文件。(同样是从shensuqiao的博客中抄来的)
//最后补充点课件里看不懂的???
/*
Schnittstelle der Fallback-Methoden ist standardisiert, Implementierung ist anwendungsspezifisch.
Anwendungsprogrammierer schreibt und lässt nur Fallback-Methoden registrieren für Ereignisse, an denen er interessiert ist.
*/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 创维电视只有声音没有图像怎么办 京东E卡有密码忘记卡号怎么办? 香香鞋上的饰品老掉怎么办 联壁金融资金冻结提现不出来怎么办 联壁金融提现不到帐怎么办 联壁金融提现迟迟不到帐怎么办 客户说平安福现金价值低怎么办 2个月宝宝肚脐凸出来怎么办 西安华润万家预付卡丢了怎么办 租房签了一年合同想走怎么办 京东寄包裹在速递易里面该怎么办 翼码科技辅助码被删掉了怎么办 用别人的身份证注册的手机号怎么办 大v线做到假线了怎么办 有个摄像头网段不同搜不到怎么办 百度网盘离线下载有违规内容怎么办 抖音上传的照片与音乐不同步怎么办 社保卡里面的钱用完了怎么办 医保卡里面的钱用完了怎么办 手机通知栏变成了搜索栏怎么办 小米手机账号密码忘了手机号怎么办 暑假工没签合同押工资了的怎么办 在日本雅虎拍卖网站买到假货怎么办 没有百度糯米账号但是买票了怎么办 拼多多商家版登陆密码忘记了怎么办 安卓下载的软件闪退怎么办 老司机影视院开通会员看不了怎么办 梦幻西游手游苹果手机打不开怎么办 拼多多笔订单被判定虚假发货怎么办 苹果手机微信接收不到信息怎么办 内衣穿32太小穿34空杯怎么办 楼下的把下水管道堵死了怎么办?? 微信绑定的手机号码已停机怎么办 绑定微信的手机号停机了怎么办验证 绑定手机停机微信怎么验证码怎么办 五菱之光雨刷开关手柄断了怎么办 快手家长控制模式密码忘了怎么办 有陌生人要求你拉他入群怎么办 手机一天接到多个陌生电话怎么办 阳光惠生活登录密码忘了怎么办 一个身份证注册了两个支付宝怎么办