数据库应用-半结构化数据模型(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:
唯一一个原子类型:#PCDATA(Parsed Character DATA)
(a,b,c):子元素列表
(a|b|c):可选
正规:
*:零次或任意多次
+:一次或任意多次
?:一次或零次
(没任何符号):一次
EMPTY:必须使用空元素//??
DTD-属性描述(Deklaration von Attributen):
Syntax:
类型(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)
//此上强制规定了name和phone的顺序,要解除这规定有点麻烦:
4.有些表达太过于模糊:(Kann teilweise zu vage werden)
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.
*/
- 数据库应用-半结构化数据模型(Semistrukturierte Datenmodelle)2
- 数据库应用-半结构化数据模型1
- 数据库应用-对半结构化数据的声明性访问(Deklarativer Zugriff auf semistrukturierte Daten)-1
- 数据模型与数据库结构
- 数据模型和数据库系统的模型结构
- 数据库应用-半结构化数据访问-2
- Entityframework~Fluent Api配置数据模型与数据库结构关系
- 使用PowerDesigner将数据库中的表结构转为物理数据模型
- 使用PowerDesigner将数据库中的表结构转为物理数据模型
- PowerDesigner 将数据库表结构生成物理数据模型(.pdm)
- Shark数据模型--组织结构
- Hbase 存储结构 数据模型
- 三维空间数据模型及结构
- 三维空间数据模型及结构
- 三维空间数据模型及结构
- 数据模型 三层结构
- 三维空间数据模型及结构
- 数据模型访问结构
- JavaScript 打开子窗口
- 给自己看的,借鉴别人的经验
- c3p0连接池项目配置的说明
- 在用户登录的时候,将用户名显示在登录成功的页面,使用session。
- android 集成支付宝支付
- 数据库应用-半结构化数据模型(Semistrukturierte Datenmodelle)2
- 更全面地判断ListView滑动方向
- Java面试过程中会遇到的问题
- Android中RelativeLayout各个属性的含义
- Java线程中run和start方法的区别
- Intent详解(四):使用隐式Intent
- linux tcpdump的简单应用
- IOS之导航控制器
- Android 四种加载方式详解(standard、singleTop、singleTask、singleInstance)