• Keine Ergebnisse gefunden

XML-Technologien Tutorium im Sommersemester 2014 niels.hoppe@fu-berlin.de 6. Mai 2014

N/A
N/A
Protected

Academic year: 2022

Aktie "XML-Technologien Tutorium im Sommersemester 2014 niels.hoppe@fu-berlin.de 6. Mai 2014"

Copied!
34
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

XML-Technologien

Tutorium im Sommersemester 2014

niels.hoppe@fu-berlin.de

6. Mai 2014

(2)

XML Grundlagen

URIs, URNs, URLs, IRIs, . . . Namensr¨aume

Document Type Definitions

Elemente deklarieren Attribute deklarieren Entit¨aten deklarieren Teilmengen definieren

(3)

XML Grundlagen

Beachte besonders:

I Wohlgeformtheit

I XML-Deklaration

I Syntax

I Regeln f¨ur Namen

I . . .

(4)

Regeln f¨ ur Namen

G¨ultige Namen. . .

. . . beginnen immer mit einem Buchstaben oder Unterstrich,

jedoch nie mitxml(unabh¨angig von der Groß- und Kleinschreibung).

. . . enthalten nur Buchstaben, Zahlen, Punkte oder Unterstriche und insbesondere keine Leerzeichen oder Doppelpunkte.

(5)

URIs, URNs, URLs, IRIs, . . .

Ein verwirrendes Thema, es gibt laut W3C eine klassische und eine zeitgem¨aße Sichtweise dazu:http://www.w3.org/TR/uri-clarification/

(6)

URIs, URNs und URLs heute

I URI steht f¨ur Uniform Resource Identifier

I URI-Schemas bestimmen, wie URIs aussehen. Sie werden von IANA registriert:

http://www.iana.org/assignments/uri-schemes

I Eine URL ist eine URI, die eine Ressource durch eine Repr¨asentation ihrer prim¨aren Zugriffsmethode (z.B. HTTP) identifiziert.

I URN ist ein spezielles URI-Schema f¨ur universell eindeutige Namen, das ein Konzept von Namensr¨aumen, z.B. ISBN, beinhaltet:

urn:isbn:n-nn-nnnnnn-n

(7)

Namensr¨ aume

Definition

AnXML namespaceis identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification.

Definition

Anexpanded nameis a pair consisting of a namespace nameand alocal name.

Definition

For a name N in a namespace identified by a URI I, thenamespace name is I. For a name N that is not in a namespace, thenamespace name has no value. In either case thelocal name is N.

Definition

Aqualified nameis a name subject to namespace interpretation.

Quelle:http://www.w3.org/TR/REC-xml-names/#concepts

(8)

Namensr¨ aume

Definition

AnXML namespaceis identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification.

Definition

Anexpanded nameis a pair consisting of a namespace nameand alocal name.

Definition

For a name N in a namespace identified by a URI I, thenamespace name is I. For a name N that is not in a namespace, thenamespace name has no value. In either case thelocal name is N.

Definition

Aqualified nameis a name subject to namespace interpretation.

Quelle:http://www.w3.org/TR/REC-xml-names/#concepts

(9)

Namensr¨ aume

Definition

AnXML namespaceis identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification.

Definition

Anexpanded nameis a pair consisting of a namespace nameand alocal name.

Definition

For a name N in a namespace identified by a URI I, thenamespace name is I. For a name N that is not in a namespace, thenamespace name has no value. In either case thelocal name is N.

Definition

Aqualified nameis a name subject to namespace interpretation.

Quelle:http://www.w3.org/TR/REC-xml-names/#concepts

(10)

Namensr¨ aume

Definition

AnXML namespaceis identified by a URI reference [RFC3986]; element and attribute names may be placed in an XML namespace using the mechanisms described in this specification.

Definition

Anexpanded nameis a pair consisting of a namespace nameand alocal name.

Definition

For a name N in a namespace identified by a URI I, thenamespace name is I. For a name N that is not in a namespace, thenamespace name has no value. In either case thelocal name is N.

Definition

Aqualified nameis a name subject to namespace interpretation.

Quelle:http://www.w3.org/TR/REC-xml-names/#concepts

(11)

Namensr¨ aume

Man verwendetqualified namesanstelle vonexpanded names. Sie werden entweder als prefixed namesoder alsunprefixed namesgeschrieben.

< r o o t >

< foo

x m l n s =" h t t p : // www . e x a m p l e . org / default - n a m e s p a c e "

x m l n s : p r e =" h t t p : // www . e x a m p l e . org / another - n a m e s p a c e ">

< bar / > < !- - t h i s is in default- n a m e s p a c e - ->

< p r e : b a z / > < !- - t h i s is in another - n a m e s p a c e - ->

< !- - t h i s is in default- n a m e s p a c e - ->

< / foo >

< !- - t h i s is in null - n a m e s p a c e - ->

< / r o o t >

(12)

Namensr¨ aume

Attribute in XML sind sogenannte assoziierte Knoten. Sie werden nicht wie normale Kindelemente eines Elements behandelt.

I F¨ur Namensr¨aume bedeutet das, dass Attribute nicht im Namensraum des Elements stehen, in dem sie notiert sind, sondern im Null-Namensraum.

I Will man den Namensraum eines Attributes ¨andern, muss es mit einem Pr¨afix versehen werden:

< svg x m l n s =" h t t p : // www . w3 . org / 2 0 0 0 / svg "

x m l n s : x l i n k =" h t t p : // www . w3 . org / 1 9 9 9 / x l i n k ">

< a x l i n k : h r e f =" g r a f i k 2 . svg "> L i n k zur G r a f i k < / a >

< / svg >

I Es gibt f¨ur Attribute keine M¨oglichkeit, sie ohne Pr¨afix in einen bestimmten Namensraum zu setzen.

(13)

Document Type Definitions

I Elemente deklarieren

I Attribute deklarieren

I Entit¨aten deklarieren

I Teilmengen definieren

I DTDs einbinden

(14)

DTD

Anwendung Beschreibung der Struktur von XML-Dokumenten.

Prinzip Beschreibe Struktur von Elementen und ihren Attributen mittels einfacher regul¨arer Ausdr¨ucke.

Markup < !E L E M E N T my - e l e m e n t ( first - child ,

( second - child - e i t h e r | second - child - or )) >

< !A T T L I S T my - e l e m e n t

some - a t t r i b u t e C D A T A #R E Q U I R E D another - a t t r i b u t e P C D A T A #I M P L I E D

>

(15)

DTD

Anwendung Beschreibung der Struktur von XML-Dokumenten.

Prinzip Beschreibe Struktur von Elementen und ihren Attributen mittels einfacher regul¨arer Ausdr¨ucke.

Markup < !E L E M E N T my - e l e m e n t ( first - child ,

( second - child - e i t h e r | second - child - or )) >

< !A T T L I S T my - e l e m e n t

some - a t t r i b u t e C D A T A #R E Q U I R E D another - a t t r i b u t e P C D A T A #I M P L I E D

>

(16)

DTD

Anwendung Beschreibung der Struktur von XML-Dokumenten.

Prinzip Beschreibe Struktur von Elementen und ihren Attributen mittels einfacher regul¨arer Ausdr¨ucke.

Markup < !E L E M E N T my - e l e m e n t ( first - child ,

( second - child - e i t h e r | second - child - or )) >

< !A T T L I S T my - e l e m e n t

some - a t t r i b u t e C D A T A #R E Q U I R E D another - a t t r i b u t e P C D A T A #I M P L I E D

>

(17)

Elemente deklarieren

Elemente k¨onnen verschiedene Arten von Inhalten haben:

< !E L E M E N T my - e l e m e n t E M P T Y>

< !E L E M E N T my - e l e m e n t ANY>

< !E L E M E N T my - e l e m e n t (#P C D A T A) >

< !E L E M E N T my - e l e m e n t ( s p e c i f i e d , c o n t e n t s ) >

(18)

Elemente deklarieren

Die H¨aufigkeit enthaltener Elemente l¨asst sich festlegen:

< !E L E M E N T my - e l e m e n t ( zero - or - o n c e ? , zero - or - m o r e * , once - or - m o r e + , exactly - o n c e ) >

(19)

Elemente deklarieren

Man kann Alternativen angeben:

< !E L E M E N T my - e l e m e n t ( either - t h i s

| or - t h i s

| or - t h a t ) >

(20)

Elemente deklarieren

Man kann Gruppierungen vornehmen:

< !E L E M E N T my - e l e m e n t ( a l i c e

| ( bob , c h a r l i e ) ) >

(21)

Elemente deklarieren

Definition

elementdecl ’<!ELEMENT’Name contentspec’>’

contentspec ’EMPTY’|’ANY’|Mixed|children quantifier (’ ?’|’*’|’+’)

children (choice|seq)quantifier?

cp (Name|choice|sequence)quantifier?

choice ’(’cp(’|’cp)+ ’)’

seq ’(’cp(’,’cp)* ’)’

Mixed ’(’ ’#PCDATA’ (’|’Name)* ’)*’|’(’ ’#PCDATA’ ’)’

(22)

Attribute deklarieren

Attribute eines Elementes werden nacheinander aufgelistet:

< !A T T L I S T my - e l e m e n t some - a t t r i b u t e C D A T A " default - v a l u e ">

< !A T T L I S T my - e l e m e n t

r e q u i r e d - a t t r i b u t e C D A T A #R E Q U I R E D> o p t i o n a l - a t t r i b u t e C D A T A # IMPLIED >

< !A T T L I S T my - e l e m e n t fixed - a t t r i b u t e C D A T A #F I X E D " always - this - v a l u e ">

< !A T T L I S T my - e l e m e n t choice - a t t r i b u t e ( either - this - v a l u e

| or - this - v a l u e

| or - that - v a l u e ) " either - this - v a l u e ">

(23)

Attribute deklarieren

Attribute eines Elementes werden nacheinander aufgelistet:

< !A T T L I S T my - e l e m e n t some - a t t r i b u t e C D A T A " default - v a l u e ">

< !A T T L I S T my - e l e m e n t

r e q u i r e d - a t t r i b u t e C D A T A #R E Q U I R E D>

o p t i o n a l - a t t r i b u t e C D A T A # IMPLIED >

< !A T T L I S T my - e l e m e n t fixed - a t t r i b u t e C D A T A #F I X E D " always - this - v a l u e ">

< !A T T L I S T my - e l e m e n t choice - a t t r i b u t e ( either - this - v a l u e

| or - this - v a l u e

| or - that - v a l u e ) " either - this - v a l u e ">

(24)

Attribute deklarieren

Attribute eines Elementes werden nacheinander aufgelistet:

< !A T T L I S T my - e l e m e n t some - a t t r i b u t e C D A T A " default - v a l u e ">

< !A T T L I S T my - e l e m e n t

r e q u i r e d - a t t r i b u t e C D A T A #R E Q U I R E D>

o p t i o n a l - a t t r i b u t e C D A T A # IMPLIED >

< !A T T L I S T my - e l e m e n t fixed - a t t r i b u t e C D A T A #F I X E D " always - this - v a l u e ">

< !A T T L I S T my - e l e m e n t choice - a t t r i b u t e ( either - this - v a l u e

| or - this - v a l u e

| or - that - v a l u e ) " either - this - v a l u e ">

(25)

Attribute deklarieren

Attribute eines Elementes werden nacheinander aufgelistet:

< !A T T L I S T my - e l e m e n t some - a t t r i b u t e C D A T A " default - v a l u e ">

< !A T T L I S T my - e l e m e n t

r e q u i r e d - a t t r i b u t e C D A T A #R E Q U I R E D>

o p t i o n a l - a t t r i b u t e C D A T A # IMPLIED >

< !A T T L I S T my - e l e m e n t fixed - a t t r i b u t e C D A T A #F I X E D " always - this - v a l u e ">

< !A T T L I S T my - e l e m e n t choice - a t t r i b u t e ( either - this - v a l u e

| or - this - v a l u e

| or - that - v a l u e ) " either - this - v a l u e ">

(26)

Attribute deklarieren

Es gibt eine ganze Menge von Attributtypen:

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

Quelle:http://www.http://w3schools.com/dtd/dtd_attributes.asp

(27)

Attribute deklarieren

Definition

AttlistDecl ’<!ATTLIST’Name AttDef* ’>’

AttDef Name AttType DefaultDecl

AttType StringType|TokenizedType|EnumeratedType StringType ’CDATA’

TokenizedType ’ID’|. . .|’NMTOKENS’

EnumeratedType NotationType|Enumeration

NotationType ’NOTATION’ ’(’Name(’|’Name)* ’)’

Enumeration ’(’Nmtoken(’|’Nmtoken)* ’)’

DefaultDecl ’#REQUIRED’|’#IMPLIED’|((’#FIXED’)?AttValue)

(28)

Entit¨ aten deklarieren

Entit¨aten sind Konstanten, die innerhalb von PCDATA-Bl¨ocken ausgewertet werden.

Es gibt verschiedene Arten von Entit¨aten:

I Built-in Entities (z.B.&amp;und&lt;)

I Character Entities (z.B.&#243;und&#x00F3;)

I General Entities, selbst definiert

I Parameter Entities, selbst definiert

Entit¨aten k¨onnen sowohl innerhalb der DTD deklariert, als auch extern referenziert werden.

(29)

Entit¨ aten deklarieren

Beachte bei General Entities:

I Der Name muss ein g¨ultiger XML-Name sein.

I Der Wert interner Entit¨aten muss wohlgeformt sein.

I Der Wert externer Entit¨aten muss nicht wohlgeformt sein, wohl aber das Dokument, nachdem sie ausgewertet wurden.

I Der Wert kann andere Entit¨aten enthalten.

Parameter Entities erm¨oglichen es, Strukturen wieder zu verwenden.

(30)

Entit¨ aten deklarieren

Beachte bei General Entities:

I Der Name muss ein g¨ultiger XML-Name sein.

I Der Wert interner Entit¨aten muss wohlgeformt sein.

I Der Wert externer Entit¨aten muss nicht wohlgeformt sein, wohl aber das Dokument, nachdem sie ausgewertet wurden.

I Der Wert kann andere Entit¨aten enthalten.

Parameter Entities erm¨oglichen es, Strukturen wieder zu verwenden.

(31)

Entit¨ aten deklarieren

Und so sehen sie aus:

< !E N T I T Y i n t e r n a l - e n t i t y " entity - v a l u e ">

< !E N T I T Y e x t e r n a l - e n t i t y S Y S T E M

" h t t p : // www . e x a m p l e . org / e n t i t i e s . dtd ">

< ! E N T I T I Y % p a r a m e t e r - e n t i t y " ( some ,( c o m p l e x | c o n s t r u c t )) ">

(32)

Entit¨ aten deklarieren

Und so sehen sie aus:

< !E N T I T Y i n t e r n a l - e n t i t y " entity - v a l u e ">

< !E N T I T Y e x t e r n a l - e n t i t y S Y S T E M

" h t t p : // www . e x a m p l e . org / e n t i t i e s . dtd ">

< ! E N T I T I Y % p a r a m e t e r - e n t i t y " ( some ,( c o m p l e x | c o n s t r u c t )) ">

(33)

Teilmengen definieren

Es ist m¨oglich, in einer internen DTD eine Teilmenge einer externen DTD zu definieren:

< !D O C T Y P E B o o k S t o r e S Y S T E M " b o o k . dtd " [

<!E L E M E N T B o o k S t o r e ( B o o k | B o o k S h e l f )* >

] >

Beachte dabei:

I Elemente und Attribute k¨onnen nicht ver¨andert werden.

I Entit¨aten k¨onnen ¨uberschrieben werden.

(34)

Teilmengen definieren

Es ist m¨oglich, in einer internen DTD eine Teilmenge einer externen DTD zu definieren:

< !D O C T Y P E B o o k S t o r e S Y S T E M " b o o k . dtd " [

<!E L E M E N T B o o k S t o r e ( B o o k | B o o k S h e l f )* >

] >

Beachte dabei:

I Elemente und Attribute k¨onnen nicht ver¨andert werden.

I Entit¨aten k¨onnen ¨uberschrieben werden.

Referenzen

ÄHNLICHE DOKUMENTE

Anfragesprache zur Auswahlvon Knoten in einem XML-Dokument, über Patternmatch und Filter. ● Weist gewisse Ähnlichkeiten zur

Da Attribute nur durch ein Pr¨ afix einem Namensraum zugeordnet werden k¨ onnen, sind sie nicht namensraumeingeschr¨ ankt und liegen damit im Null-Namensraum.. (e) Das Attribut

Zwischenstands jeden Mittwoch (zwei Folien erlaubt). • dienstags:

Sowohl das shipTo- als auch das billTo-Element enthält immer ein Attribut type aus dem Namensraum http://www.w3.org/2001/XMLSchema-instance, jeweils mit dem Werten ipo:EU-Address

Das shipTo- und das billTo-Element einer gültigen Instanz kann entweder aus a) den Elementen name, street, city, und postcode oder aus b) den Elementen name, street, city, state

Das XSLT-Stylesheet soll nicht nur das obige XML-Dokument, sondern alle gültigen Instanzen des XML-Schemas document.xsd auf analoge Art und

• Mit Document Type Definitions (DTDs) können aber spezielle Auszeichnungssprachen mit konkreten Tags definiert werden:. • werden Anwendungen von

Markus Luczak-Rösch Freie Universität Berlin Institut für Informatik2. Netzbasierte