Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

xml

No description
by

Hyewon Ahn

on 27 December 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of xml

RELAX NG XML CONTENTS 1. RELAX NG Patterns

2. Combing Named Patterns Definitions
1) Named Patterns
2) Combing Named Pattern
3) Schema Modularization Using
" include "
4) Removing Patterns
5) Extensions and Restrictions
6) Nested Grammars assignMethod 와 Named Pattern = , |=, &= Removing - notAllowed pattern mainSchema.rnc:
include "subSchema.rnc" {
start = notAllowed
}


start |= element main { s1, s2, s3 }
s3 = element s3 { text } Extension and Restrictions RELAX NG의 최대 강점은 패턴!

XML 스키마와 달리 상속을 지원하지 않지만
임의로 정의한 Pattern을 통해 상속성 국민대학교 컴퓨터공학부
20103357
안혜원 Atrribute Pattern RNC 문법에서 Element Pattern과 흡사 Named Pattern 반복되는 element pattern을 가진다. Mixed Content Pattern

element html {
element body {
element p { mixed { element b { text } | element i { text } }* }
}
}


element p { mixed { element b { text }, element i { text }?,
element em { text }* } } Empty Pattern Enumerated Values element addressBook {
element entry {
attribute dateOfBirth { text },
attribute type { 'family' | 'friend' },
element firstName { text }?,
element lastName { text }+
}*
} Element Pattern XML에서는 attribute들이 어떤 순서로 나타 낼 수 있고 그 순서가 문제 되지 않는다. RELEX NG은 패턴들과 트리 오토마타를 기본 element addressBook {
element entry {
attribute type { text },
attribute dataOfBirth { text },
element firstName { text } ?,
element lastName { text } +.
}*
} Co-Occurence Constraints element transportation {
element vehicle {
( attribute type { "Automobile' },
element make { text }
) |
(attribute type { 'Trolley' },
element fare { text },
element tax { text }
)
}*
} RELAX NG의 세 가지 연결 패턴 DTD와 XML Schema들은 제한적이지만, RELEX NG는 유연하다. <file name = "abc.txt" size = "2000" /> element file { attribute name { text } ,
attribute size { text }, empty } XML Schema element x { text }, element y { text }, element z { text } (O) element x { text } | element y { text } | element z { text } (O) element x { text } , element y { text } | element z { text } (X) element x { text } , ( element y { text } | element z { text } ) 괄호안에 같은 연결자만 사용된다면 사용 가능 Named Pattern 거대한 패턴을 여러개의 조각으로 나눈 pattern

재사용을 높힐 뿐만 아니라 복잡한 스키마의 관리에 편리 Schema Modularization Using include purchaseOrder2.rnc:
include "NameAddress.rnc"
start = element purchaseOrder {
poNumber, orderDate, shipTo, billTo
}
poNumber = element poNumber { text }
orderDate = elemnet orderDate { text }
shipTo = element shipTo { NameAddress }
billTo = element billTo { NameAddress } 연결자 패턴 element purchaseOrder {
element poNumber { text },
element orderDate { text },
element shipTo {
element name { text },
element address1 { text },
element address2 { text }?.
element city { text },
element state { text },
},
element billTo {
element name { text },
element address1 { text },
element address2 { text }?,
element city { text },
element state { test },
}
} NameAddressDef = ( element name { text },
element address1 { text },
element address2 { text }?,
element city { text },
element state { text } ) ShipToDef = element shipTo { NameAddressDef }
BillToDef = element billTo { NameAddressDef } 다른 패턴의 내부에서 NameAddressDef 정의를 참조할 수 있다. 네임드 패턴 구분자 네임드 패턴 (element, attribute (X) ) start = element purchaseOrder {
PONumberDef, OrderDateDef,
shipToDef, BillToDef } 패턴 이름으로 start RNC 키워드 사용 표기법 : namePatternName assignMethod pattern start = element entry { info }
info |= element name { text }
info |= element firstName { text },
element lastName { text } = 로 바꿔도 유효!
둘다 |= 를 사용한 것과 같은 의미 Nested Grammars 모든 중첩된 문법 패턴은 반드시 적어도 하나의 중첩된 문법의 시작을 알리는 start 패턴을 가지고 있어야 한다.

outer 문법 안의 다섯 개의 named pattern들(start, outer, title, before, after)은 중첩된 문법 안에 네 개의 named pattern (start, html, title, body) 들과 결합하지 않는다. include "파일이름 혹은 URL"

둘 이상의 스키마 파일을 합칠 때 스키마들의
named pattern은 하나의 스키마에 묶여야 한다. mainSchema가 subSchema를 포함,
start pattern을 notAllowed 패턴을 이용하여 재정의 subSchema 안의 start pattern을 제거 include "name.rnc" {
name = element name { nameContentExt }
}
nameContentExt = (nameContents, generation?)
generation = element generation { text } name pattern은 확장된 컨텐츠 모델인 nameContentExt를 사용.

원래의 nameContents pattern과 새로운 generation named pattern을 join Thank you sequence 연결자
choice 연결자
Interleave 연결자 RELAX NG는 XML 스키마와 마찬가지로 나열된 값 정의 허용 start = outer
outer = element outer { title, before, embeddedHTML, after }
title = element title { text }
before = element before { text }
after = element after { text }

embeddedHTML = grammar {
start = html
html = element html { title, body }
title = element title { text }
body = element body { text }
} XML Schema RELAX NG Schema ?
+ <addressBook>
<entry>
<firstName>Maria</firstName>
<lastName>Knapik</lastName>
</entry>
<entry>
<firstName>Anne</firstName>
<lastName>Hughes</lastName>
</entry>
</addressBook> element addressBook {
element entry {
element firstName { text },
element last Name { text }
}*
} attribute 상에서 하나 혹은 그 이상(+),
혹은 (*)의 카디널리티 지시자 사용 불가 XML Schema와 DTD에서는 지원하지 않음.

한 attribute값에 의존하는 임의의 element 가 자식 element 를 가지는 것을 의미 같은 이름 named pattern으로 |= 와 &= 기호는 함께 쓰일 수 없다.
Full transcript